Разделы

В сети

Пользователей: 129
Из них просматривают:
Аналоги: 103. Даташиты: 11. Инструкции: 2. Новости: 3. Форум: 10.
Участников: 2
Гостей: 127

Google , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

В настоящее время нет объявлений.

AtMega128. Программирование через интерфейс JTAG

Написал MACTEP 31.03.2010 3:00:00 (Просмотров: 7438)

Программирование через интерфейс JTAG




Для программирования через интерфейс JTAG требуется использовать четыре специфических вывода JTAG-интерфейса: TCK, TMS, TDI и TDO. Управление выводами сброса и тактирования микроконтроллера не требуется. Для активизации JTAG-интерфейса необходимо запрограммировать конфигурационный бит JTAGEN. В состоянии поставки у микроконтроллера данный бит запрограммирован. Кроме этого, необходимо сбросить бит JTD в регистре MCUCSR. Альтернативно бит JTD можно сбросить путем удержания входа сброса в низком состоянии в течении двух тактов ЦПУ, после чего выводы JTAG-интерфейса доступны для программирования.

Этим обеспечивается возможность использовать выводы JTAG-интерфейса в качестве линий ввода-вывода в процессе нормальной работы, а при необходимости выполнить внутрисистемное программирование через JTAG-интерфейс. Обратите внимание, что данный метод не может использоваться для граничного сканирования или внутренней отладки через выводы JTAG-интерфейса. В таком случае выводы JTAG-интерфейса должны использоваться только для этих целей. Также необходимо выделить, что, как при последовательной передачи, так и при последовательном приеме, первым передается младший разряд всех сдвиговых регистров.

Программирование специфических JTAG-инструкций

Регистр инструкции является 4-х разрядным и, поэтому, поддерживает 16 инструкций. JTAG-инструкции, полезные для программирования, представлены ниже.

Код операции каждой инструкции показан за наименованием инструкции в 16-тиричном формате. Текстом описывается, какой регистр данных выбирается в качестве пути между TDI и TDO для каждой инструкции.

Состояние "тест-старт/свободен" TAP-контроллера используется для генерации внутренней синхронизации. Он может также использоваться как промежуточное состояние "простоя" между JTAG-последовательностями. Граф-автомат для изменения слова инструкции на рисунке 146.

Граф-автомат изменения слова инструкции
Рисунок 146. Граф-автомат изменения слова инструкции

AVR_RESET; $C

Специфическая инструкция, которая поддерживается AVR-микроконтроллерами, для принудительного перевода микроконтроллера в состояние сброса. TAP-контроллер не сбрасывается при выполнении данной инструкции. В качестве регистра данных выступает одноразрядный регистр сброса. Обратите внимание, что микроконтроллер будет находиться непрерывно в состоянии сброса, пока в регистре сброса (и цепи сканирования) будет записана лог. 1. Выход данной цепи не защелкивается.

Активными состояниями являются:

  • СДВИГ РД: Регистр сброса сдвигается под управлением входа TCK.

PROG_ENABLE ($4)

Специфическая инструкция для разрешения программирования через JTAG-порт. 16-разр. регистр разрешения программирования выбирается в качестве регистра данных. Активными состояниями являются следующие:

  • СДВИГ РД: сигнатурный код разрешения программирования загружается в регистр данных.
  • МОДИФ РД: сравнение с сигнатурным кодом разрешения программирования и ввод режима программирования при обнаружении совпадения.

PROG_COMMANDS ($5)

Специфическая инструкция для ввода команд программирования через порт JTAG. 15-разр. регистр команд программирования выбирается в качестве регистра данных. Активными состояниями являются:

  • ЗАХВАТ РД: результат предыдущей команды загружается в регистр данных.
  • СДВИГ РД: регистр данных сдвигается под управлением тактового входа TCK, сдвигом выводится результат предыдущей команды и вводится новая команда.
  • МОДИФ_РД: команды программирования поступает на входы флэш-памяти.
  • ТЕСТ-СТАРТ/СВОБОДЕН: генерируется один такт синхронизации, выполняется загруженная команда (не всегда требуется, см. табл. 131).

