Параллельное программирование
Ввод режима программирования
Для ввода параллельного режима программирования необходимо выполнить действия в следующей последовательности:
- Подать напряжение 4.5 - 5.5В между VCC и GND, задержка не менее 100 мкс.
- Подаем лог. 0 на вход сброса "RESET" и переключаем вход XTAL1 не менее ШЕСТИ раз.
- Устанавливаем на входах "Prog_enable" (см. табл. 122) код "0000" и ожидаем 100 нс.
- Подаем напряжение 11.5 - 12.5В на "RESET". Если в течение 100 нс после подачи +12В на RESET произойдет изменения состояния входов Prog_enable, то это вызовет сбой режима программирования.
Обратите внимание, если используется внешний кварцевый резонатор или внешняя RC-цепь, то нет возможности приложить импульсы к XTAL1. В этом случае придерживаются следующей последовательности:
- Установить код "0000" на входах Prog_enable.
- Подать напряжение 4.5 - 5.5В между VCC и GND одновременно с подачей напряжения 11.5 - 12.5В на RESET.
<>Ожидаем 100 мкс.
- Перепрограммируем конфигурационные биты для выбора в качестве источника синхронизации внешнего генератора (CKSEL3:0 = 0b0000). Если запрограммированы биты защиты, то предварительно необходимо выполнить команду стирания кристалла (Chip Erase).
- Выходим из режима программирования выключением питания или путем подачи лог. 0 на RESET.
- Ввод режима программирования, описанного выше.
Рекомендации по повышению эффективности программирования
Загружаемые команды и адрес запоминаются в микроконтроллере в процессе программирования. Для эффективности программирования необходимо учитывать следующее:
- Если выполняется чтение или запись по нескольким адресам памяти, то команда может быть загружена однократно.
- Если записываемое значение равно $FF, то его запись можно пропустить, т.к. после выполнения команды стирания кристалла все ячейки ЭСППЗУ (если конфигурационный бит EESAVE запрограммирован) и флэш-памяти заполнены этим кодом.
- Старший байт адреса необходимо загружать только перед началом программирования или чтения новых 256 слов флэш-памяти и 256 байт ЭСППЗУ. Данное распространяется также на чтение сигнатурных байт.
Стирание кристалла
Выполнение команды стирания кристалла приводит к очистке содержимого флэш-памяти и ЭСППЗУ (1), а также бит защиты. Очистка бит защиты происходит только после полного стирания памяти программ. Конфигурационные биты при этом не изменяются. Стирание кристалла необходимо выполнять перед перепрограммированием флэш-памяти и/или ЭСППЗУ.
Прим.:
- Память ЭСППЗУ не изменяется, если конфигурационный бит EESAVE запрограммирован.
Ввод команды "Стирание кристалла":
- Установка на XA1, XA0 кода "10". Этим разрешается команда загрузки.
- Установка BS1 ="0".
- Установка данных "1000 0000". Это команда "Стирание кристалла".
- Формируем положительный фронт на XTAL1. Этим загружается команда.
- Формируем отрицательный фронт WR. Этим запускаем механизм стирания кристалла. RDY/BSY переходит в низкое состояние.
- Ожидаем, когда RDY/BSY перейдет в единичное состояние, а затем загружаем новую команду.
Программирование флэш-памяти
Флэш-память имеет постраничную организацию (см. табл. 124). Во время программирования флэш-памяти данные помещаются в страничный буфер. Это позволяет за один подход записать всю страницу. Ниже описана процедура программирования всей флэш-памяти:
- Загрузка команды "Запись флэш-памяти "
- Установка XA1, XA0 = "10". Этим разрешается загрузка команды.
- Установка BS1 = "0".
- Установка ДАННЫХ = "0001 0000". Это команда записи флэш-памяти.
- Формируем положительный фронт на XTAL1. Этим загружается команда.
- Загрузка младшего адресного байта
- Установка XA1, XA0 = "00". Это разрешает загрузку адреса.
- Установка BS1 = "0". Этим выбирается младший адрес.
- Установка ДАННЫХ = мл. байт адреса ($00 - $FF).
- Формируем положительный фронт на XTAL1. Этим загружается младший байт адреса.
- Загрузка младшего байта адреса.
- Установка XA1, XA0="01". Это разрешает загрузку данных.
- Установка ДАННЫХ = мл. байт адреса ($00 - $FF).
- Формируем положительный фронт на XTAL1. Этим загружается байт данных.
- Загрузка старшего байта данных
- Установка BS1 = "1". Этим выбирается старший байт данных.
- Установка XA1, XA0 = "01". Этим выбирается загрузка данных.
- Установка ДАННЫХ = ст. байт данных ($00 - $FF).
- Формируем положительный фронт на XTAL1. Этим загружается байт данных.
- Загрузка данных.
- Установка BS1 = "1". Этим выбирается старший байт данных.
- Формируем положительный фронт на PAGEL. Этим защелкиваются байты данных (см. форму сигналов на рисунке 137).
- Повторяем B-E до заполнения всего буфера или до завершения загрузки данных в пределах страницы.
Если младшие разряды адреса адресуют слова в пределах страницы, то старшие разряды адреса адресуют страницы в пределах флэш-памяти. Это иллюстрируется на рисунке 136. Обратите внимание, что если требуется менее 8-разрядов для адресации слов в странице (размер страницы < 256), то старшие разряды младшего адресного байта адресуют к странице при выполнении страничной записи.
G. Загрузка старшего адресного байта.
- Установка XA1, XA0 = "00". Этим разрешается загрузка адреса.
- Установка BS1 = "1". Этим выбирается старший байт адреса.
- Установка ДАННЫХ = ст. адресному байту ($00 - $FF).
- Формируем положительный фронт на XTAL1. Этим загружаем ст. адресный байт.
- Программируем страницу
- Установка BS1 = "0".
- Формируем отрицательный фронт на WR. Этим инициируем программирование всей страницы данных. RDY/BSY переходит в низкое состояние.
- Ожидаем появление лог. 1 на RDY/BSY (см. осциллограммы сигналов на рисунке 137).
- Повторяем B-H до завершения программирования всей флэш-памяти.
- Завершения программирования страницы.
- Установка XA1, XA0 = "10". Этим разрешается загрузка команды.
- Установка ДАННЫХ = "0000 0000". Это команда "нет операции".
- Формируем положительный фронт на XTAL1. Этим загружаем команду и сбрасываем внутренние сигналы записи.
Рисунок 136. Адресация флэш-памяти со страничной организацией
Прим.:
- PCPAGE и PCWORD представлены в таблице 125.
Рисунок 137. Осциллограммы сигналов программирования флэш-памяти
Прим.: "XX" означает, что не имеет значения, какие данные будут присутствовать. Указанные на рисунке символы соответствуют рассмотренному выше алгоритму.
Программирование ЭСППЗУ
ЭСППЗУ имеет страничную организацию (см. табл. 125). Во время программирования ЭСППЗУ программируемые данные размещаются в страничном буфере. Такая организация позволяет записать сразу одну страницу. Алгоритм программирования памяти данных ЭСППЗУ следующий (см. "Программирование флэш-памяти " для изучения подробностей загрузки команды, адреса и данных):
- A: Загрузка команды "0001 0001".
- G: Загрузка старшего байта адреса ($00 - $FF).
- B: Загрузка младшего байта адреса ($00 - $FF).
- C: Загрузка данных ($00 - $FF).
- E: Запись данных (положительный фронт на PAGEL).
- K: Повторяем 3-5 до заполнения всего буфера.
- L: Программирование страницы ЭСППЗУ:
- Установка BS1 = "0".
- Формируем отрицательный импульс на WR. Этим инициируется программирование страницы ЭСППЗУ. RDY/BSY переходит в низкое состояние.
- Ожидаем появление лог. 1 на RDY/BSY перед программированием следующей страницы (см. осциллограммы на рисунок 138).
Рисунок 138. Осциллограммы сигналов программирования ЭСППЗУ
Чтение флэш-памяти
Алгоритм чтения флэш-памяти следующий (подробности по загрузке команд и адреса "Программирование флэш-памяти"):
- A: Загрузка команды "0000 0010".
- G: Загрузка старшего байта адреса ($00 - $FF).
- B: Загрузка младшего байта адреса ($00 - $FF).
- Установка OE = "0" и BS1 = "0". С линий данных может быть считан младший байт.
- Установка BS1 = "1". С линий данных может быть считан старший байт.
- Установка OE = "1".
Чтение ЭСППЗУ
Алгоритм чтения ЭСППЗУ следующий (см. "Программирование флэш-памяти " для изучения подробностей загрузки команды и адреса):
- A: Загрузка команды "0000 0011".
- G: Загрузка старшего байта адреса ($00 - $FF).
- B: Загрузка младшего байта адреса ($00 - $FF).
- Установка OE = "0" и BS1 = "0". Байт данных ЭСППЗУ может быть считан с линий данных.
- Установка OE = "1".
Программирование младших конфигурационных бит
Алгоритм программирования младших конфигурационных бит следующий (подробности по загрузке команд и адреса см. в "Программирование флэш-памяти"):
- A: Загрузка команды "0100 0000".
- C: Загрузка младшего байта данных. Значение бита n = "0"/"1" соответствует программированию/стиранию конфигурационного бита.
- Установка BS1 = "0" и BS2 = "0".
- Формируем отрицательный фронт на WR и ожидаем появление лог.1 на RDY/BSY.
Программирование старших конфигурационных бит
Алгоритм программирования старших конфигурационных бит следующий (подробности по загрузке команд и адреса см. в "Программирование флэш-памяти"):
- A: Загрузка команды "0100 0000".
- C: Загрузка младшего байта данных. Значение бита n = "0"/"1" соответствует программированию/стиранию конфигурационного бита.
- Установка BS1 = "1" и BS2 = "0". Этим выбирается старший байт данных.
- Формируем отрицательный фронт на WR и ожидаем появление лог. 1 на RDY/BSY.
- Установка BS1 = "0". Этим выбирается мл. байт данных.
Программирование расширенных конфигурационных бит
Алгоритм программирования расширенных конфигурационных бит описано ниже(подробности по загрузке команд и адреса см. в "Программирование флэш-памяти"):
- A: Загрузка команды "0100 0000".
- C: Загрузка младшего байта данных. Значение бита n = "0"/"1" соответствует программированию/стиранию конфигурационного бита.
- Установка BS2 = "1" и BS1 = "0". Этим выбирается расширенный байт данных.
- Формируем отрицательный фронт на входе WR и ожидаем появление лог. 1 на RDY/BSY.
- Устанавливаем BS2 = "0". Этим выбирается младший байт данных.
Рисунок 139. Программирование конфигурационных бит
Программирование бит защит
Алгоритм программирования бит защиты следующий (подробности по загрузке команд и адреса см. в "Программирование флэш-памяти"):
- A: Загрузка команды "0010 0000".
- C: Загрузка младшего байта данных. Бит n = "0" программирует бит защиты.
- Формируем отрицательный фронт на WR и ожидаем появление лог. 1 на RDY/BSY. Биты защиты стираются выполнением только командой стирания кристалла.
Чтение конфигурационных бит и бит защиты
Алгоритм чтения конфигурационных бит и бит защиты следующий (подробности по загрузке команд и адреса см. в "Программирование флэш-памяти"):
- A: Загрузка команды "0000 0100".
- Установка OE = "0", BS2 = "0" и BS1 = "0". Состояние младших конфигурационных бит может быть считано с линий данных ("0" означает запрограммированное состояние).
- Установка OE = "0", BS2 = "1" и BS1 = "1". Состояние старших конфигурационных бит может быть считано с линий данных ("0" означает запрограммированное состояние).
- Установка OE = "0", BS2 = "1" и BS1 = "0". Состояние расширенных конфигурационных бит может быть считано с линий данных ("0" означает запрограммированное состояние).
- Установка OE = "0", BS2 = "0" и BS1 = "1". Состояние бит защиты может быть считано с линий данных ("0" означает запрограммированное состояние).
- Установка OE = "1".
Рисунок 140. Схема считывания конфигурационных бит и бит защиты под управлением сигналов BS1, BS2
Чтение сигнатурных байт
Алгоритм чтения сигнатурных байт следующий (подробности по загрузке команд и адреса см. в "Программирование флэш-памяти"):
- A: Загрузка команды "0000 1000".
- B: Загрузка младшего адресного байта ($00 - $02).
- Установка OE = "0", BS1 = "0". Выбранный сигнатурный байт может быть считан с линий данных.
- Установка OE = "1".
Чтение калибровочного байта
Алгоритм чтения калибровочного байта следующий (подробности по загрузке команд и адреса см. в "Программирование флэш-памяти"):
- A: Загрузка команды "0000 1000".
- B: Загрузка младшего байта данных.
- Установка OE = "0", BS1 = "1". Калибровочный байт может быть считан с линий данных.
- Установка OE = "1".
Характеристики параллельного программирования
Рисунок 141. Временная диаграмма параллельного программирования: общие требования к временной диаграмме
Рисунок 142. Временная диаграмма параллельного программирования: последовательность загрузки
Прим.: требования к временной диаграмме, показанные на рисунке 141 (в т.ч. tDVXH, tXHXL и tXLDX), также применимы и к операции загрузки.
Рисунок 143. Временная диаграмма параллельного программирования: последовательность чтения (в пределах одной страницы)
Прим.: требования к временной диаграмме, показанные на рисунке 141 (в т.ч. tDVXH, tXHXL и tXLDX), также применимы и к операции загрузки.
Таблица 127. Характеристики параллельного программирования при VCC = 5В ± 10%
Обозначение |
Параметр |
мин. |
ном. |
макс. |
Ед.изм. |
VPP |
Напряжение программирования |
11,5 |
|
12,5 |
В |
IPP |
Ток программирования |
|
|
250 |
мкА |
tDVXH |
Задержка до появления лог. 1 на XTAL1 для действительности данных и управления |
67 |
|
|
нс |
tXLXH |
Длительность положительного фронта на XTAL1 |
200 |
|
|
нс |
tXHXL |
Длительность единичного импульса на XTAL1 |
150 |
|
|
нс |
tXLDX |
Удержание данных и управления после установки лог. 0 на XTAL1 |
67 |
|
|
нс |
tXLWL |
Время между появлением лог. 0 на XTAL1и WR |
0 |
|
|
нс |
tXLPH |
Время между появлением лог. 0 на XTAL1 и лог. 1 на PAGEL |
0 |
|
|
нс |
tPLXH |
Время между появлением лог. 0 на PAGEL и лог. 1 на XTAL1 |
150 |
|
|
нс |
tBVPH |
Действительность BS1 до появления лог. 1 на PAGEL |
67 |
|
|
нс |
tPHPL |
Длительность единичного импульса на PAGEL |
150 |
|
|
нс |
tPLBX |
Удержание BS1 после появления лог. 0 на PAGEL |
67 |
|
|
нс |
tWLBX |
Удержание BS2/1 после подачи лог. 0 на WR |
67 |
|
|
нс |
tPLWL |
Время между появлением лог. 0 на PAGEL и лог. 0 на WR |
67 |
|
|
нс |
tBVWL |
Действительность BS1 до появления лог. 0 на WR |
67 |
|
|
нс |
tWLWH |
Длительность низкого уровня импульса WR |
150 |
|
|
нс |
tWLRL |
Время между появлением лог. 0 на WR и RDY/BSY |
0 |
|
1 |
мкс |
tWLRH |
Время между появление лог. 0 на WR и лог. 1 на RDY/BSY(1) |
3,7 |
|
4,5 |
мс |
tWLRH_CE |
Время между появлением лог.0 на WR и лог. 1 на RDY/BSY для стирания кристалла (Chip Erase)(2) |
7,5 |
|
9,0 |
мс |
tXLOL |
Время между появлением лог.0 на и лог. 0 на OE |
0 |
|
|
нс |
tBVDV |
Время между действительностью BS1 и данными |
0 |
|
250 |
нс |
tOLDV |
Задержка на появление действительных данных после установки лог. 0 на ОЕ |
|
|
250 |
нс |
tOHDZ |
Задержка на переход в высокоимпедансное состояние линий данных после установки лог. 1 на OE |
|
|
250 |
нс |
Прим.:
- tWLRH относится к командам записи флэш-памяти, ЭСППЗУ, конфигурационных бит и бит защиты.
- tWLRH_CE относится к команде стирания кристалла (Chip Erase).
|