2. Подать на WR отрицательный импульс. Это инициирует программирование байта. RDY/BSY переходит в низкое состояние.
3. Перед программированием следующего байта подождать, пока RDY/BSY перейдет в высокое состояние.
Загруженные адрес и данные сохраняются в устройстве после программирования, при этом процесс программирования упрощается.
* Команду программирования флэш памяти необходимо подать только перед программированием первого байта
* Старший байт адреса можно менять только перед программированием
следующей страницы памяти программ (256 слов).
ПРОГРАММИРОВАНИЕ ПАМЯТИ ДАННЫХ
Алгоритм программирования памяти данных следующий (обратитесь к программированию памяти программ за описанием загрузки команды, адреса и данных):
1. Загрузить команду '0001 0001'.
2. Загрузить младший адрес памяти данных (00h - 7Fh/FFh).
3. Загрузить младший байт данных
4. Подать отрицательный импульс на WR и подождать перевода RDY/BSY в 1.
Загрузка команды необходима только перед программированием первого байта.
ЧТЕНИЕ ПАМЯТИ ПРОГРАММ
Алгоритм чтения флэш памяти следующий (обратитесь к программированию памяти программ за описанием загрузки команды, адреса и данных):
1. Загрузить команду '0000 0010'
2. Загрузить младший байт адреса ($00 - $FF)
3. Загрузить старший байт адреса ($00 - $03/$07)
4. Установить OE в '0', BS в '0'. Теперь на выводах PC(1..0) PB(5..0) можно прочитать байт данных.
5. Установить BS в '1'. Теперь на выводах PB можно прочитать старший байт данных.
6. Установить OE в '1'.
Загрузка команды необходима только перед чтением первого байта.
ЧТЕНИЕ ПАМЯТИ ДАННЫХ
Алгоритм чтения памяти данных следующий (обратитесь к программированию памяти программ за описанием загрузки команды, адреса и данных):
1. Загрузить команду '0000 0011'
2. Загрузить младший байт адреса (00h - 7Fh)
3. Установить OE в '0', BS в '0'. Теперь на выводах PC(1..0) PB(5..0) можно прочитать байт данных.
4. Установить OE в '1'.
Загрузка команды необходима только перед чтением первого байта.
ПРОГРАММИРОВАНИЕ БИТОВ КОНФИГУРАЦИИ
Алгоритм программирования битов конфигурации следующий (обратитесь к программированию памяти программ за описанием загрузки команды, адреса и данных):
1. Загрузить команду '0100 0000'
2. Загрузить данные
Бит5=0 - программировать бит SPIEN, Бит5=1 - стереть бит SPIEN
Бит4=0 - программировать бит BODLEVEL,
Бит4=1 - стереть бит BODLEVEL
Бит3=0 - программировать бит BODEN,
Бит3=1 - стереть бит BODEN
Биты 2-0 =0 - программировать биты CKSEL,
Биты 2-0 =1 - стереть биты CKSEL
3. Подать на WR отрицательный импульс и ждать перехода RDY/BSY в единицу.
ПРОГРАММИРОВАНИЕ БИТОВ БЛОКИРОВКИ
Алгоритм программирования битов блокировки следующий (обратитесь к программированию памяти программ за описанием загрузки команды, адреса и данных):
1. Загрузить команду '0010 0000'
2. Загрузить данные
Бит2=0 - программировать бит LB2
Бит1=0 - программировать бит LB1
3. Подать на WR отрицательный импульс и ждать перехода RDY/BSY в единицу.
Биты блокировки стираются только при стирании всей микросхемы.
ЧТЕНИЕ БИТОВ КОНФИГУРАЦИИ И БЛОКИРОВКИ
Алгоритм чтения битов блокировки и конфигурации следующий (обратитесь к программированию памяти программ за описанием загрузки команды, адреса и данных):
1. Загрузить команду '0000 0100'
2. Установить OE в '0', BS в '0'. Теперь на выводах PC(1..0) PB(5..0) можно прочитать биты конфигурации.
Бит5 - SPIEN - '0' запрограммирован
Бит4 - BODLEVEL - '0' запрограммирован
Бит3 - BODEN - '0' запрограммирован
Биты 2-0 - CKSEL - '0' запрограммированы
3. Установить OE в '0', BS в '1'. Теперь на выводах PC(1..0) PB(5..0) можно прочитать биты блокировки.
Бит2 - LB2 - '0' запрограммирован
Бит1 - LB1 - '0' запрограммирован
3. Установить OE в '1'.
ЧТЕНИЕ БАЙТОВ СИГНАТУРЫ
Алгоритм чтения байтов сигнатуры следующий (обратитесь к программированию памяти программ за описанием загрузки команды, адреса и данных):
1. Загрузить команду 0000 1000
2. Загрузить младший байт адреса ($00 - $02), установить OE и BS в "0". После этого выбранный байт сигнатуры можно прочитать на выводах PC(1..0) PB(5..0).
3. Установить OE в "1".
Команду необходимо подавать только перед чтением первого байта.
Таблица 31. Характеристики параллельного программирования
T=21..27 ±C, Vcc=4.5-5.5V
Параметр | Min | Typ | Max | |||||||
tDVXH | Задерж.между установ. данных и сигн.упр. и высоким уровнем XTAL1 | 67 | nS | |||||||
tXHXL | Ширина импульса XTAL | 67 | nS | |||||||
tXLDH | Удержание данных и сигналов управления После установки XTAL1 = 1 | 67 | nS | |||||||
tBVVL | Удержание BS после установки WR | 0 | 67 | nS | ||||||
tWLWH | Ширина импульса WR | 67 | nS | |||||||
tWHRL | Задержка между WR | 1 и RDY/BSY | 0 ( | ) | 20 | nS | ||||
tXLOL | Задержка между XL | 0 и OE | 0 | 67 | nS | |||||
tOLDV | Задержка между XL | 0 и установкой данных | 20 | nS | ||||||
tWLRH | Задержка между WR | 0 и RDY/BSY | 1 ( | ) | 0.5 | 0.7 | 0.9 | mS |
Примечание: если tWHRL удерживается дольше, чем tWLRH импульс на RDY/BSY не появится.
ПОСЛЕДОВАТЕЛЬНАЯ ЗАГРУЗКА
Как память программ, так и память данных могут быть запрограммированы с использованием последовательной шины SPI, при этом вывод RESET должен быть подключен к земле. Последовательный интерфейс работает с выводами SCK, MOSI (вход) и MISO (выход). После подачи низкого уровня на RESET перед программированием/стиранием необходимо исполнить команду разрешения программирования. При программировании памяти данных, во внутренний алгоритм программирования встроен цикл стирания (только при последовательном программировании), поэтому нет необходимости в выполнении команды стирания памяти. Команда стирания микросхемы переводит все ячейки памяти программ и данных в состояние FFh. Флэш память программ и энергонезависимая память данных имеют отдельное адресное пространство: 000h - 3FFh/7FFh для памяти программ и 000h - 07Fh/0FFh для памяти данных. При программировании необходимо подавать внешнюю тактовую частоту на вывод XTAL1 или подключить внешний тактовый генератор к выводам XTAL1 и XTAL2. Минимальные длительности низкого и высокого уровня сигнала SCK определены следующим образом:
Низкий: > 2 периодов XTAL1
Высокий: > 2 периодов XTAL1
ПОДТВЕРЖДЕНИЕ ДАННЫХ
До завершения программировании нового байта, при чтении из памяти будет читаться значение FFh. После того как микросхема будет готова для записи следующего байта, при чтении можно прочитать записанное значение. Это используется для определения момента, когда можно записывать следующий байт. Этот способ не будет работать для байта FFh, поэтому для записи этого числа перед программированием следующего байта придется выждать по крайней мере 4mS. Поскольку после стирания ячейки памяти устанавливаются в FFh, при программировании ячейки, содержащие FFh можно пропускать. Это не применимо при перезаписи EEPROM без стирания памяти программ. В этом случае подтверждение не работает для данных FFh, для этого значения перед программированием следующего байта необходимо выждать 4mS.
АЛГОРИТМ ПОСЛЕДОВАТЕЛЬНОГО ПРОГРАММИРОВАНИЯ
Для программирования и проверки AT90S2333/4433 в режиме последовательного программирования рекомендуется следующая последовательность действий (см. формат четырех байтовой команды в табл.32):
1. Последовательность включения питания:
Подать напряжение питания между VCC и GND, при этом RESET и SCK должны быть установлены в '0'. Если кварцевый резонатор не подключен к выводам XTAL1 и XTAL2, подайте частоту на вывод XTAL1.(Если программатор не гарантирует установки SCK в '0' при подаче питания, после того как на SCK будет установлен '0', на RESET необходимо подать положительный импульс, и удерживать его по крайней мере два периода тактовой частоты после
установки вывода SCK в "0".
2. Подождать 20 mS и разрешить последовательное программирование послав команду разрешения на вывод MOSI/PB3.
3. При посылке команды разрешения программирования, второй байт последовательности (53h) будет возвращен при посылке третьего байта. В любом случае, должны быть посланы все четыре байта команды. Если число 53h не получено обратно, подайте положительный импульс на SCK и повторите команду разрешения программирования. Если после 32 попыток не будет получено число 53h, микросхема неисправна.
4. После подачи команды стирания (всегда при программировании памяти программ), необходимо подождать 10 mS, выдать положительный импульс на RESET и продолжить с шага 2.
5. Память программ и память данных программируются по одному байту выдачей адреса и данных в команде записи. Перед записью новых данных в EEPROM ячейки памяти перед записью новых данных автоматически стираются. Чтобы определить время, когда можно записывать следующий байт, используется подтверждение данных. При записи предварительно стертой микросхемы записывать ячейки содержащие FFh не обязательно.
6. Любую ячейку памяти можно проверить используя команду чтения, которая выдает содержимое указанной ячейки на последовательный вывод MISO/PB4.
7. По окончанию программирования вывод RESET может быть установлен в '1' для возобновления нормальной работы схемы.
8. Последовательность выключения питания (если необходимо) Установить XTAL1 в '0' (если не используется кварцевый резонатор)
Установить RESET в '1'.
Отключить питание
При записи последовательных данных в процессор данные читаются по нарастающему фронту сигнала CLK. При чтении данных из процессора данные читаются по спадающему фронту сигнала CLK.