PROG_PAGELOAD ($6)

Специфическая JTAG-инструкция, которая непосредственно загружает страницу данных флэш-памяти через JTAG-порт. 2048-битный виртуальный регистр загрузки страницы флэш-памяти выбирается в качестве регистра данных. Он является виртуальной цепью сканирования с длиной равной количеству бит в странице флэш-памяти. Внутренний сдвиговый регистр - 8-разрядный. В отличие от большинства JTAG-инструкций состояние МОДИФ РД не используется для передачи данных из сдвигового регистра. Данные автоматически передаются в страничный буфер флэш-памяти побайтно в состоянии СДВИГ РД.

Активными состояниями являются:

  • СДВИГ РД: страница данных флэш-памяти вводится через TDI под управлением TCK и автоматически загружается в страницу флэш-памяти побайтно.

PROG_PAGEREAD ($7)

Специфическая JTAG-инструкция полного считывания одной страницы флэш-памяти через JTAG-порт. 2056-разрядный виртуальный регистр чтения страницы флэш-памяти выбирается в качестве регистра данных. Он является виртуальной цепью сканирования с длиной эквивалентной количеству бит одной страницы флэш-памяти + 8 бит. Внутренний сдвиговый регистр является 8-ми разрядным. В отличие от большинства JTAG-инструкций состояние МОДИФ РД не используется для передачи данных из сдвигового регистра. Данные автоматически передаются из страничного буфера флэш-памяти побайтно в состоянии СДВИГ РД.

Активными состояниями являются:

  • СДВИГ РД: автоматически считывается один байт данных из флэш-памяти и передается сдвигом через TDO под управлением входа TCK. Вход TDI игнорируется.

Регистры данных

Регистры данных выбираются регистрами JTAG-инструкций, как описано "Специфические JTAG-инструкции программирования". Ниже перечислены регистры данных, которые относятся к операциям программирования:

  • Регистр сброса
  • Регистр разрешения программирования
  • Регистр команд программирования
  • Виртуальный регистр загрузки флэш-памяти
  • Виртуальный регистр чтения флэш-памяти

Регистр сброса

Регистр сброса является тестовым регистром данных и используется для сброса микроконтроллера в процессе программирования. Такой сброс требуется перед вводом режима программирования. Запись лог. 1 в регистр сброса приводит к установке низкого уровня на внешнем входе сброса "Reset". Микроконтроллер будет находиться в состоянии сброса до тех пор, пока регистр сброса имеет единичное состояние. В зависимости от настроек синхронизации конфигурационными битами после записи лог.0 в регистр сброса микроконтроллер задержится в состоянии сброса в течение фиксированного промежутка времени (см. также "Источники синхронизации"). Выход из данного регистра данных не защелкивается, т.к. сброс наступает незамедлительно, как показано на рисунке 123.

Регистр разрешения программирования

Регистр разрешения программирования является 16-разрядным. Содержимое этого регистра сравнивается с сигнатурным кодом разрешения программирования "1010_0011_0111_0000". Если содержимое регистра совпадает с сигнатурным кодом разрешения программирования, то разрешается программирование через порт JTAG. Регистр принимает нулевое состояние после сброса при подаче питания и должен быть сброшен при выходе из режима программирования.

Регистр  разрешения программирования
Рисунок 147. Регистр разрешения программирования

Регистр команд программирования

Регистр команд программирования является 15-разрядным регистром. Данный регистр используется для последовательной загрузки команд программирования, при этом передается результат предыдущей команды. Набор JTAG-инструкций программирования показан в таблице 131. Граф-автомат загрузки команд программирования показан на рисунке 149.

Регистр  команд программирования
Рисунок 148. Регистр команд программирования

Таблица 131. JTAG-инструкции программирования

