USI: Универсальный последовательный интерфейс в ATtiny
Автор: Arduino under the Hood
Загружено: 2026-02-07
Просмотров: 16
Описание:
📥 РЕСУРСЫ И ЗАГРУЗКИ
• Техническое описание ATtiny25/45/85: https://ww1.microchip.com/downloads/e...
🧠 ТЕСТ
https://forms.gle/ZfTY3LWGtvoN8VBw5
Вы когда-нибудь задумывались, как крошечные микроконтроллеры с ограниченным количеством выводов поддерживают несколько протоколов связи? В этом разделе мы рассмотрим универсальный последовательный интерфейс (USI), используемый в микроконтроллерах ATtiny — продуманную аппаратную конструкцию, объединяющую общие элементы UART, I2C и SPI в одном гибком модуле. Вы также узнаете, как протоколы могут быть «неправильно использованы» для имитации других протоколов, для которых они не были разработаны.
Начнём с увлекательного примера: использование UART для реализации протокола 1-Wire. Поскольку микроконтроллер ATmega328P не имеет встроенной поддержки 1-Wire, интерфейс UART TX/RX можно настроить для генерации совместимого времени. При скорости 150 кБд с 8 битами данных каждый бит занимает 6,67 мкс, что позволяет полному 9-битному кадру UART (стартовый бит + 8 битов данных) уместиться в 60-мкс битовое окно 1-Wire. Импульс сброса требует переключения на 10 кБд (100 мкс на бит) для достижения требуемой длительности в 480 мкс.
Рассмотрим аппаратные аспекты преобразования UART в 1-Wire: между TX и шиной необходимо установить диод для предотвращения коротких замыканий, когда ведомое устройство переводит линию в низкое состояние, а TX — в высокое. Подтягивающий резистор поддерживает состояние ожидания в высоком состоянии, поскольку ток не может протекать через диод от TX для зарядки провода.
Семейство ATtiny представлено как младший брат ATmega328P — та же архитектура ЦП, но меньшее количество выводов (8 против 28) и упрощенный набор периферийных устройств. ATtiny85 предлагает 8 КБ программной памяти и 512 байт ОЗУ в компактном корпусе. Важно отметить, что ATtiny использует общие выводы связи для разных протоколов — SPI, I2C и UART не могут работать одновременно.
Вместо того чтобы тратить кремний на три простаивающих модуля, когда взаимодействует только один, Atmel создала USI, выделив общий знаменатель последовательных протоколов. Ключевые наблюдения: все протоколы находятся в состоянии высокого уровня в режиме ожидания, большинство имеют тактовые сигналы, передача данных начинается с перехода в состояние низкого уровня, и все они последовательно передают данные побитово.
Блок-схема USI подробно анализируется: USIDR (8-битный сдвиговый регистр данных) со старшим битом, подключенным к выходу, и младшим битом, принимающим вход, настраиваемая маршрутизация выводов DO/DI (отдельная для SPI/UART, общая для I2C), несколько источников тактового сигнала (прямой или инвертированный вывод USCK, сравнение по таймеру 0, программный бит USICLK), 4-битный счетчик для отслеживания завершения байта (16 фронтов = 8 бит) и блок управления Two-Wire для определения условий запуска I2C в режиме ведомого устройства.
Реализации, специфичные для протокола, показывают, что предоставляет USI и что должно обрабатывать программное обеспечение: для SPI достаточно загрузить USIDR и тактовый сигнал — USI обрабатывает сдвиг; для I2C программное обеспечение должно вручную создавать условия запуска/остановки, переключая выводы в правильной последовательности; для UART таймер 0 генерирует тактовый сигнал с желаемой скоростью передачи данных, а программное обеспечение обрабатывает четность.
К числу креативных применений USI, выходящих за рамки коммуникаций, относятся: использование 4-битного счетчика в качестве автономного таймера, расширение таймера 0 до 12 бит путем подключения переполнения таймера 0 к счетчику USI, реализация обнаружения фронтов сигнала с прерыванием по переполнению и генерация программных прерываний путем записи в USICLK.
#Arduino #ATtiny #USI #UniversalSerialInterface #UART #SPI #I2C #1Wire #BitBanging #SerialCommunication #EmbeddedSystems #Microcontroller #ProtocolConversion #ATtiny85
📖 РАЗДЕЛЫ
0:00 Введение
0:49 Сходства 1-Wire и UART
12:41 Подключение устройств 1-Wire к выводам UART
16:14 Знакомство с ATtiny
21:00 Сходства протоколов
23:01 Универсальный последовательный интерфейс (USI)
29:42 Использование USI для SPI
30:46 Использование USI для I2C/TWI
32:56 Использование USI для Big-Banging
34:06 Использование USI для расширения таймера
36:40 Резюме и что дальше?
Повторяем попытку...
Доступные форматы для скачивания:
Скачать видео
-
Информация по загрузке: