TPI (Tiny Programming Interface)
Самые маленькие AVR — ATtiny4, 5, 9 и 10 в шестивыводном корпусе SOT — не программируются обычным ISP по SPI. Для них Microchip сделала отдельный интерфейс TPI: два сигнальных провода плюс RESET, синхронная передача от программатора и одна двунаправленная линия данных.
Обновлено Редакция GAW
Содержание
TPI (Tiny Programming Interface) — интерфейс программирования самых маленьких микроконтроллеров AVR: ATtiny4, ATtiny5, ATtiny9 и ATtiny10. Через него программатор записывает всю энергонезависимую память — флеш, конфигурационные биты и биты защиты — командами контроллера NVM (DS40002060A, разд. 15.2). У этих микроконтроллеров всего четыре линии ввода-вывода и до 1 Кбайт флеш-памяти, поэтому классический ISP по SPI с четырьмя сигнальными линиями заменён на более экономный интерфейс.
Выводы и кадр
| Вывод | Назначение |
|---|---|
| RESET (PB3) | разрешение TPI: низкий уровень или 12 В на всё время сеанса |
| TPICLK (PB1) | тактовый вход от программатора |
| TPIDATA (PB0) | данные в обе стороны |
Кроме этих линий программатор соединяют с VCC и GND. Передача синхронная: данные меняются по спаду TPICLK и считываются по фронту, частота — до 2 МГц при питании 5 В ± 5 % (табл. 17-9). Кадр фиксированный: старт-бит, 8 бит данных младшим битом вперёд, бит чётности и два стоп-бита — 12 тактов на байт (наш подсчёт). Линия TPIDATA одна на приём и передачу, поэтому физический уровень обнаруживает коллизии: если программатор и микроконтроллер тянут линию одновременно, передатчик отключается и интерфейс ждёт сигнала BREAK.
Как включается
- На питание подают 5 В.
- Через время запуска RESET переводят в ноль и держат так весь сеанс. Если фьюзом RSTDISBL вывод RESET превращён в порт, вместо нуля подают 12 В.
- Ждут tRST — минимальная длительность импульса сброса 400 нс при 5 В (табл. 17-4).
- Держат TPIDATA в единице 16 тактов TPICLK, после чего интерфейс готов принимать команды.
Выключается TPI, когда RESET отпускают, при условии что программатор сбросил бит NVMEN; иначе выйти из режима программирования можно только снятием питания (разд. 15.3.2).
Ограничения
- Программирование только при 5 В. Работают ATtiny4/5/9/10 от 1,8 до 5,5 В, а энергонезависимую память записывают лишь при 5 В. Детали на плате, которые 5 В не выдерживают, даташит советует защищать, например, последовательными резисторами.
- 12 В — почти предел. Абсолютный максимум на выводе RESET — 13 В, так что источник высоковольтного программирования нужен стабилизированный.
- Ресурс флеш-памяти — 10 000 циклов записи, хранение данных — 20 лет при 85 °C.
У новых AVR программирование и отладку объединяет однопроводный UPDI, у классических megaAVR — ISP по SPI. Что выбирать для своего микроконтроллера и каким программатором, разобрано в статье «Программирование AVR», а назначение фьюза RSTDISBL — на странице фьюзов AVR.
Частые вопросы
Почему ATtiny10 не прошивается USBasp по ISP?
У ATtiny4/5/9/10 нет интерфейса ISP по SPI: даташит описывает для них только TPI — синхронный интерфейс на линиях RESET, TPICLK и TPIDATA (DS40002060A, разд. 15). Программатор должен поддерживать именно TPI, и подключают его к этим трём выводам плюс питание и землю.
Можно ли прошить ATtiny10 на плате с питанием 3,3 В?
Только подав на время программирования 5 В: энергонезависимая память ATtiny4/5/9/10 программируется лишь при 5 В. Если на плате есть детали, которые 5 В не выдерживают, их защищают, например, последовательными резисторами — так советует сам даташит. Работать микроконтроллер потом может от 1,8 до 5,5 В.
Что делать, если вывод RESET переведён в режим порта фьюзом RSTDISBL?
Тогда TPI включают, подав на RESET 12 В на всё время сеанса вместо низкого уровня. Абсолютный максимум для этого вывода — 13 В, поэтому источник высокого напряжения должен быть стабилизированным. Без такого программатора микроконтроллер с запрограммированным RSTDISBL перепрошить нельзя.
Источники
- Microchip. ATtiny4/5/9/10 tinyAVR Data Sheet (DS40002060A, 2018) — Features: 512/1024 байт флеш, 32 байта SRAM, 10 000 циклов записи флеш, хранение 20 лет при 85 °C / 100 лет при 25 °C, питание 1,8–5,5 В, программирование только при 5 В; разд. 15.2: TPI — программирование всей энергонезависимой памяти через контроллер NVM, физический уровень на трёх выводах: RESET — разрешение, TPICLK — тактовый вход, TPIDATA — вход и выход данных; NVM программируется только при 5 В, компоненты, не выдерживающие 5 В, защищают, например, последовательными резисторами; разд. 15.3: двунаправленный полудуплексный приёмопередатчик с обнаружением ошибок кадра, чётности и коллизий; разд. 15.3.1: включение — 5 В на питание, затем RESET в ноль (или 12 В на RESET, если запрограммирован RSTDISBL) на всё время сеанса, ожидание tRST, TPIDATA в единице 16 тактов TPICLK; разд. 15.3.2: выключение — отпустить RESET при сброшенном бите NVMEN, иначе нужен перезапуск питания; разд. 15.3.3: кадр — старт-бит, 8 бит данных младшим вперёд, бит чётности (чётность), два стоп-бита; разд. 15.3.6: данные меняются по спаду и считываются по фронту TPICLK; табл. 17-4: минимальный импульс на RESET 2000 / 700 / 400 нс при 1,8 / 3 / 5 В; табл. 17-9: частота TPICLK до 2 МГц при VCC = 5 В ± 5 %; Absolute Maximum Ratings: напряжение на RESET от −0,5 до 13,0 В
- Microchip. AN2519 AVR Microcontroller Hardware Design Considerations (DS00002519B, 2018) — разд. 3: вывод RESET активен низким уровнем, у него внутренняя подтяжка, в шумной обстановке её может не хватить; высоковольтное программирование включается подачей на RESET 11,5–12,5 В, подробности — в даташите конкретного микроконтроллера
Нашли ошибку?
Смотрите также
- ISP (внутрисхемное программирование)Прошивка AVR на плате по SPI и выводу RESET
- UPDIОднопроводная прошивка и отладка новых AVR
- Высоковольтное программированиеВход в программирование повышенным напряжением на выводе сброса
- Фьюзы AVRБиты конфигурации AVR: тактирование, загрузчик, BOD
- Прошивка AVRISP, HVPP, debugWIRE, JTAG, PDI, TPI, UPDI, загрузчики, avrdude