Инструкция Последовательность TDI Последовательность TDO Примечания
1a. Стирание кристалла 0100011_10000000
0110001_10000000
0110011_10000000
0110011_10000000
xxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
 
1b. Опрос завершения стирания кристалла 0110011_10000000 xxxxxox_xxxxxxxx (2)
2a. Ввод записи флэш-памяти 0100011_00010000 xxxxxxx_xxxxxxxx  
2b. Загрузка старшего адресного байта 0000111_aaaaaaaa xxxxxxx_xxxxxxxx (9)
2c. Загрузка младшего адресного байта 0000011_bbbbbbbb xxxxxxx_xxxxxxxx  
2d. Загрузка младшего байта данных 0010011_iiiiiiii xxxxxxx_xxxxxxxx  
2e. Загрузка старшего байта данных 0010111_iiiiiiii xxxxxxx_xxxxxxxx  
2f. Запись данных 0110111_00000000
1110111_00000000
0110111_00000000
xxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
(1)
2g. Запись страницы флэш-памяти 0110111_00000000
0110101_00000000
0110111_00000000
0110111_00000000
xxxxxxx_xxxxxxx
xxxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
(1)
2h. Опрос завершения записи страницы флэш-памяти 0110111_00000000 xxxxxox_xxxxxxxx (2)
3a. Ввод чтения флэш-памяти 0100011_00000010 xxxxxxx_xxxxxxxx  
3b. Загрузка старшего адресного байта 0000111_aaaaaaaa xxxxxxx_xxxxxxxx (9)
3c. Загрузка младшего адресного байта 0000011_bbbbbbbb xxxxxxx_xxxxxxxx  
3d. Чтение младшего и старшего байта данных 0110010_00000000
0110110_00000000
0110111_00000000
xxxxxxx_xxxxxxxx
xxxxxxx_oooooooo
xxxxxxx_oooooooo

младший байт
старший байт
4a. Ввод записи ЭСППЗУ 0100011_00010001 xxxxxxx_xxxxxxxx  
4b. Загрузка старшего адресного байта 0000111_aaaaaaaa xxxxxxx_xxxxxxxx (9)
4c. Загрузка младшего адресного байта 0000011_bbbbbbbb xxxxxxx_xxxxxxxx  
4d. Загрузка байта данных 0010011_iiiiiiii xxxxxxx_xxxxxxxx  
4e. запись данных 0110111_00000000
1110111_00000000
0110111_00000000
xxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
(1)
4f. Запись страницы ЭСППЗУ 0110011_00000000
0110001_00000000
0110011_00000000
0110011_00000000
xxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
(1)
4g. Опрос завершения страничной записи 0110011_00000000 xxxxxox_xxxxxxxx (2)
5a. Ввод чтения ЭСППЗУ 0100011_00000011 xxxxxxx_xxxxxxxx  
5b. Загрузка старшего адресного байта 0000111_aaaaaaaa xxxxxxx_xxxxxxxx (9)
5c. Загрузка младшего адресного байта 0000011_bbbbbbbb xxxxxxx_xxxxxxxx  
5d. Чтение байта данных 0110011_bbbbbbbb
0110010_00000000
0110011_00000000
xxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
xxxxxxx_oooooooo
 
