21.3. Последовательный интерфейс программирования флэш-памяти
Последовательный интерфейс программирования флэш-памяти основан на стандарте IEEE 1149.1. В этом режиме взаимодействие со встроенной флэш-памятью микроконтроллера производится через JTAG интерфейс.
21.3.1 Конфигурация устройства
В последовательном режиме программирования флэш-памяти микроконтроллер находится в особом тестовом режиме. Для данного режима используется часть выводов, остальные выводы должны быть отключены.
Рис. 21-7. Включение при последовательном интерфейсе программирования
Таблица 21-17. Описание выводов
Сигналы |
Функциональное назначение |
Тип сигнала |
Активный уровень |
Примечание |
Питание |
VDDFLASH |
Питание флэш-памяти |
Питание |
|
|
VDDIO |
Питание буферов портов ввода/вывода |
Питание |
|
|
VDDCORE |
Питание ядра |
Питание |
|
|
VDDPLL |
Питание PLL (ФАПЧ) |
Питание |
|
|
GND |
Земля |
Земля |
|
|
Тактовые сигналы |
XIN |
Вход генератора. Может быть подключен к цепи GND, в этом случае микроконтроллер тактируется от внутреннего RC генератора. |
Вход |
|
От 32кГц до 50МГц |
Сигналы выбора тестового режимов |
TST |
Выбор тестового режима |
Вход |
Высокий |
Подтянут к VDDIO |
PGMENO |
Выбор тестового режима |
Вход |
Высокий |
Подтянут к VDDIO |
PGMEN1 |
Выбор тестового режима |
Вход |
Низкий |
Подтянут к GND |
JTAG |
TCK |
Тактовый сигнал JTAG |
Вход |
- |
Подтянут к VDDIO по сбросу |
TDI |
Вход данных JTAG |
Вход |
- |
Подтянут к VDDIO по сбросу |
TDO |
Выход данных JTAG |
Выход |
- |
|
TMS |
Выбор режима JTAG |
Вход |
- |
Подтянут к VDDIO по сбросу |
21.3.2 Режим программирования
Для входа в режим программирования флэш-памяти необходимо выполнить:
- Подключить цепи GND, VDDIO, VDDCORE, VDDFLASH, VDDPLL;
- Подключить тактовый вход XIN в интервале (TPOR_RESET + 32 TSCLK) при использовании внешнего тактового генератора;
- Выждать интервал TPOR_RESET;
- Провести сброс TAP контроллера 5-ю тактами TCK при высоком уровне сигнала TMS;
- Загрузить в сдвиговый регистр команд IR значение 0x2 (регистр IR 4-х битный, первый бит LSB), не переходя через состояние Run-Test-Idle;
- Загрузить в сдвиговый регистр данных DR значение 0x2 (регистр DR 4-х битный, первый бит LSB), не переходя через состояние Run-Test-Idle;
- Загрузить в сдвиговый регистр команд IR значение 0xC (регистр IR 4-х битный, первый бит LSB), не переходя через состояние Run-Test-Idle.
Примечание: после сброса микроконтроллер тактируется от внутреннего RC генератора. Перед сбросом сигнала RDY, если внешний тактовый генератор (> 32 кГц) подключен к входу XIN, микроконтроллер переключится на внешний генератор, в противном случае вход XIN не подключается. Более высокая частота на входе XIN повышает скорость обмена данными с программатором.
Таблица 21-18. Сброс TAP контроллера и переход в состояние Select-DR-Scan
TDI |
TMS |
Состояния TAP контроллера |
X |
1 |
|
X |
1 |
|
X |
1 |
|
X |
1 |
|
X |
1 |
Сброс TAP контроллера (Test-Logic Reset) |
X |
0 |
Тест-старт/Свободен (Run-Test/ldle) |
Xt |
1 |
Выбор сканирования регистра DR (Select-DR-Scan) |
21.3.3 Цикл чтения/записи
Через JTAG интерфейс доступны два регистра микроконтроллера:
- Регистр управления Debug Comms Control Register: DCCR
- Debug Comms Data Register: DCDR
Доступ к этим регистрам производится через 38-ми битный регистр данных DR TAP контроллера, включающий 32-х битное поле данных, пяти-битное поле адреса и один бит чтения/записи. При операции записи данные заносятся в 32-х битное поле, адрес регистра заносится в 5-ти битное поле и 1 записывается в бит чтения/записи. Чтение из регистра осуществляется после записи адреса в поле адреса и записи 0 в бит чтения/записи, 32-х битное поле данных игнорируется. После обновления регистра (состояние UPDATE-DR TAP) считывается поле данных.
Рис. 21-8. Регистр данных DR TAP контроллера
Операция чтения/записи происходит при переходе TAP контроллера в состояние UPDATE-DR.
- Адрес регистра управления приема/передачи отладчика (Debug Comms Control) 0х04.
- Адрес регистра данных приема/передачи отладчика (Debug Comms Data) 0х05.
Регистр Debug Comms Control только для чтения, позволяет синхронизировать обмен межу микроконтроллером и отладчиком.
- Бит 1 (W) обозначает, может ли программатор считать данные из регистра Debug Comms Data. Если микроконтроллер занят W = 0, программатор ожидает, когда W =1.
- Бит 0 (R) обозначает, может ли программатор послать данные из регистра Debug Comms Data. При R = 1 данные, помещенные в регистр, не приняты микроконтроллером и программатор должен ожидать.
21.3.4 Работа микроконтроллера с флэш-памятью
Команды для работы с флэш-памятью сведены в таблицу 21-3. Каждая команда выполняется программатором через последовательный интерфейс путем чтения и записи регистров отладки.
21.3.4.1 Команда чтения флэш-памяти
Память представляет собой массив 32-х разрядных слов. Команда чтения может быть произведена с любого адреса в пространстве флэш-памяти. Соответственно адрес должен быть выровнен по размеру слова. Адрес будет автоматически инкрементироваться.
Таблица 21-19. Команда чтения
Чтение/Запись |
Регистр данных DR |
Запись |
(Число слов для чтения) << 16 |
Команда чтения |
Запись |
Адрес |
Чтение |
Данные из памяти по [Адрес] |
Чтение |
Данные из памяти по [Адрес+4] |
… |
… |
Чтение |
Данные из памяти по [Адрес+( Число слов для чтения -1)* 4] |
21.3.4.2 Команда записи флэш-памяти
Пространство флэш-памяти разбито на страницы. Записываемые данные хранятся в буфере записи, размер которого соответствует одной странице памяти. Содержимое буфера записи автоматически переносится во флэш-память:
- при обращении к любой странице отличной от текущей,
- при поступлении новой команды (MODE = CMDE).
Команда запись страницы (Write Page) WP оптимизирована для последовательной записи. Запись можно проводить последовательно, без повторного указания полного адреса, при этом внутренний адресный буфер будет автоматически инкрементироваться.
Таблица 21-20. Выполнение команды записи
Чтение/Запись |
Регистр данных DR |
Запись |
(Число слов для записи) << 16 |
(команда WP, WPL, EWP или EWPL) |
Запись |
Адрес |
Запись |
Данные из памяти по [Адрес] |
Запись |
Данные из памяти по [Адрес+4] |
Запись |
Данные из памяти по [Адрес+8] |
Запись |
Данные из памяти по [Адрес +( Число слов для записи -1 )* 4] |
Команда записи страницы и защиты (Write Page and Lock) WPL аналогична команде записи, но при этом бит защиты (lock бит) автоматически устанавливается в конце операции записи. Так как область защиты захватывает несколько страниц, программатор записывает первые страницы блокируемой области, используя команду WP, а последнюю страницу записывает командой WPL.
Команда стирание страницы и запись (Erase Page and Write) EWP. Перед заполнением буфера записи страница стирается.
Команда стирание страницы запись и защита (Erase Page and Write the Lock) является комбинацией команд EWP и WPL.
21.3.4.3 Команда полного стирания флэш-памяти.
Все области, имеющие защиту, перед полным стиранием флэш-памяти должны быть разблокированы командой CLB. В противном случае команда не будет выполнена.
Таблица 21-21. Команда полного стирания флэш-памяти
Чтение/Запись |
Регистр данных DR |
Запись |
EA |
21.3.4.4 Команды защиты флэш-памяти
Биты защиты могут быть установлены командами WPL или EWPL, а также командой установка защиты (Set Lock Bit) SLB. Данной командой могут быть активированы несколько бит защиты. Нулевой бит в Маске защиты (Bit Mask) соответствует первому lock биту и так далее.
Для сброса битов защиты используется команда снятия защиты (Clear Lock Bit) CLB. Все биты защиты сбрасываются также командой EA.
Таблица 21-22. Команды установки и сброса битов защиты
Чтение/Запись |
Регистр данных DR |
Запись |
SLB или CLB |
Запись |
Маска Защиты (Bit Mask) |
Чтение битов защиты осуществляется командой Get Lock Bit (GLB). В Маске защиты установленному n-ому биту соответствует активный n-ый бит защиты.
Таблица 21-23. Команда чтения битов защиты GLB
Чтение/Запись |
Регистр данных DR |
Запись |
GLB |
Чтение |
Маска Защиты |
21.3.4.5 Команды управления NVM битами
NVM биты общего назначения (GP NVM биты) устанавливаются командой Set Fuse Bit (SFB). Эта команда также активирует эти биты. Маска Защиты является аргументом для команды. Нулевой бит в Маске защиты соответствует первому GP NVM биту и так далее.
Таким же образом команда Clear Fuse Bit (CFB) используется для сброса GP NVM битов. GP NVM биты также сбрасываются командой EA.
Таблица 21-24. Команда установки/сброса GP NVM бит
Чтение/Запись |
Регистр данных DR |
Запись |
SFB или CFB |
Запись |
Маска Защиты |
GP NVM биты проверяются командой Get Fuse Bit (GFB). Установленный n-ый бит, считанный из Маски защиты, соответствует установленному n-ому GP NVM биту.
Таблица 21-25 Команда проверки GP NVM бит
Чтение/Запись |
Регистр данных DR |
Запись |
GFB |
Чтение |
Bit Mask |
21.3.4.6 Бит секретности флэш-памяти
Бит секретности устанавливается командой Set Security Bit (SSE). При активном бите секретности программирование/чтение флэш-памяти невозможно. Сброс бита секретности возможен только с полным стиранием содержимого флэш-памяти.
Таблица 21-26. Команда установки бита секретности
Чтение/Запись |
Регистр данных DR |
Запись |
SSE |
21.3.4.6 Команда чтения памяти
Команда чтения памяти (RRAM) используется для доступа ко всей памяти. Процедуру чтения можно проводить последовательно, без повторного указания полного адреса, при этом внутренний адресный буфер будет автоматически инкрементироваться.
Таблица 21-27. Команда чтения
Чтение/Запись |
Регистр данных DR |
Запись |
(Число слов для записи) << 16 |
(команда WP, WPL, EWP или EWPL) |
Запись |
Адрес |
Чтение |
Данные из памяти по [Адрес] |
Чтение |
Данные из памяти по [Адрес+4] |
… |
… |
Чтение |
Данные из памяти по [Адрес +( Число слов для записи -1 )* 4] |
21.3.4.8 Команда записи в память
Команда записи памяти (WRAM) используется для доступа ко всей памяти. Процедуру чтения можно проводить последовательно, без повторного указания полного адреса, при этом внутренний адресный буфер будет автоматически инкрементироваться.
Таблица 21-28. Команда записи
Чтение/Запись |
Регистр данных DR |
Запись |
(Число слов для записи) << 16 I (WRAM) |
Запись |
Адрес |
Запись |
Данные из памяти по [Адрес] |
Запись |
Данные из памяти по [Адрес+4] |
Запись |
Данные из памяти по [Адрес+8] |
Запись |
Данные из памяти по [Адрес +( Число слов для записи -1 )* 4] |
21.3.4.9 Команда чтения версии
Команда чтение версии Get Version (GVE) выдает информацию по версии FFPI интерфейса.
Таблица 21-29. Команда чтения версии
Чтение/Запись |
Регистр данных DR |
Запись |
GVE |
Чтение |
Версия FFPI |
|