UPDI — однопроводный интерфейс AVR
UPDI — интерфейс, через который прошивают и отлаживают новые микроконтроллеры AVR: tinyAVR 0/1/2, megaAVR 0, AVR Dx и Ex. Ему нужен всего один сигнальный провод, а простейший программатор собирается из обычного переходника USB–UART.
Обновлено Редакция GAW
UPDI (Unified Program and Debug Interface) — однопроводный интерфейс программирования и отладки микроконтроллеров AVR новых серий: tinyAVR 0/1/2, megaAVR 0, AVR Dx и Ex. Электрически это полудуплексный UART на одном выводе со скоростью до 0,9 Мбит/с: программатор и микроконтроллер по очереди передают по одной линии. Через UPDI доступны флеш-память, EEPROM, фьюзы и отладка. У ATmega4809 под UPDI отведён отдельный вывод, не занимающий ни одной линии ввода-вывода (DS40002173C, глава 30).
UPDI и ISP
| ISP | UPDI | |
|---|---|---|
| Серии | классические ATmega и ATtiny | tinyAVR 0/1/2, megaAVR 0, AVR Dx/Ex |
| Выводы | MOSI, MISO, SCK, RESET | один вывод UPDI |
| Простой программатор | USBasp, Arduino с ArduinoISP | SerialUPDI из переходника USB–UART |
Классические AVR прошивают по ISP через SPI, новые — только через UPDI, поэтому программатор USBasp для них не подходит.
Программаторы
Простейший — SerialUPDI: переходник USB–UART, диод и пара резисторов, которые соединяют линии TX и RX в одну. avrdude поддерживает его как тип serialupdi, а также программатор jtag2updi на плате Arduino и фирменные Atmel-ICE и PICkit 4/5. Подключение и команды avrdude — в статье «Как прошить AVR» и в описании avrdude; разъём UPDI с назначением контактов — на странице «Распиновка AVR ISP».
Частые вопросы
Чем прошить микроконтроллер с UPDI?
Проще всего — SerialUPDI: обычный переходник USB–UART, диод и пара резисторов, программа avrdude с типом программатора serialupdi. Подойдут и фирменные Atmel-ICE, PICkit 4/5, а также плата Arduino с прошивкой jtag2updi.
Можно ли прошить ATtiny1614 программатором USBasp?
Нет. USBasp работает по ISP — через SPI и вывод RESET, — а у серий tinyAVR 0/1/2 и megaAVR 0 этого интерфейса нет: прошивка и отладка идут только через UPDI. Нужен программатор UPDI, например SerialUPDI из переходника USB–UART.
Как записать фьюзы через UPDI?
Командой avrdude с программатором serialupdi, указав нужный фьюз по имени. У новых серий фьюзы называются по-своему — wdtcfg, bodcfg, osccfg, syscfg0, syscfg1, append, bootend, — и их биты означают то, что написано, без инверсии, как у классических AVR. Например, osccfg = 0x7D переводит ATtiny1614 на внутренний генератор 16 МГц.
Источники
- Microchip. ATmega4808/4809 Data Sheet (DS40002173C) — гл. 30 — UPDI: однопроводный полудуплексный UART до 0,9 Мбит/с на отдельном выводе
- AVRDUDE 8.3: руководство avrdude.1 и файл avrdude.conf (github.com/avrdudes/avrdude) — программаторы serialupdi и jtag2updi; запись фьюзов новых серий (osccfg, syscfg0 и другие)
Нашли ошибку?