6a. Ввод записи конфигурационных бит 0100011_01000000 xxxxxxx_xxxxxxxx  
6b. Чтение младшего байта данных (6) 0010011_iiiiiiii xxxxxxx_xxxxxxxx (3)
6c. Запись расширенного конфигурационного байта 0111011_00000000
0111001_00000000
0111011_00000000
0111011_00000000
xxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
(1)
6d. Опрос завершения записи расширенного конфигурационного байта 0110111_00000000 xxxxxox_xxxxxxxx (2)
6e. Загрузка младшего байта данных (7) 0010011_iiiiiiii xxxxxxx_xxxxxxxx (3)
6f. Запись старшего конфигурационного байта 0110111_00000000
0110101_00000000
0110111_00000000
0110111_00000000
xxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
(1)
6g. Опрос завершения записи конфигурационного байта 0110111_00000000 xxxxxox_xxxxxxxx (2)
6h. Загрузка младшего байта данных(7) 0010011_iiiiiiii xxxxxxx_xxxxxxxx (3)
6i. Запись младшего конфигурационного байта 0110011_00000000
0110001_00000000
0110011_00000000
0110011_00000000
xxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
(1)
6j. Опрос завершения записи конфигурационного байта 0110011_00000000 xxxxxox_xxxxxxxx (2)
7a. Ввод записи бит защиты 0100011_00100000 xxxxxxx_xxxxxxxx  
7b. Загрузка байта данных(9) 0010011_11iiiiii xxxxxxx_xxxxxxxx (4)
7c. Запись бит защиты 0110011_00000000
0110001_00000000
0110011_00000000
0110011_00000000
xxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
(1)
7d. Опрос завершения записи бит защиты 0110011_00000000 xxxxxox_xxxxxxxx (2)
8a. Ввод чтения бит защиты/конфигурационных бит 0100011_00000100 xxxxxxx_xxxxxxxx  
8b.Чтение расширенного конфигурационного байта (6) 0111010_00000000
0111011_00000000
xxxxxxx_xxxxxxxx
xxxxxxx_oooooooo
 
8c. Чтение старшего конфигурационного байта (7) 0111110_00000000
0111111_00000000
xxxxxxx_xxxxxxxx
xxxxxxx_oooooooo
 
8d. Чтение младшего конфигурационного байта (8) 0110010_00000000
0110011_00000000
xxxxxxx_xxxxxxxx
xxxxxxx_oooooooo
 
8e. Чтение бит защиты (9) 0110110_00000000
0110111_00000000
xxxxxxx_xxxxxxxx
xxxxxxx_xxoooooo
(5)
8f. Чтение конфигурационных бит и бит защиты 0111010_00000000
0111110_00000000
0110010_00000000
0110110_00000000
0110111_00000000
xxxxxxx_xxxxxxxx
xxxxxxx_oooooooo
xxxxxxx_oooooooo
xxxxxxx_oooooooo
xxxxxxx_oooooooo
(5) расш. конф. байтстарш. конф. байтмл. конф. байтбиты защиты
9a. Ввод чтения сигнатурного байта 0100011_00001000 xxxxxxx_xxxxxxxx  
9b. Загрузка адреса байта 0000011_bbbbbbbb xxxxxxx_xxxxxxxx  
9c. Чтение сигнатурного байта 0110010_00000000
0110011_00000000
xxxxxxx_xxxxxxxx
xxxxxxx_oooooooo
 
10a. Ввод чтения калибровочного байта 0100011_00001000 xxxxxxx_xxxxxxxx  
10b. Загрузка адреса байта 0000011_bbbbbbbb xxxxxxx_xxxxxxxx  
10c. Чтение калибровочного байта 0110110_00000000
0110111_00000000
xxxxxxx_xxxxxxxx
xxxxxxx_oooooooo
 
11a. Загрузка команды "нет операции" 0100011_00000000
0110011_00000000
xxxxxxx_xxxxxxxx
xxxxxxx_xxxxxxxx
 

Сокращения:

a - адрес старших разрядов;
b - адрес младших разрядов;
H - выбор младшего (=0) или старшего (=1) байта;
o - выводимые данные;
i - вводимые данные;
x - может иметь произвольное значение.

Прим.:

  1. Данная последовательность не требуется, если семь старших разрядов корректно установлены предыдущей последовательностью команд.
  2. Повторить до тех пор, пока o = "1".
  3. Установить биты равными "0" для программирования соответствующих конфигурационных бит и "1" для их стирания.
  4. Установить биты равными "0" для программирования соответствующих бит защиты и "1", чтобы оставить их неизменными.
  5. "0" -запрограммирован, "1" - не запрограммирован.
  6. Информация по расположению расширенных конфигурационных бит представлена в таблице 118.
  7. Информация по расположению старших конфигурационных бит представлена в таблице 119.
  8. Информация по расположению младших конфигурационных бит представлена в таблице 120.
  9. Информация по расположению бит защиты представлена в таблице 116.

