Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Команда «Поиск ПЗУ»
Команда “Поиск ПЗУ” может использоваться, если идентификаторы подчиненных устройств неизвестны заранее. Это делает возможным обнаружить идентификаторы всех подчиненных устройств, подключенных к шине. Для этого, вначале передается команда “Пропуск ПЗУ”. Каждый подчиненный размещает первый бит своего идентификатора на шине. Ведущий считывает результат, как логическое И над всеми первыми битами идентификаторов всех подчиненных устройств. Затем подчиненные размещают на шине двоичное дополнение к первому биту своего идентификатора. Ведущий считывает состояние шины, которое есть результат логического «И» над всеми дополнениями к первому биту идентификатора всех подчиненных устройств. Если все устройства в первом разряде ИК содержат 1, то ведущий считает 10b. Аналогично, если значения 1 разряда всех устройств равно 0, то ведущий примет 01b. В этих случаях, бит может быть сохранен как значение первого бита всех адресов. После этого ведущий снова выполняет размещение этого бита на шине, чем сигнализирует подчиненным о необходимости дальнейшего продолжения передачи разрядов ИК. Если на шине будут присутствовать устройства, как с лог. 0, так и с лог. 1 в первом бите идентификатора, то ведущий примет 00. В этом случае, ведущий должен выбрать с какими адресами продолжать работу, с лог. 0 или 1 в первом разряде. Выбор передается по шине, указывая выбранным подчиненным о необходимости дальнейшей передачи ИК, а остальные подчиненные переходят в режим ожидания.
Затем ведущий переходит к считыванию следующих бит и этот процесс повторяется до считывания всех 64 бит. В результате ведущий обнаруживает полный 64-разрядный идентификатор. Для поиска других идентификаторов необходимо снова инициировать команду «Поиск ПЗУ», но в этом случае при возникновении несоответствий сделать другой выбор. Если придерживаться данной последовательности, то в конечном счете можно обнаружить все подчиненные устройства. Обратите внимание, что после выполнения первого поиска все подчиненные, кроме одного, переходят в режим ожидания. Таким образом, в этом состоянии связаться с активным подчиненным можно с помощью команды «Совпадение ПЗУ».
Ускоренные команды ПЗУ
Ускоренные команды ПЗУ не рассматриваются здесь, т. к. в данном документе рассматривается только режим стандартной скорости.
Команды памяти/функций
Команды памяти/функций – команды, которые специфичны для конкретного типа ИС или их класса. Обычно эти команды относятся к чтению или записи внутренней памяти и регистров подчиненных ИС. Количество таких команд фиксировано, но все они поддерживаются конкретным видом подчиненного устройства. Последовательность чтения и записи определена для каждой ИС. В связи с этим команды памяти здесь в подробностях не рассматриваются.
Типичная последовательность сеанса связи
Все однопроводные устройства придерживаются основной последовательности связи:
Ведущий отправляет импульс “Сброс”. Подчиненный (ые) отвечает (ют) импульсом «Присутствие». Ведущий отправляет команду ПЗУ, адресуя одно или несколько подчиненных устройств. Ведущий отправляет команду памяти.Обратите внимание, что для перехода к новому шагу, последний шаг должен быть завершен. Однако, не всегда необходимо завершать всю последовательность. Например, после завершения команды ПЗУ можно отправить новую команду «Сброс» и тем самым инициировать новый сеанс связи.
Проверка циклическим избыточным кодом
Кодирование циклическим избыточным кодом (CRC) используется для гарантирования целостности принятых данных через 1-Wire.
Подробности по теории CRC в этом документе не приводятся и в дальнейшем не обсуждаются. Если необходима информация по CRC, то рекомендуется использовать [2].
Среди семейства 1-Wire обычно используются две различные схемы CRC. Одна из них – 8-разрядная CRC (CRC8), другая – 16-разрядная CRC (CRC16). CRC8 используется в секторе ПЗУ всех микросхем. CRC8 также используется в некоторых ИС для проверки других данных, например, вводимых через шину команд. CRC16 используется некоторыми ИС для проверки на наличие ошибок в больших наборах данных.
Аппаратный эквивалент 8-разрядного CRC используется 64-разрядным идентификатором и показан на рисунке 11. Блоки представляют индивидуальные биты в 8-разрядном сдвиговом регистре. Эквивалентное полиноминальное выражение для CRC: X8 + X5 + X4 + 1.

Рисунок 11 – Аппаратный эквивалент 8-разр. CRC, используемого в микросхемах 1-Wire
Аппаратный эквивалент 16-разрядного CRC используется некоторыми ИС и показан на рисунке 12. Блоки представляют индивидуальные биты в 16-разрядном сдвиговом регистре. Эквивалентное полиноминальное выражение для CRC: X16 + X15 + X2 + 1.

