Перейти к содержанию

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

ISPUPDI
Серииклассические ATmega и ATtinytinyAVR 0/1/2, megaAVR 0, AVR Dx/Ex
ВыводыMOSI, MISO, SCK, RESETодин вывод UPDI
Простой программаторUSBasp, Arduino с ArduinoISPSerialUPDI из переходника 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 МГц.

Источники

  1. Microchip. ATmega4808/4809 Data Sheet (DS40002173C) — гл. 30 — UPDI: однопроводный полудуплексный UART до 0,9 Мбит/с на отдельном выводе
  2. AVRDUDE 8.3: руководство avrdude.1 и файл avrdude.conf (github.com/avrdudes/avrdude) — программаторы serialupdi и jtag2updi; запись фьюзов новых серий (osccfg, syscfg0 и другие)

Нашли ошибку?