Граф-автомат изменения/чтения слов данных
Рисунок 149. Граф-автомат изменения/чтения слов данных

Виртуальный регистр загрузки страницы флэш-памяти

Виртуальный регистр загрузки флэш-памяти представляет собой виртуальную цепь сканирования с длиной равной количеству бит в одной странице флэш-памяти. Внутренний сдвиговый регистр 8-разрядный и данные автоматически передаются в страничный буфер побайтно. Слова инструкций вводятся сдвигом, начиная с младшего разряда первого слова инструкции и завершая старшим разрядом последней инструкции в пределах одной и той же страницы. Этим обеспечивается эффективный путь загрузки страничного буфера флэш-памяти перед выполнение операции "Запись страницы".

Виртуальный регистр загрузки страницы флэш-памяти
Рисунок 150. Виртуальный регистр загрузки страницы флэш-памяти

Виртуальный регистр чтения страницы флэш-памяти

Виртуальный регистр чтения страницы флэш-памяти представляет собой виртуальную цепь сканирования с длиной равной количеству бит в странице флэш-памяти + 8 бит. Фактически сдвиговый регистр 8-разрадный и данные автоматически передаются из страницы флэш-памяти побайтно. Первые 8 тактов используются для передачи первого байта в сдвиговый регистр и передаваемые в течении этих 8-ми тактов биты необходимо игнорировать. После этой инициализации данные сдвигаются, начиная с младшего разряда первой инструкции текущей страницы и заканчивая старшим разрядом последней инструкции этой же страницы. Этим обеспечивается эффективный путь чтения страницы флэш-памяти для проверки результата программирования.

Виртуальный регистр чтения страницы флэш-памяти
Рисунок 151. Виртуальный регистр чтения страницы флэш-памяти

Алгоритм программирования

Ниже используются ссылки на коды инструкций "1a", "1b" и т.п. Информация о них представлена в таблице 131.

Ввод режима программирования

  1. Ввод JTAG-инструкции AVR_RESET и сдвиг 1 в регистр сброса.
  2. Ввод инструкции PROG_ENABLE и сдвиг 1010_0011_0111_0000 в регистр разрешения программирования.

Выход из режима программирования

  1. Ввод JTAG-инструкции PROG_COMMANDS.
  2. Отключение всех инструкций программирования вводом инструкции "нет операции" 11a.
  3. Ввод инструкции PROG_ENABLE и загрузка регистра разрешения программирования кодом 0000_0000_0000_0000.
  4. Ввод JTAG-инструкции AVR_RESET и сдвиг 0 в регистр сброса.

Выполнение стирания кристалла

  1. Ввод JTAG-инструкции PROG_COMMANDS.
  2. Запуск стирания кристалла вводом инструкции программирования 1a.
  3. Опрос завершения стирания кристалла с помощью инструкции программирования 1b или задержка на время tWLRH_CE (см. табл. 127).

Программирование флэш-памяти