Рисунок 12 - Аппаратный эквивалент 16-разр. CRC, используемого в микросхемах 1-Wire
Реализация
Далее рассматриваются три различных способа реализации протокола 1-Wire: полностью программная (по опросу), на основе УАПП с опросом флагов состояния и на основе УАПП с управлением по прерываниям. Короткое описание каждого дается ниже. Подробное описание по использованию каждого драйвера не входит в данный документ. Если необходимо более подробная информация по работе каждого драйвера, то необходимо ознакомится с исходным кодом интересующего драйвера, который входит в состав данных «Рекомендаций»
Рассмотрим программный подход к реализации протокола 1-Wire без задействования специальных аппаратных блоков микроконтроллера. Преимуществом данного подхода является то, что из аппаратных затрат потребуется только одна линия ввода-вывода общего назначения (GPIO). Поскольку все линии ввода-вывода у AVR-микроконтроллеров двунаправленные и содержат опциональные подтягивающие резисторы, то AVR-микроконтроллер может управлять шиной 1-Wire без какой-либо внешней схемы. В случае, если номинал внутреннего подтягивающего резистора не соответствует текущей конфигурации подчиненных устройств, то понадобиться только один внешний резистор. Недостатком данного подхода является возникновение задержек в процессе генерации “Сброс/Присутствие” и передачи бит. Чтобы гарантировать корректность временных интервалов на шине 1-Wire, прерывания должны быть отключены на время передачи бит. Длительность интервала между передачами двух бит никак не ограничивается. Таким образом, после передачи каждого бита можно смело активизировать прерывания. В этом случае генерация прерывания может возникать с задержкой, но ее наихудшее значение не превысит длительности генерации сигнала “Сброс/Присутствие” (менее 1 мс).
Драйвер УАПП с управлением по опросу использует модуль УАПП, который входит в состав многих микроконтроллеров AVR. Он используется для генерации сигнала необходимой формы на битном уровне. Остальная часть драйвера эквивалентна программному. Основными преимуществами данного драйвера по сравнению с программным – компактность программного кода и отсутствие необходимости манипулировать прерываниями во время передачи сигналов, т. к. УАПП выполняет это автономно. Недостатки: требует двух линий ввода-вывода и несложную внешнюю схему.
Драйвер УАПП с управлением по прерываниям использует УАПП для генерации сигналов необходимой формы тем же способом, что и драйвер УАПП с управлением по опросу. Дополнительным преимуществом данного подхода является возможность автоматического приема-передачи до 255 бит данных.
Драйверы с опросом состояния
Драйверы с опросом состояния разделены на две части: генерация сигналов битового уровня и команды высокого уровня для передачи байт и реализации команд ПЗУ. Отличие между двумя версиями состоит только в процедурах битного уровня, но они реализованы с общим интерфейсом, что позволяет использовать команды высокого уровня с любым драйвером.
Программная реализация
С помощью рассматриваемой программной реализации имеется возможность манипулировать с несколькими шинами 1-Wire, подключенных к одному микроконтроллеру AVR. Однако все шины должны быть подключены к одному и тому же порту ввода-вывода, а на какой именно порт необходимо определится во время проектирования.
Количество подключаемых шин ограничивается восемью, а перенос шины в пределах порта может конфигурироваться. Выводы, которые не задействованы шинами 1-Wire, остаются незатронутыми. Поскольку все шины 1-Wire подключены к одному и тому же порту, то несколько операций может быть выполнено на одной или более шинах одновременно. Это стало возможным благодаря аргументу pin или pins, которые входит в интерфейс каждой функции. Данный аргумент должен содержать маску для выводов, которые задействованы для работы. Например, имеется возможность отправить сигнал СБРОС восьми шинам одновременно, указав в качестве аргумента 0xff. Значение, возвращаемое этой функцией будет битовой маской всех шин, где один или более подчиненных устройств сгенерировали сигнал «присутствие». Данная битовая маска может подставляться в качестве аргумента pins в функцию, которая вводит команду «Пропуск ПЗУ». Все функции в этой реализации поддерживают возможность выбора вывода (pin). Следует руководствоваться общим правилом: все команды записи могут адресовать несколько шин одновременно. Команды чтения могут адресоваться только к одной шине.
Инициализация
Процедура инициализации интерфейса 1-Wire предельно проста. Она заключается в установке выводов 1-Wire на ввод и, при необходимости, активизации встроенного подтягивающего резистора для перевода шины в неактивное состояние. Некоторые микросхемы отреагируют на этот нарастающий фронт на шине, как на окончание сигнала «Сброс» и ответят сигналом «Присутствие». Для гарантирования, что этот сигнал не вызовет какого-либо сеанса связи, предусмотрена длительная выдержка времени.
Функции битового уровня
Функции битового уровня реализованы в соответствии с рекомендациями по применению AN126 компании Dallas Semiconductors. Все параметры временной диаграммы выдержаны в соответствии с рекомендованными значениями в этом документе. Значения приведены в таблице 3.
Таблица 3 – Значения используемых задержек времени
Параметр | Рекомендованная задержка, мс |
A | 6 |
B | 64 |
C | 60 |
D | 10 |
E | 9 |
F | 55 |
G | 0 |
H | 480 |
I | 70 |
J | 410 |
Обратите внимание, что в стандартном режиме задержка G равна 0.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 |


