Смекни!
smekni.com

AVR микроконтроллер AT90S2333 фирмы Atmel (стр. 19 из 22)

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.