Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Stenin Lab / C8051F60-67-устройство МК.pdf
Скачиваний:
150
Добавлен:
10.02.2015
Размер:
5.19 Mб
Скачать

C8051F060/1/2/3/4/5/6/7

16. FLASH-ПАМЯТЬ

МК C8051F060/1/2/3/4/5/6/7 содержат встроенную перепрограммируемую Flash-память для хранения программного кода и долговременного хранения данных. МК C8051F060/1/2/3/4/5 содержат 64k + 128 байт Flash-памяти. МК C8051F066/7 содержат 32k + 128 байт Flash-памяти. Flash-память может программироваться внутрисистемно по одному байту за раз посредством JTAG-интерфейса или из программы, используя команду MOVX. Если Flash-бит сброшен в 0, то для того, чтобы установить его в 1, его необходимо стереть. Байты перед программированием обычно стираются (устанавливаются в 0xFF). Временные интервалы операций записи и стирания, необходимые для корректной работы, устанавливаются автоматически аппаратными средствами. Опрос данных для определения завершения операции записи/стирания не требуется. Процессорное ядро останавливается во время операций записи/стирания Flash-памяти, а периферийные модули остаются активными. Прерывания, возникающие во время записи/стирания Flash-памяти, будут обработаны после окончания операций с Flash-памятью в порядке, определяемом их уровнями приоритета. Электрические параметры Flash-памяти приведены в таблице 16.1.

16.1. Программирование Flash-памяти

Самый простой способ программирования Flash-памяти заключается в использовании JTAGинтерфейса и средств программирования, предлагаемых фирмой Silicon Labs или независимыми производителями. Это единственный способ программирования неинициализированного МК. Подробная информация об использовании JTAG команд для программирования Flash-памяти приведена в разделе 26.

Flash-память можно программировать программным путем, используя команду MOVX с адресом и байтом данных в качестве обычных операндов. Перед записью во Flash-память с использованием команды MOVX операции записи Flash-памяти необходимо разрешить установкой в 1 бита разрешения записи памяти программ PSWE (PSCTL.0). Это приведет к тому, что операции записи с помощью команды MOVX будут относиться не к памяти XRAM (устанавливается по умолчанию), а к Flash-памяти. Бит PSWE остается установленным в 1 до сброса его программным путем. Чтобы предотвратить случайную запись во Flash-память, рекомендуется запрещать прерывания на все время, пока бит PSWE установлен в 1.

Для чтения Flash-памяти следует использовать команду MOVC. Чтение с использованием команды MOVX всегда относится к памяти XRAM, независимо от состояния бита PSWE.

Примечание: Чтобы гарантировать целостность содержимого Flash-памяти, строго рекомендуется включить схему слежения за напряжением питания, соединив вывод MOVEN с шиной питания VDD и установив в 1 бит PORSF в регистре RSTSRC. Это касается любых систем, которые содержат код, осуществляющий запись/стирание Flash-памяти программным путем.

Запись во Flash-память может сбросить в 0 биты, но не может установить их в 1. Только операция стирания может установить в 1 биты во Flash-памяти. Поэтому ячейку памяти, которую требуется

запрограммировать, необходимо предварительно стереть, чтобы можно было записать новое значение.

Flash-память организована секторами по 512 байт. Операция стирания применяется ко всему сектору целиком (все байты в секторе устанавливаются в 0xFF). Ниже приведен алгоритм программирования Flash-памяти программным путем:

1.Запретить прерывания.

2.Установить в 1 бит FLWE (FLSCL.0) для разрешения записи/стирания Flash-памяти программным путем.

3.Установить в 1 бит PSEE (PSCTL.1) для разрешения стирания Flash-памяти.

4.Установить в 1 бит PSWE (PSCTL.0) для перенаправления действия команд MOVX на запись Flash-памяти.

5.Использовать команду MOVX для записи байта данных в любую ячейку внутри 512-байтного сектора, который таким образом будет стерт.

6.Сбросить в 0 бит PSEE (PSCTL.1) для запрещения стирания Flash-сектора

7.Использовать команду MOVX для записи байта данных по нужному адресу внутри стертого 512-байтного сектора. Повторять этот байт до тех пор, пока все необходимые байты не будут записаны (внутри данного сектора).

8.Сбросить в 0 бит PSWE (PSCTL.0) для перенаправления действия команд MOVX на пространство памяти данных XRAM.

9.Разрешить прерывания.

177

Ред. 1.2