Перед программированием флэш-памяти необходимо выполнить операцию "стирание кристалла" (см. "Выполнение стирания кристалла").

  1. Ввод JTAG-инструкции PROG_COMMANDS.
  2. Разрешение записи флэш-памяти, используя инструкцию программирования 2a.
  3. Загрузка старшего байта адреса с помощью инструкции программирования 2b.
  4. Загрузка младшего байта адреса с помощью инструкции программирования 2c.
  5. Загрузка данных с помощью инструкций программирования 2d, 2e и 2f.
  6. Повторение шагов 4 и 5 для всех слов инструкций загружаемой страницы.
  7. Запись страницы с помощью инструкции программирования 2g.
  8. Опрос завершения записи флэш-памяти, используя инструкцию программирования 2h или задержка на время tWLRH (см. табл. 127).
  9. Повторение шагов 3…7 до завершения программирования всех данных. Более эффективная передачи данных может быть достигнута с помощью инструкции PROG_PAGELOAD:
  1. Ввод JTAG-инструкции PROG_COMMANDS.
  2. Разрешение записи флэш-памяти с помощью инструкции программирования 2a.
  3. Загрузка адреса страницы с помощью инструкций 2b и 2c. PCWORD (см. табл. 124) используется для адресации в пределах одной страницы и в него необходимо записать 0.
  4. Ввод JTAG-инструкции PROG_PAGELOAD.
  5. Загрузка всей страницы путем загрузки в страницу всех слов инструкций сдвигом, начиная с младшего разряда первой инструкции текущей страницы и завершая старшим разрядом последней инструкции этой же страницы.
  6. Ввод JTAG-инструкции PROG_COMMANDS.
  7. Запись страницы с помощью инструкции программирования 2g.
  8. Опрос завершения записи флэш-памяти с помощью инструкции программирования 2h или задержка на время tWLRH (см. табл.127).
  9. Повторение шагов 3…8 до завершения программирования всех данных.

Чтение флэш-памяти

  1. Ввод JTAG-инструкции PROG_COMMANDS.
  2. Разрешение чтения флэш-памяти, используя инструкцию программирования 3a.
  3. Загрузка адреса с помощью инструкций программирования 3b и 3c.
  4. Чтение данных с помощью инструкции программирования 3d.
  5. Повторение шагов 3 и 4 до завершения чтения всех данных.

Более высокая эффективность передачи данных может быть достигнута с помощью инструкции PROG_PAGEREAD:

  1. Ввод JTAG-инструкции PROG_COMMANDS.
  2. Разрешение чтения флэш-памяти с помощью инструкции программирования 3a.
  3. Загрузка адреса страницы с помощью инструкций программирования 3b и 3c. PCWORD (см. табл. 124) используется для адресации в пределах одной страницы и должен быть записан также.
  4. Ввод JTAG-инструкции PROG_PAGEREAD.
  5. Чтение всей страницы путем сдвига всех слов инструкций в странице, начиная с младшего разряда первой инструкции и завершая старшим разрядом последней инструкции. Помните, что первые 8 сдвигаемых бит необходимо игнорировать.
  6. Ввод JTAG-инструкции PROG_COMMANDS.
  7. Повторение шагов 3…6 до завершения чтения всех данных.

Программирование ЭСППЗУ

Перед программированием ЭСППЗУ должно быть выполнено "стирание кристалла". См. "Выполнение стирания кристалла".

  1. Ввод JTAG-инструкции PROG_COMMANDS.
  2. Разрешение записи ЭСППЗУ с помощью инструкции программирования 4a.
  3. Загрузка старшего байта адреса с помощью инструкции программирования 4b.
  4. Загрузка младшего байта адреса с помощью инструкции программирования 4c.
  5. Загрузка данных с помощью инструкций 4d и 4e.
  6. Повторение шагов 4 и 5 для всех байт данных в странице.
  7. Запись данных с помощью инструкции программирования 4f.
  8. Опрос завершения программирования ЭСППЗУ с помощью инструкции программирования 4g или задержка на время tWLRH (см. табл. 127).
  9. Повторите шаги 3…8 до завершения программирования всех байт данных.

Обратите внимание, что инструкция PROG_PAGELOAD не может быть использована для программирования ЭСППЗУ.

Чтение ЭСППЗУ

  1. Ввод JTAG-инструкции PROG_COMMANDS.
  2. Разрешение чтения ЭСППЗУ с помощью инструкции программирования 5a.
  3. Загрузка адреса с помощью инструкции программирования 5b и 5c.
  4. Чтение данных с помощью инструкции программирования 5d.
  5. Повторение шагов 3 и 4 до завершения считывания всех данных.

