В системах сбора данных и промышленной автоматизации часто возникает задача хранения калибровочных коэффициентов, серийных номеров и другой служебной информации непосредственно вблизи датчиков. Микросхема DS2431+ от компании Maxim Integrated (ныне Analog Devices) представляет собой идеальное решение для таких задач благодаря своей уникальной 1-Wire архитектуре, позволяющей передавать данные и питание по всего одному проводу.
В данной статье мы подробно рассмотрим устройство этой микросхемы памяти, её структуру, механизмы защиты и на конкретном примере покажем, как эффективно организовать хранение калибровочных данных для 50 датчиков температуры DS18B20.
1. Обзор микросхемы DS2431+
1.1 Основные характеристики
DS2431+ представляет собой 1024-битную (1 Кбит) энергонезависимую память EEPROM с интерфейсом 1-Wire. Ключевые параметры:
| Характеристика | Значение |
|---|---|
| Объём памяти | 1024 бита (128 байт) |
| Организация | 4 страницы по 256 бит (32 байта) |
| Интерфейс | 1-Wire (один провод для данных и питания) |
| Напряжение питания | 2,8 В … 5,25 В |
| Диапазон рабочих температур | –40 °C … +85 °C |
| Скорость передачи | 15,4 кбит/с (стандартный режим) или 125 кбит/с (Overdrive) |
| Корпус | TO-92, TSOC, TDFN (3 или 6 выводов) |
1.2 Уникальные особенности
Главное преимущество DS2431+ — это 1-Wire интерфейс, который позволяет:
-
Минимизировать количество проводников — для подключения достаточно всего двух проводов: линии данных и земли.
-
Организовать многоточечную сеть — каждый чип имеет уникальный 64-битный заводской регистрационный номер, что позволяет адресовать до сотен устройств на одной шине.
-
Питать устройство через линию данных (паразитное питание) — не требуется отдельный провод питания.
Каждая микросхема поставляется с неизменяемым 64-битным ROM-идентификатором, который лазером записывается на заводе. Это обеспечивает уникальную идентификацию каждого устройства в системе без необходимости дополнительной маркировки.
2. Структура памяти
2.1 Общая архитектура
Память DS2431+ организована в линейном адресном пространстве и состоит из нескольких областей:
Адресный диапазон | Размер | Назначение ---------------------|--------|---------------------------- 0x0000 – 0x001F | 32 B | Страница 0 (данные) 0x0020 – 0x003F | 32 B | Страница 1 (данные) 0x0040 – 0x005F | 32 B | Страница 2 (данные) 0x0060 – 0x007F | 32 B | Страница 3 (данные) 0x0080 – 0x008F | 16 B | Регистровый ряд (защита, ID)
EEPROM массив состоит из 18 строк по 8 байт. Первые 16 строк (128 байт) разделены на четыре страницы по 32 байта. Это основная область для хранения пользовательских данных.
Последние две строки (16 байт, адреса 0x0080–0x008F) содержат служебные регистры:
| Адрес | Назначение |
|---|---|
0x0080 |
Байт защиты страницы 0 |
0x0081 |
Байт защиты страницы 1 |
0x0082 |
Байт защиты страницы 2 |
0x0083 |
Байт защиты страницы 3 |
0x0084 |
Байт защиты от копирования |
0x0085 |
Заводской байт (только чтение) |
0x0086–0x0087 |
Пользовательские байты / ID производителя |
0x0088–0x008F |
Зарезервировано |
2.2 Режимы защиты страниц
Каждая из четырёх страниц данных может быть независимо сконфигурирована в один из трёх режимов с помощью соответствующих байтов защиты:
| Код защиты | Режим | Описание |
|---|---|---|
Любое значение, кроме 0x55 и 0xAA |
Открытый | Свободное чтение и запись |
0x55 |
Защита от записи | Страница только для чтения |
0xAA |
Режим EPROM | Биты можно только сбрасывать с 1 на 0 |
Важно: после записи 0x55 или 0xAA байт защиты сам становится защищённым от записи (read-only). Это необратимое действие — вернуть страницу в открытый режим невозможно.
3. Механизм записи данных
3.1 Двухэтапный процесс
Запись в EEPROM DS2431+ выполняется в два этапа:
-
Запись в Scratchpad (буфер) — данные сначала записываются в 8-байтовый временный буфер (scratchpad).
-
Копирование в EEPROM — после проверки данных они копируются из scratchpad в основную память.
Этот механизм позволяет верифицировать данные перед окончательной записью, что критически важно для ответственных применений.
3.2 Важные ограничения
-
Копирование выполняется только целыми строками по 8 байт.
-
Адрес, указанный в команде Write Scratchpad, должен начинаться с границы строки (младшие 3 бита адреса равны 0).
-
Для валидной операции копирования необходимо записать ровно 8 байт в scratchpad.
3.3 Влияние режимов защиты на запись
Режимы защиты страниц влияют на поведение при записи:
-
Режим
0x55(Write Protect): данные игнорируются, а в scratchpad загружаются текущие данные из основной памяти. -
Режим
0xAA(EPROM): выполняется логическое AND между новыми данными и существующими в памяти. Это позволяет только сбрасывать биты с 1 на 0.
4. Практический пример: хранение калибровочных коэффициентов для 50 датчиков DS18B20
Теперь рассмотрим практическое применение DS2431+ для реальной задачи.
4.1 Постановка задачи
Предположим, у нас есть 50 датчиков температуры DS18B20, объединённых в одну 1-Wire сеть (косу). Для каждого датчика необходимо хранить калибровочные поправки в трёх точках:
-
+5 °C
-
0 °C
-
–5 °C
Каждая точка калибровки может принимать одно из 20 дискретных значений (например, поправка с шагом 0,05 °C в диапазоне –0,5 … +0,5 °C).
4.2 Расчёт необходимого объёма памяти
-
20 значений помещаются в 5 бит (2⁵ = 32, запас 12 значений).
-
На три точки требуется: 3 × 5 = 15 бит на датчик.
-
На 50 датчиков: 15 × 50 = 750 бит ≈ 94 байта.
DS2431+ предоставляет 128 байт — данных помещается с запасом (остаётся ~34 байта).
4.3 Оптимизация структуры хранения
Для удобства работы с памятью и учёта особенностей DS2431+ (побайтовая адресация, запись строками по 8 байт) предлагается следующая структура:
Выделяем на каждый датчик ровно 2 байта (16 бит). Это упрощает адресацию и избавляет от сложных битовых сдвигов.
В двух байтах упаковываются три 5-битных значения:
Биты 0–4 → поправка для +5 °C Биты 5–9 → поправка для 0 °C Биты 10–14 → поправка для –5 °C Бит 15 → не используется (резерв)
Адресация: для датчика с номером N (0–49) адрес в памяти = N × 2.
Таким образом, 50 датчиков занимают 100 байт (адреса 0x00–0x63).
4.4 Структура служебной области
Оставшиеся 28 байт (адреса 0x64–0x7F) распределяются следующим образом:
| Адреса (hex) | Размер | Назначение | Формат |
|---|---|---|---|
0x64–0x67 |
4 байта | Номер косы | 32-битное целое, little‑endian (0 … 4 294 967 295) |
0x68–0x6A |
3 байта | Дата производства | День, месяц, год (последние 2 цифры) |
0x6B–0x6D |
3 байта | Дата последней поверки | День, месяц, год |
0x6E–0x7D |
16 байт | Резерв | Для будущего расширения |
0x7E–0x7F |
2 байта | CRC16 | Контрольная сумма области 0x00–0x7D |
Итого: 100 + 4 + 3 + 3 + 16 + 2 = 128 байт — вся память используется полностью и эффективно.
4.5 Защита данных
После записи всех калибровочных коэффициентов рекомендуется заблокировать страницы для предотвращения случайного или несанкционированного изменения данных.
Для этого в соответствующие байты защиты (0x0080–0x0083) записывается значение 0x55:
| Регистр | Страница | Что защищается |
|---|---|---|
0x0080 |
Страница 0 | Датчики 0–15 (адреса 0x00–0x1F) |
0x0081 |
Страница 1 | Датчики 16–31 (адреса 0x20–0x3F) |
0x0082 |
Страница 2 | Датчики 32–47 (адреса 0x40–0x5F) |
0x0083 |
Страница 3 | Датчики 48–49 и служебная область (0x60–0x7F) |
Важно: если планируется периодическое обновление даты поверки или номера косы, страницу 3 не следует защищать. Достаточно защитить только страницы 0–2 с коэффициентами.
4.6 Контроль целостности данных
Для обеспечения достоверности данных рекомендуется вычислять CRC16 для всей области 0x00–0x7D и сохранять результат в двух байтах 0x7E–0x7F. При каждом чтении контрольная сумма пересчитывается и сравнивается с сохранённой — это позволяет обнаружить повреждение данных.
5. Заключение
Микросхема DS2431+ предоставляет удобное и надёжное решение для хранения калибровочной и служебной информации в распределённых системах с 1-Wire интерфейсом. Её ключевые преимущества:
-
Компактность — 128 байт в корпусе с 3 выводами.
-
Гибкость — четыре независимо защищаемые страницы.
-
Надёжность — двухэтапная запись с верификацией.
-
Уникальная идентификация — каждый чип имеет свой 64-битный ROM ID.
Рассмотренный пример с хранением коэффициентов для 50 датчиков DS18B20 демонстрирует, как эффективно использовать все 128 байт памяти с учётом архитектурных особенностей микросхемы. Правильно спроектированная структура данных и использование механизмов защиты позволяют создать надёжную систему хранения калибровочной информации на долгие годы эксплуатации.