Команды 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 ROM | 0x33 | Чтение 64-битного ROM-кода устройства | Только single-drop, идентификация |
| MATCH ROM | 0x55 | Обращение к конкретному устройству по ROM-коду | Выбор устройства в multi-drop |
| SKIP ROM | 0xCC | Пропуск адресации, broadcast для всех устройств | Single-drop или одинаковая команда всем |
| SEARCH ROM | 0xF0 | Поиск устройств на шине двоичным алгоритмом | Перечисление устройств |
| CONVERT T | 0x44 | Запуск преобразования температуры | Датчики DS18B20 |
| READ SCRATCHPAD | 0xBE | Чтение временной памяти устройства | Получение результата измерения |
| WRITE SCRATCHPAD | 0x4E | Запись во временную память | Настройка разрешения, порогов |
Популярные устройства на шине
- 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 и сравнивайте с полученным значением.