Обратите внимание, что инструкция PROG_PAGEREAD не может быть использована для чтения ЭСППЗУ.

Программирование конфигурационных бит

  1. Ввод JTAG-инструкции PROG_COMMANDS.
  2. Разрешение записи конфигурационных бит с помощью инструкции 6a.
  3. Загрузка байта данных с помощью инструкции программирования 6b. Запись "0" приводит к программированию соответствующего конфигурационного бита, а запись "1" приводит к разпрограммированию конфигурационного бита.
  4. Запись расширенного конфигурационного байта с помощью инструкции программирования 6c.
  5. Опрос завершения записи конфигурационных бит с помощью инструкции программирования 6d или пауза tWLRH (см. табл. 127).
  6. Загрузка байта данных с помощью инструкции программирования 6e. Запись "0" приводит к программированию соответствующего конфигурационного бита, а запись "1" приводит к разпрограммированию конфигурационного бита.
  7. запись старшего конфигурационного байта с использованием инструкции программирования 6f.
  8. Опрос завершения записи конфигурационных бит с помощью инструкции программирования 6g или пауза tWLRH (см. табл. 127).
  9. Загрузка байта данных с помощью инструкции программирования 6h. Запись "0" приводит к программированию конфигурационного бита, а запись "1" приводит к разпрограммированию конфигурационного бита.
  10. Запись младшего конфигурационного байта с помощью инструкции программирования 6i.
  11. Опрос завершения записи конфигурационных бит с помощью инструкции программирования 6j или пауза tWLRH (см. табл. 127).

Программирование бит защиты

  1. Ввод JTAG-инструкции PROG_COMMANDS.
  2. Разрешение записи бита защиты с помощью инструкции программирования 7a.
  3. Загрузка данных с помощью инструкции 7b. Загрузка "0" приводит к программирования бита защиты, а "1" оставляет его состояние неизменным.
  4. Запись бит защиты с помощью инструкции программирования 7c.
  5. Контроль завершения программирования бит защиты с помощью инструкции 7d или задержка на время tWLRH (см. табл.127).

Чтение конфигурационных бит и бит защиты

  1. Ввод JTAG-инструкции PROG_COMMANDS.
  2. Разрешение чтения конфигурационного бита/бита защиты, используя инструкцию 8a.
  3. Для чтения всех конфигурационных бит и бит защиты используйте инструкцию программирования 8f.

Для чтения только расширенного конфигурационного байта используйте инструкцию программирования 8b.

Для чтения только старшего конфигурационного байта используйте инструкцию программирования 8c.

Для чтения только младшего конфигурационного байта используйте инструкцию программирования 8d.

Для чтения только бит защиты используйте инструкцию программирования 8e.

Чтение сигнатурных байт

  1. Ввод JTAG-инструкции PROG_COMMANDS.
  2. Разрешение чтения сигнатурного байта, используя инструкцию программирования 9a.
  3. Загрузка адреса $00 с помощью инструкции программирования 9b.
  4. Чтение первого сигнатурного байта при помощи инструкции программирования 9c.
  5. Повторяем шаги 3 и 4 с адресами $01 и $02 для чтения 2-го и 3-го сигнатурного байта, соответственно.

Чтение калибровочного байта

  1. Ввод JTAG-инструкции PROG_COMMANDS.
  2. Разрешение чтения калибровочного байта, используя инструкцию программирования 10a.
  3. Загрузка адреса $00, используя инструкцию программирования 10b.
  4. Чтение калибровочного байта, используя инструкцию программирования 10c.


 

<< Предыдущая страница Оглавление Следующая страница >>

Теги:

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.

Разное

Интересно

Для выпаивания микросхем в DIP корпусе пользуюсь проверенной технологией . Которая дает неплохие результаты , сохраняя при этом как микросхему так и дорожки печатной платы .

Похожие статьи