Импульс присутствия 1-Wire (presence pulse)
Любой обмен по шине 1-Wire начинается одинаково: ведущий сбрасывает линию долгим нулём и смотрит, ответит ли кто-нибудь. Этот ответ — импульс присутствия — сразу говорит, есть ли на шине хотя бы одно устройство.
Обновлено Редакция GAW
Импульс присутствия (presence pulse) — ответ ведомых устройств 1-Wire на импульс сброса ведущего. Вместе они составляют обязательную инициализацию, с которой начинается любой обмен. Это единственный сигнал на шине, который начинает не ведущий, — так сказано в даташите DS18B20.
Как это происходит
- Ведущий прижимает линию к нулю не меньше чем на 480 мкс — это импульс сброса.
- Ведущий отпускает линию, и подтягивающий резистор поднимает её в единицу.
- Ведомый, увидев фронт, ждёт 15–60 мкс и прижимает линию к нулю на 60–240 мкс — это импульс присутствия.
- Ведущий читает линию внутри этого окна: ноль — устройство есть, единица — никто не ответил.
Microchip в AN1199 реализует это так: ноль 480 мкс, отпустить линию, подождать 70 мкс, прочитать, подождать ещё 410 мкс. Тогда весь цикл занимает не меньше 960 мкс, а чтение попадает в окно, где ответ любого исправного устройства гарантирован.
| Параметр DS18B20 | Обозначение | Значение |
|---|---|---|
| Импульс сброса | tRSTL | ≥ 480 мкс |
| Пауза до импульса присутствия | tPDHIGH | 15–60 мкс |
| Импульс присутствия | tPDLOW | 60–240 мкс |
| Время после сброса | tRSTH | ≥ 480 мкс |
Несколько устройств
Выходы всех устройств 1-Wire — открытый сток, поэтому импульсы присутствия от нескольких ведомых накладываются: линия в нуле, если ответил хотя бы один. Узнать, сколько их и какие у них адреса, по этому импульсу нельзя — для этого служит поиск по ROM-кодам. Проверить CRC ROM-кода и посчитать время сброса и обмена поможет калькулятор 1-Wire.
При паразитном питании устройство живёт за счёт энергии с линии данных, и даташит DS18B20 предупреждает: импульс сброса длиннее 960 мкс может вызвать у него сброс по питанию.
Не путать с тайм-слотами записи и чтения: они короче — 60–120 мкс — и переносят по одному биту данных, а сброс с импульсом присутствия только начинает обмен.
Частые вопросы
Когда ведущий должен проверять импульс присутствия?
Внутри окна, где ответ гарантирован. Ведомый начинает импульс через 15–60 мкс после того, как ведущий отпустил линию, и держит его 60–240 мкс. Microchip в AN1199 читает линию через 70 мкс: в этот момент импульс от любого исправного устройства уже идёт. Затем ведущий ждёт до конца интервала 480 мкс.
Почему DS18B20 не отвечает импульсом присутствия?
Чаще всего нет подтягивающего резистора или он слишком большой, перепутаны выводы, обрыв в линии или неверные задержки в программе: прерывание посреди отсчёта может сдвинуть момент чтения за пределы окна. При паразитном питании даташит предупреждает, что импульс сброса длиннее 960 мкс может вызвать сброс по питанию.
Можно ли по импульсу присутствия узнать, сколько устройств на шине?
Нет. Все ведомые отвечают одновременно, и их импульсы складываются по схеме «монтажное И»: линия в нуле, если ответил хотя бы один. Чтобы узнать число и адреса устройств, нужен алгоритм поиска по ROM-кодам.
Источники
- Analog Devices (Maxim Integrated). DS18B20 Programmable Resolution 1-Wire Digital Thermometer, 19-7487, Rev 6, 7/19 — раздел «Initialization Procedure — Reset and Presence Pulses»: обмен начинается с импульса сброса ведущего и импульса присутствия DS18B20; ведущий держит линию в нуле не меньше 480 мкс, затем отпускает её, подтяжка 5 кОм поднимает линию; DS18B20, увидев фронт, ждёт 15–60 мкс и прижимает линию на 60–240 мкс; все сигналы, кроме импульса присутствия, начинает ведущий; табл. AC: tRSTL ≥ 480 мкс, tRSTH ≥ 480 мкс, tPDHIGH 15–60 мкс, tPDLOW 60–240 мкс; прим. 13: при паразитном питании tRSTL > 960 мкс может вызвать сброс по питанию
- Microchip. AN1199: 1-Wire Communication with PIC Microcontroller (DS01199A, 2008) — табл. 1, стандартная скорость: сброс — держать линию в нуле 480 мкс, отпустить, подождать 70 мкс, прочитать линию (0 — устройство есть, 1 — нет), подождать 410 мкс; каждый ведомый отвечает на сброс импульсом присутствия; стандартная скорость около 15 кбит/с, overdrive — около 111 кбит/с
Нашли ошибку?
Смотрите также
- 1-WireТайм-слоты, ROM-команды, поиск, CRC8, DS18B20, паразитное питание
- Калькулятор 1-WireCRC ROM-кода, резистор подтяжки и длина линии, время обмена
- Паразитное питаниеПитание от линии данных 1-Wire: сильная подтяжка, пороги, ограничения
- Открытый стокВыход только с транзистором к земле, единицу даёт подтяжка