Команды 1-Wire:
справочник по протоколу и устройствам

Датчик температуры на шине 1-Wire в системе мониторинга АвтоГРАФ

Шина 1-Wire используется в мониторинге транспорта для подключения цифровых датчиков температуры, ключей идентификации и памяти. Знание команд 1-Wire помогает диагностировать обрыв шины, разбирать конфликты адресации и правильно подключать несколько датчиков к одному контроллеру АвтоГРАФ. В справочнике — ROM-команды, коды основных устройств и примеры обмена.

  • ROM-команды: READ, MATCH, SKIP, SEARCH
  • Работа с DS18B20, DS2431, DS2401, DS2413
  • Поиск неисправностей на шине

Что такое 1-Wire

1-Wire — последовательная шина с одной сигнальной линией, по которой передаются и данные, и питание. На одной линии можно разместить несколько устройств, каждое из которых имеет уникальный 64-битный ROM-код: 8 бит семейного кода, 48 бит серийного номера и 8 бит CRC.

В оборудовании АвтоГРАФ шина 1-Wire применяется для цифровых датчиков температуры в рефрижераторах и изотермических фургонах, а также для ключей идентификации водителя.

Основные команды 1-Wire

КомандаКодНазначениеПрименение
READ ROM0x33Чтение 64-битного ROM-кода устройстваТолько single-drop, идентификация
MATCH ROM0x55Обращение к конкретному устройству по ROM-кодуВыбор устройства в multi-drop
SKIP ROM0xCCПропуск адресации, broadcast для всех устройствSingle-drop или одинаковая команда всем
SEARCH ROM0xF0Поиск устройств на шине двоичным алгоритмомПеречисление устройств
CONVERT T0x44Запуск преобразования температурыДатчики DS18B20
READ SCRATCHPAD0xBEЧтение временной памяти устройстваПолучение результата измерения
WRITE SCRATCHPAD0x4EЗапись во временную памятьНастройка разрешения, порогов

Популярные устройства на шине

  • DS18B20 — цифровой термометр, разрешение 9–12 бит, точность ±0,5 °C. Команды: CONVERT T, READ SCRATCHPAD, WRITE SCRATCHPAD.
  • DS2431 — EEPROM 1024 бит. Команды: WRITE MEMORY, READ MEMORY, COPY SCRATCHPAD.
  • DS2401 — электронный ключ с уникальным 64-битным кодом, поддерживает только ROM-команды.
  • DS2413 — два программируемых порта ввода-вывода, команды PIO ACCESS READ/WRITE.
  • DS28E05 — защищённая EEPROM с аутентификацией, команды READ MEMORY и WRITE MEMORY с SHA-1.
  • DS2438 — монитор батареи: напряжение, ток, температура, специальные команды измерения.

Семейный код — первый байт ROM-адреса — определяет тип устройства: 0x28 соответствует DS18B20, 0x23 — DS2431.

Примеры обмена

Чтение температуры с DS18B20

1. Инициализация
2. SKIP ROM (0xCC)
3. CONVERT T (0x44) — ожидание преобразования
4. Инициализация
5. SKIP ROM (0xCC)
6. READ SCRATCHPAD (0xBE)
7. Чтение 9 байт данных

Поиск устройств на шине

1. Инициализация
2. SEARCH ROM (0xF0)
3. Двоичный поиск: чтение бита от всех устройств,
   чтение комплементарного бита, выбор направления
4. Повтор до получения всех адресов

Запись в EEPROM DS2431

1. Инициализация
2. MATCH ROM (0x55) + адрес устройства
3. WRITE MEMORY (0x0F)
4. Адрес и данные
5. Чтение CRC для проверки
6. Чтение для подтверждения записи

Типичные проблемы на шине

  • Конфликт при SKIP ROM. В multi-drop системе broadcast-команда адресуется всем устройствам сразу; если они ждут разные команды, возникает конфликт — используйте MATCH ROM.
  • Питание по линии данных (parasite power). Нужен сильный подтягивающий резистор (обычно 1,5 кОм), во время преобразования нельзя выполнять другие операции, максимальная длина шины сокращается.
  • Ошибки целостности. Многие команды возвращают CRC (полином x⁸ + x⁵ + x⁴ + 1) — проверяйте его перед использованием данных.

Приобрести оборудование АвтоГРАФ можно по адресу: г. Москва, ул. Дорожная, д. 60Б, оф. 415. Программное обеспечение предоставляется бесплатно.

Часто задаваемые вопросы о командах 1-Wire

Как определить, какие команды поддерживает устройство на шине?

По семейному коду — первому байту ROM-адреса. Например, 0x28 соответствует DS18B20, 0x23 — DS2431. Полный список семейных кодов приведён в документации производителя.

Почему SKIP ROM не работает в multi-drop системе?

SKIP ROM — broadcast-команда для всех устройств сразу. Если после неё устройства должны выполнить разные действия, на шине возникает конфликт. Для адресного обращения используйте MATCH ROM.

Как ускорить работу с 1-Wire?

Используйте режим overdrive (до 142 кбит/с), если устройство его поддерживает, сократите длину шины, примените активный подтягивающий резистор и оптимизируйте алгоритм поиска.

Как проверять CRC в 1-Wire?

Многие команды возвращают контрольный байт; вычисляйте 8-битный CRC с полиномом x⁸ + x⁵ + x⁴ + 1 и сравнивайте с полученным значением.

Читайте также