УНИ/О
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Шина UNI /O / ˌjuː n созданная iˈoʊ для / низкоскоростной — асинхронная последовательная шина, компанией Microchip Technology связи во встроенных системах . [1] В шине используется конфигурация «главный/подчиненный» , требующая одного сигнала для передачи данных между устройствами. Первые устройства с поддержкой шины UNI/O были выпущены в мае 2008 года.
Интерфейс
[ редактировать ]Шина UNI/O требует один логический сигнал:
- SCIO — последовательные часы, ввод/вывод данных [2]
На каждой шине допускается только одно ведущее устройство, но к одной шине UNI/O можно подключить несколько ведомых устройств. Отдельные подчиненные устройства выбираются по адресу от 8 до 12 бит, включенному в заголовок команды .
Как ведущее, так и ведомое устройства используют двухтактный контакт ввода-вывода с тремя состояниями для подключения к SCIO, при этом контакт находится в состоянии с высоким импедансом , когда он не управляет шиной. Поскольку используются двухтактные выходы, выходной драйвер на ведомых устройствах ограничен по току, высоких токов чтобы предотвратить возникновение в системе во время конфликтов на шине.
В состоянии ожидания шины UNI/O имеется высокий логический уровень . Подтягивающий резистор можно использовать для обеспечения бездействия шины, когда ни одно устройство не управляет SCIO, но он не требуется для работы. [3]
Кодирование данных
[ редактировать ]Битовое кодирование
[ редактировать ]Сигналы синхронизации и данных объединяются и передаются по шине посредством манчестерского кодирования . Это означает, что каждый бит данных передается за фиксированный промежуток времени (называемый « периодом бита »).
Спецификация UNI/O устанавливает определенные правила в отношении битового периода:
- Это определяет мастер.
- Ведомым устройствам необходимо синхронизироваться с ведущим устройством для восстановления битового периода во время стартового заголовка .
- Оно может находиться в пределах 10 мкс и 100 мкс (что соответствует скорости передачи данных от 100 кбит/с до 10 кбит/с соответственно).
- Его необходимо исправить только в пределах одной операции шины (для новых операций шины ведущее устройство может выбрать другой битовый период).
В соответствии с манчестерским кодированием значение бита определяется переходом сигнала в середине периода бита. UNI/O использует соглашение IEEE 802.3 для определения значений 0 и 1 :
- Переход от высокого к низкому означает 0 .
- Переход от низкого к высокому означает 1 .
Битовые периоды происходят один за другим, без задержки между битовыми периодами.
Слова данных
[ редактировать ]UNI/O использует для связи 8-битные слова данных . передаются Байты первыми.
Последовательность подтверждения
[ редактировать ]Чтобы облегчить обнаружение ошибок 2-битная « последовательность подтверждения , к концу каждого передаваемого байта данных добавляется ». Первый бит называется «подтверждение ведущего устройства» (сокращенно «MAK») и всегда генерируется ведущим устройством. Второй бит, называемый «подтверждением ведомого устройства» (сокращенно «SAK»), всегда генерируется ведомым устройством.
Бит MAK используется следующим образом:
- Ведущий передает 1 бит ( MAK ), чтобы указать ведомому, что работа шины будет продолжена.
- Мастер передает бит 0 ( NoMAK ), чтобы указать, что предыдущий байт был последним байтом для этой операции шины.
Бит SAK используется следующим образом:
- После передачи полного адреса устройства (и выбора действительного ведомого устройства), если предыдущий байт данных и последующий бит MAK были приняты правильно, ведомое устройство передает 1 бит ( SAK ).
- В случае возникновения ошибки ведомое устройство автоматически отключается и игнорирует дальнейшую связь до тех пор, пока не будет получен резервный импульс. В этом случае в течение битового периода SAK ничего не будет передаваться. Этот отсутствующий переход может быть обнаружен ведущим устройством и считается битом NoSAK .
Структура команд
[ редактировать ]Импульс в режиме ожидания
[ редактировать ]UNI/O определяет сигнальный импульс, называемый «импульсом ожидания», который может генерироваться ведущим устройством для перевода подчиненных устройств в состояние сброса (называемое «режим ожидания»). Чтобы сгенерировать резервный импульс, ведущее устройство должно перевести шину на высокий логический уровень минимум на 600 мкс.
Резервный импульс необходимо генерировать при определенных условиях:
- Перед инициированием команды при выборе нового устройства (в том числе после события POR /BOR)
- После обнаружения ошибки
Если команда выполнена без ошибок, новая команда тому же устройству может быть инициирована без генерации резервного импульса.
Начальный заголовок
[ редактировать ]Начальный заголовок представляет собой специальную последовательность байтов, определенную спецификацией UNI/O, и используется для инициирования новой команды. Начальный заголовок состоит из следующих элементов:
- Мастер подает на шину низкий уровень минимум на 5 мкс.
- Мастер выводит байт данных 0x55 .
- Подчиненные устройства измеряют время, необходимое для получения байта 0x55 , путем подсчета переходов сигнала. Затем это время используется ведомыми устройствами для определения периода битов и синхронизации с ведущим устройством.
- Мастер выводит 1 для бита MAK.
- Подчиненные устройства не отвечают во время бита SAK, следующего за стартовым заголовком. Это сделано для того, чтобы избежать коллизий шин, которые могут возникнуть, если все подчиненные устройства попытаются ответить одновременно.
Адрес устройства
[ редактировать ]После передачи стартового заголовка ведущий должен передать адрес устройства, чтобы выбрать желаемое ведомое устройство для текущей операции. После отправки адреса устройства любое ведомое устройство с адресом, отличным от указанного, должно выключиться и игнорировать все дальнейшие коммуникации до тех пор, пока не будет получен резервный импульс.
UNI/O допускает как 8-битные, так и 12-битные адреса устройств. 8-битная адресация обеспечивает лучшую пропускную способность данных из-за меньших затрат на выполнение команд, а 12-битная адресация позволяет использовать больше подчиненных устройств с общим семейным кодом на одной шине. При проектировании подчиненного устройства разработчик должен выбрать, какую схему адресации использовать.
8-битная адресация
[ редактировать ]При 8-битной адресации весь адрес устройства передается в одном байте. Старшие 4 бита обозначают «семейный код», который определен Microchip в спецификации шины UNI/O. Младшие 4 бита обозначают код устройства. Код устройства позволяет использовать на одной шине несколько подчиненных устройств с общим кодом семейства. Код устройства может быть фиксированным для данного подчиненного устройства или настраиваться пользователем. Выбор кода устройства и способы его настройки (при необходимости) входят в обязанности разработчика подчиненного устройства.
Текущие коды семейства для 8-битных устройств по состоянию на 22 ноября 2009 г.: [1] следующие:
Семейный кодекс | Описание |
---|---|
′ 0000 ′ | Сдержанный |
′ 0011 ′ | Контроллеры дисплея |
′ 0100 ′ | Расширители портов ввода-вывода |
′ 1000 ′ | Частотные / квадратурные / ШИМ- энкодеры, часы реального времени |
′ 1001 ′ | Датчики температуры |
′ 1010 ′ | ЭСППЗУ |
′ 1011 ′ | Устройства шифрования/аутентификации |
′ 1100 ′ | Преобразователи постоянного тока в постоянный |
′ 1101 ′ | Аналого-цифровые преобразователи |
′ 1111 ′ | 12-битные адресные устройства |
12-битная адресация
[ редактировать ]При 12-битной адресации адрес устройства передается в двух байтах. Старшие 4 бита первого байта (которые будут соответствовать коду семейства при 8-битной адресации) установлены на « 1111 ». Следующие 4 бита — это код семейства для 12-битного адреса, а второй байт адреса — это 8-битный код устройства. Код устройства соответствует тем же правилам определения, что и для 8-битной адресации.
Поскольку указанное ведомое устройство не выбирается до тех пор, пока не будут получены оба байта адреса устройства, во время последовательности подтверждения, следующей за первым байтом адреса устройства, произойдет NoSAK.
Текущие семейные коды для 12-битных устройств по состоянию на 22 ноября 2009 г.: [1] следующие:
Семейный кодекс | Описание |
---|---|
′ 0000 ′ | Сдержанный |
′ 1111 ′ | Сдержанный |
Командный байт
[ редактировать ]После того, как ведущее устройство передало адрес устройства и выбрало отдельное ведомое устройство, ведущее устройство должно передать 8-битное значение для конкретной команды, которая будет выполнена ведомым устройством. Доступные команды определяются разработчиком каждого ведомого устройства и различаются от ведомого устройства к ведомому, например, последовательное EEPROM, скорее всего, будет иметь команды, отличные от команд датчика температуры. Разработчик подчиненного устройства также определит, сколько байтов данных необходимо для выполнения команды. Если необходимы какие-либо байты данных, они передаются либо ведущим, либо ведомым (в зависимости от типа команды) после байта команды.
Связь будет продолжаться до тех пор, пока либо ведущее устройство не передаст 0 (NoMAK) во время последовательности подтверждения, либо пока не произойдет ошибка. Если ошибок не возникает, это означает, что выполнение команд может продолжаться бесконечно, если мастер того пожелает.
Паразитное питание шины
[ редактировать ]Некоторые детали UNI/O могут получать питание от шины, что устраняет необходимость в специальном напряжении питания/проводе. [4] [5] [6]
Ссылки
[ редактировать ]- ^ Jump up to: а б с Спецификация шины UNI/O (PDF) , получено 22 ноября 2009 г.
- ^ Лист данных семейства последовательных EEPROM UNI/O 1K-16K (PDF) , получено 21 октября 2009 г.
- ^ AN1194, Рекомендуемое использование последовательных EEPROM микрочипов UNI/O, совместимых с шиной (PDF) , получено 21 октября 2009 г.
- ^ Однопроводные EEPROM и последовательные шины UNI/O®.
- ^ «Питание устройства шины UNI/O® через SCIO» (PDF) . Проверено 27 января 2024 г.
- ^ «Демонстрационная плата паразитного питания шины UNI/O®» (PDF) . Проверено 27 января 2024 г.
Внешние ссылки
[ редактировать ]- Спецификация шины UNI/O — микрочип