F60-67 (1041605), страница 32
Текст из файла (страница 32)
Например, если требуется частота 100кГц, томожно взять R = 246кОм и C = 50пФ:f = 1.23(103)/RC = 1.23(103) / [246 * 50] = 0.1МГц = 100кГцXFCN ≥ log2(f/25кГц)XFCN ≥ log2(100кГц/25кГц) = log2(4)XFCN ≥ 2, или код 01015.6. Пример использования внешнего генератора с конденсаторомЕсли бы для генерации системной тактовой частоты МК использовался внешний конденсатор, то схемабыла бы такой, как показано на рис.15.1, вариант 3. Емкость конденсатора должна быть не более 100пФ, однакоиспользование конденсатора с очень маленькой емкостью приведет к увеличению погрешности установкичастоты вследствие влияния паразитной емкости печатной платы.
Чтобы определить значение битовуправления частотой внешнего генератора (XFCN) регистра OSCXCN, сначала необходимо выбрать емкостьиспользуемого конденсатора и вычислить частоту генерации из уравнения, приведенного ниже. Например, дляVDD = 3.0В и C = 50пФ получим:f = KF / (C * VDD) = KF / (50 * 3)f = KF / 150Если требуется получить частоту около 50кГц, то из таблицы на рис.15.5 необходимо выбрать KF = 7.7:f = 7.7 /150 = 0.051МГц, или 51кГцПоэтому, значение битов XFCN для этого примера составляет 010b.175Ред. 1.2C8051F060/1/2/3/4/5/6/7ПРИМЕЧАНИЯРед. 1.2176C8051F060/1/2/3/4/5/6/716.
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.2C8051F060/1/2/3/4/5/6/7Управление временными интервалами операций записи и стирания осуществляется автоматическиаппаратными средствами. Во время программирования или стирания Flash-памяти выполнение программыприостанавливается.Таблица 16.1. Электрические параметры FLASH-памятиVDD = 2.7 - 3.6В, Т = -40ºC … +85ºC, если не указано иное.ПАРАМЕТРУСЛОВИЯМин.Тип.Макс.Размер Flash-памяти*1C8051F060/1/2/3/4/565664*2Размер Flash-памяти*1C8051F066/732896Число циклов программирования20000 100000Время цикла стирания101214Время цикла записи4050601* Включая 128-байтный сектор сверхоперативного ЗУ (СОЗУ).*2 1024-байтный сектор с адресами 0xFC00 – 0xFFFF зарезервирован.Ед. изм.БайтБайтСтирание/Записьмсмкс16.2. Долговременное хранение данныхFlash-память может использоваться не только для хранения программного кода, но и длядолговременного хранения данных.
Это позволяет рассчитывать и сохранять во время выполнения программытакие данные, как калибровочные коэффициенты. Данные записываются с использованием команды MOVX(как описано в предыдущем разделе) и считываются с использованием команды MOVC.МК данного семейства содержат дополнительный 128-байтный сектор Flash-памяти, предназначенныйдля долговременного хранения данных. По причине небольшого размера этого сектора его особенно выгодноиспользовать в качестве долговременной сверхбыстродействующей памяти общего назначения. Несмотря на то,что во Flash-память можно записывать по одному байту за раз, сначала необходимо стереть весь сектор. Чтобыизменить один байт в многобайтном наборе данных, необходимо поместить данные на временное хранение вкакую-либо память. После того, как сектор стерт, данные обновляются и возвращаются в исходный сектор.
128байтный размер сектора позволяет организовать процесс обновления данных без расходования пространствапамяти программ или ОЗУ. Этот 128-байтный сектор отображен (в режиме дублирования) на 64-КбайтнуюFlash-память и занимает диапазон адресов 0x00 - 0x7F (см. рис.16.1 и рис.16.2). Доступ к этому 128-байтномусектору возможен только тогда, когда бит SFLE регистра PSCTL установлен в 1. Выполнение программногокода из этого 128-байтного сектора сверхоперативной памяти не допускается.Ред. 1.2178C8051F060/1/2/3/4/5/6/716.3.
Защита FLASH-памятиCIP-51 имеет опции защиты, позволяющие защитить Flash-память от случайной модификации состороны программы и исключить возможность просмотра патентованного программного кода и констант. Битыразрешения записи памяти программ (PSCTL.0) и разрешения стирания памяти программ (PSCTL.1) защищаютFlash-память от случайной модификации со стороны программы. Эти биты должны быть явно установлены в 1,чтобы программа могла модифицировать или стирать Flash-память. Дополнительные функции защитыпредотвращают чтение и изменение патентованного программного кода и констант посредством JTAGинтерфейса или программы, запущенной на системном контроллере.Установка байтов блокировки защиты защищает Flash-память от чтения и изменения посредствомJTAG-интерфейса. Каждый бит в байте блокировки защиты защищает один 8-Кбайтный блок памяти.
Сбросбита в 0 в байте блокировки чтения защищает соответствующий блок Flash-памяти от чтения посредствомJTAG-интерфейса. Сброс бита в 0 в байте блокировки записи/стирания защищает блок от записи и/илистирания посредством JTAG-интерфейса. 128-байтный сектор сверхоперативной памяти блокируется толькотогда, когда заблокированы все другие секторы.В МК C8051F060/1/2/3/4/5 байты блокировки защиты находятся по адресам 0xFBFE (байт блокировкизаписи/стирания) и 0xFBFF (байт блокировки чтения), как показано на рис.16.1. В МК C8051F066/7 байтыблокировки защиты находятся по адресам 0x7FFE (байт блокировки записи/стирания) и 0x7FFF (байтблокировки чтения), как показано на рис.16.2. 512-байтный сектор, содержащий байты защиты, можнопрограммно записывать, но нельзя программно стирать.
Операция чтения заблокированных для чтения байтвозвратит в качестве результата неопределенные данные. Отладка кода в заблокированном для чтения секторе спомощью JTAG-интерфейса невозможна. Биты блокировки всегда могут быть прочитаны и сброшены в 0независимо от параметров защиты блока, содержащего байты защиты. Это позволяет защитить дополнительныеблоки уже после того, как был защищен блок, содержащий байты защиты.Важное примечание: Чтобы гарантировать защиту от внешнего доступа, необходимозаблокировать для операций записи/стирания блок памяти, содержащий байты блокировки. В 64Кбайтных МК (C8051F060/1/2/3/4/5) страница, содержащая байты защиты (0xFA00 – 0xFBFF),блокируется путем сброса в 0 бита 7 байта блокировки записи/стирания. В 32-Кбайтных МК(C8051F066/7) страница, содержащая байты защиты (0x7E00 – 0x7FFF), блокируется путем сброса в 0бита 3 байта блокировки записи/стирания.