В системах сбора данных и промышленной автоматизации часто возникает задача хранения калибровочных коэффициентов, серийных номеров и другой служебной информации непосредственно вблизи датчиков. Микросхема 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 байт, адреса 0x00800x008F) содержат служебные регистры:

 
Адрес Назначение
0x0080 Байт защиты страницы 0
0x0081 Байт защиты страницы 1
0x0082 Байт защиты страницы 2
0x0083 Байт защиты страницы 3
0x0084 Байт защиты от копирования
0x0085 Заводской байт (только чтение)
0x00860x0087 Пользовательские байты / ID производителя
0x00880x008F Зарезервировано

2.2 Режимы защиты страниц

Каждая из четырёх страниц данных может быть независимо сконфигурирована в один из трёх режимов с помощью соответствующих байтов защиты:

Код защиты Режим Описание
Любое значение, кроме 0x55 и 0xAA Открытый Свободное чтение и запись
0x55 Защита от записи Страница только для чтения
0xAA Режим EPROM Биты можно только сбрасывать с 1 на 0

Важно: после записи 0x55 или 0xAA байт защиты сам становится защищённым от записи (read-only). Это необратимое действие — вернуть страницу в открытый режим невозможно.

3. Механизм записи данных

3.1 Двухэтапный процесс

Запись в EEPROM DS2431+ выполняется в два этапа:

  1. Запись в Scratchpad (буфер) — данные сначала записываются в 8-байтовый временный буфер (scratchpad).

  2. Копирование в 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 байт (адреса 0x000x63).

4.4 Структура служебной области

Оставшиеся 28 байт (адреса 0x640x7F) распределяются следующим образом:

Адреса (hex) Размер Назначение Формат
0x640x67 4 байта Номер косы 32-битное целое, little‑endian (0 … 4 294 967 295)
0x680x6A 3 байта Дата производства День, месяц, год (последние 2 цифры)
0x6B0x6D 3 байта Дата последней поверки День, месяц, год
0x6E0x7D 16 байт Резерв Для будущего расширения
0x7E0x7F 2 байта CRC16 Контрольная сумма области 0x000x7D

Итого: 100 + 4 + 3 + 3 + 16 + 2 = 128 байт — вся память используется полностью и эффективно.

4.5 Защита данных

После записи всех калибровочных коэффициентов рекомендуется заблокировать страницы для предотвращения случайного или несанкционированного изменения данных.

Для этого в соответствующие байты защиты (0x00800x0083) записывается значение 0x55:

Регистр Страница Что защищается
0x0080 Страница 0 Датчики 0–15 (адреса 0x000x1F)
0x0081 Страница 1 Датчики 16–31 (адреса 0x200x3F)
0x0082 Страница 2 Датчики 32–47 (адреса 0x400x5F)
0x0083 Страница 3 Датчики 48–49 и служебная область (0x600x7F)

Важно: если планируется периодическое обновление даты поверки или номера косы, страницу 3 не следует защищать. Достаточно защитить только страницы 0–2 с коэффициентами.

4.6 Контроль целостности данных

Для обеспечения достоверности данных рекомендуется вычислять CRC16 для всей области 0x000x7D и сохранять результат в двух байтах 0x7E0x7F. При каждом чтении контрольная сумма пересчитывается и сравнивается с сохранённой — это позволяет обнаружить повреждение данных.

5. Заключение

Микросхема DS2431+ предоставляет удобное и надёжное решение для хранения калибровочной и служебной информации в распределённых системах с 1-Wire интерфейсом. Её ключевые преимущества:

  • Компактность — 128 байт в корпусе с 3 выводами.

  • Гибкость — четыре независимо защищаемые страницы.

  • Надёжность — двухэтапная запись с верификацией.

  • Уникальная идентификация — каждый чип имеет свой 64-битный ROM ID.

Рассмотренный пример с хранением коэффициентов для 50 датчиков DS18B20 демонстрирует, как эффективно использовать все 128 байт памяти с учётом архитектурных особенностей микросхемы. Правильно спроектированная структура данных и использование механизмов защиты позволяют создать надёжную систему хранения калибровочной информации на долгие годы эксплуатации.