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

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.

Как включается

  1. На питание подают 5 В.
  2. Через время запуска RESET переводят в ноль и держат так весь сеанс. Если фьюзом RSTDISBL вывод RESET превращён в порт, вместо нуля подают 12 В.
  3. Ждут tRST — минимальная длительность импульса сброса 400 нс при 5 В (табл. 17-4).
  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 перепрошить нельзя.

Источники

  1. 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 В
  2. Microchip. AN2519 AVR Microcontroller Hardware Design Considerations (DS00002519B, 2018) — разд. 3: вывод RESET активен низким уровнем, у него внутренняя подтяжка, в шумной обстановке её может не хватить; высоковольтное программирование включается подачей на RESET 11,5–12,5 В, подробности — в даташите конкретного микроконтроллера

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