Бродин В. Б., Шагурин И. И. Микроконтроллеры (1999) (1095894), страница 24
Текст из файла (страница 24)
Автопрограммнрование и программирование с помощью программатора допускаются при совпадении кодов защиты. Остальные режимы программирования и контрольное чтение ПЗУ не допускаются. Считывание из ПЗУ при выполнении п >о аммы пос лающей из внешней памяти не доп скается. Допускается программирование и контрольное чтение ПЗУ, кроме программирования через последовательный порт и опе ативного п амму ования. Допускается программирование и контрольное чтение ПЗУ при совпадении кодов защиты. Считывание из ПЗУ при выполнении программы, поступающей из внешней памяти, не доп скается. Другой механизм защиты используется для предотвращения обращения микроконтроллера к внешней памяти. Микроконтроллер имеет специальный служебный регистр 1) БЕЕ (рис.
1А7), который содержит следу|ощие биты: 1зЕ1 — занрешает при РЕ1- 1 выборку команд из внешней памяти; 1)Е1Р— запрещает при РЕП - 1 запись-считывание данных из внешней па- мяти, в том числе и контрольное чтение. е 3 2 ! 0 Резерв РЕ! РЕР Резерв ОРР РЗГК (адрес при считывании 1РРОН) Рио. ! .47. Формат регистра 03рй ПРОГРАММИРОВАНИЕ ИНТЕРФЕЙО 116 МИКРОКОНТРОЛЛЕРЫ: АРХИТ При выполнении запрещенных обращений к внешней памяти микроконтроллер сбрасывается в начальное состояние. Данный регистр содержит также бит ОГО, который управляет устройством контроля частоты тактовых импульсов.
При ОРП - 1 выполняется сброс микроконтроллера в начальное состояние, если частота РЕ упадет ниже 100 кГц. Значения битов ПЕ1, РЕП, ОРЭ устанавливаются при программировании с помощью программатора и не могут быть изменены в дальнейшем. Допускается только считывание содержимого этого регистра с целью контроля функционирования микроконтроллера. Рассмотрим особенности реализации различных режимов программирова- ния и контрольного считывания. Автопрограммирование выполняется пользователем с помощью простой схемы, приведенной на рис. 1.48. Данные, вводимые в ячейки внутреннего ПЗ У с адресами ОГ2000Н..ОРОРРРН, поступают по 8-разрядной мультиплексированной шине иэ внешнего репрограммируемого ПЗУ (РППЗУ), где они должны располагаться в адресном пространстве 4000Н..ОВРРРН. Порт РЗ служит для выдачи младшего байта адреса и ввода записываемого в ПЗУ байта данных.
Шесть разрядов старшего байта адреса поступают на выводы порта Р4, а два старших разряда — на выводы Р1.1, Р1.2 порта Р1. Используются также два вывода порта Р2: на вывод Р2.7 поступает выходной сигнал РАСТ№ - О, когда микроконтроллер выполняет программирование ПЗУ; на выводе Р2.0 формируется сигнал РЧЕК - О, если при проверке правильности программирования очередного бита обнаруживается ошибка. Для визуального контроля хода программирования к этим выводам обычно подключаются индикаторные светодиоды. На входы порта РО подаются высокий Чп - 5 В и низкий Чз 0 потенциалы, обеспечивающие поступление кода режима автопрограммирования РМОПЕ - 1100.
Ряд выводов порта Р5 используется для подачи сигналов, управлящих обменом данными между микроконтроллером и внешней РППЗУ: вывод Р5.0 служит для выдачи адресного строба АЕЕ - 1, разрешающего запись младшего разряда адреса в буферный регистр; на выводе Р5.3 формируется сигнал считывания КП№- О, разрешающий выдачу байта данных на выходы П7..0 РППЗУ; вывод Р5.8 подключается к высокому потенциалу Чп, чтобы обеспечить значение сигнала готовности КЕАПЧ - 1; вывод Р5.7 подключается к низкому потенциалу Чз, чтобы получить значение сигнала разрядности шины В1Ч - О, указывающего на использование 8-разрядной шины данных. Подключение остальных выводов показано на рис. 1А8, причем неиспользуемые входы микроконтроллера подключаются к низкому потенциалу Чз = О, а неиспользуемые выходы остаются неподключенными.
Е1тобы обеспечить при автопрограммировании необходимую длительность цикла, необходимо ввести в микроконтроллер 18-разрядный код, старший МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА МСЕ-80 117 Чи Чи „0 Хтбь ! Ч1 100 К 1 аезш 1"" 2 ХТА1. 2 ЙЕЗЕТЕ Р67 0 6 (ЙЕАОЧ) НМ) Р5 7 (В)ч) Р5.1,2,4,5 1 8 ч 45 О В Р5 «125 В ! ч, Р17 3,1 ВРЗ 0 ч 270 БУфеРный рбгнстр Ш7 (РАСТЕ) ч 270 8 1Г ЛГ Р2 б Р25 1 Р2 0 (РЧЕЙ) 87С(966(т Рис.1.48.
Включение микроконтроллера ЗХС19бйТ а режиме автолрограммироааниа разряд которого равен 1, а пятнадцать младших разрядов содержат число РРЮ=(0, 6944 ' Рт)-1, где Рт — тактовая частота в МГц. Этот код должен быть записан в ячейках внешнего РППЗУ с адресами 14Н, 15Н. В ячейках с адресамн ОС020Н„ОС02РН записывается 16-байтный ключевой код. После подключения к схеме в соответствии с вышеописанной процедурой напряжений Чп, Чпр микроконтроллер автоматически формирует необходимые адреса н производит считывание из РППЗУ числа РРЪЧ, кода защиты и содержимого ячеек с адресами 400ОН..ОВРРГН, которые заносятся в соответствующие ячейки внутреннего ПЗУ. При этом время программирования 32 Кбайт внутреннего ПЗУ составит около 10 с при тактовой частоте Рт-6..8 МГц.
Необходимо отметить, что значение байта РССВ при автопрограммировании должно соответствовать параметрам шины данных, связывающей ч« ЕАЕ ч«, ч„« Р07 РО 6 РО 5 Р04 чм Р) 2 (А)5) Р) 1 (А)4) Р4.6, 7 Р45(АО) Р4 4 (А)2) Р43 (А(1) Р4.2 (А10) Р4 1 (А9) Р40 (А8) Р5 0 (А).Е) Р3.7 (АО7) РЗ б (Аоб) Р3.5 (АО5) РЗ 4 (АО4) РЗ 3 (АОЗ) Р3.2 (АО2) РЗ.! (АОП РЗ 0 (АОО) 1.Е ОЕЕ О7 О7 Об 1)6 О5 О5 О4 оз 02 О2 О! О) ОО ОО ОЕ СЕ А)5 А!4 А)3 А)2 А)1 АЮ А9 А8 РППЗУ 64КН8 А7 Аб А5 А4 АЗ А2 А) АО ОО О) О2 ОЗ О4 О5 Об О7 118 МИЮ'ОЕОНТРОЛЛЕРЫ: АРХИТЕЕТТРА ЛРОГРАММИРОЕАНИ ИНТЕРФЕЙС микроконтроллер и внешнее РППЗУ. В исходном состоянии (без записи нового значения РССВ во внутреннее тест-ПЗУ с помощью программатора) байт РССВ имеет значение ОРРН, что соответствует отсутствию защиты в режиме программирования.
При этом разрядность шины данных задается сигналом ВЖ на выводе Р5.7, который должен иметь значение Втт' 0 (8- разрядная шина), выдача микроконтроллером адреса на мультиплексированную шину АО7..0 стробируется сигналом А).Е, а число тактов ожидания определяется поступлением сигнала КЕАОУ. Следует иметь в виду, что из-за помех, возникающих в процессе автопрограммировання, возможна запись в ПЗУ неправильного кода защиты. Если при этом байт конфигурации предусматривает проверку кода защиты при последутощей работе микроконтроллера, то обращение к внутреннему ПЗУ окааывается невозможным. В результате микроконтроллер становится неработоспособным.
Чтобы предотвратить такую ситуацию, рекомендуется выполнять программирование ПЗУ в два этапа. На первом этапе программируется все содержимое ПЗУ, кроме байта конфигурации. При этом в ячейку внешнего РППЗУ с адресом 4018Н записывается число ОРРН, в результате чего ячейка внутреннего ПЗУ с адресом ОГ2018Н, где должен быть записан байт конфигурации ССВО, сохраняет начальное состояние ОГГН. Если верификация подтвердит правильность записанного кода защиты, выполняется второй этап программирования, когда во внутреннее ПЗУ заносится необходимое значение байта конфигурации ССВО. При подключении микроконтроллера к программатору на выводы Р0.7.А порта РО подается код РМОРЕ " 0101.
На вывод ХТА(.1 поступает тактовый сигнал от программатора. Порты РЗ, Р4 служат для мультнплексированной передачи адресов и данных. В качестве выходных каскадов эти порты использутот транзисторы вс открытым стоком», поэтому для получения высокого потенциала на выходе каждый вывод соединяется через резистор сопротивлением 10 кОм к напряжению питания Чп. В первой фазе каждого цикла программатор задает адрес, по которому производится запись во внутреннее ПЗУ (программирование) или считывание его содержимого для верификации (контрольное чтение), во второй фазе данные вводятся в микроконтроллер или считываются из него, причем одновременно два байта.
Программатор выдает разряды А15..1 адреса передаваемой пары байтов, которые поступают в микроконтроллер через выводы Р4.7..0, РЗ.7..1. При этом на вывод РЗ.О подается сигнал, указывающий тип выполняемого цикла: программирование ПЗУ при РЗ.О - 1, контрольное чтение при РЗ.О - О. В соответствии с поступившей в первой фазе цикла информацией микроконтроллер формирует адреса выбираемых ячеек ПЗУ и во второй фазе цикла осуществляет прием (чтение) записываемых данных или выдачу (запись) содержимого этих ячеек в программатор для МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА МСВ-96 119 последующей верификации.
При этом выводы Р2.1, 2, 4 порта Р2 использу- ются для ввода управляющих сигналов: РАКЕ№ — адресный строб, который формируется программатором при выдаче адреса в первой фазе цикла и подается на вывод Р2.1; при поступлении низкого уровня сигнала РАКЕ№ - 0 микроконтроллер через порты РЗ, Р4 принимает разряды А15..1 адреса и информацию о типе выполняемого цикла; РКОО№ — сигнал передачи данных выдается программатором во второй фазе цикла и поступает на вывод Р2.2; когда устанавливается низкий уровень сигнала РКОО№ = О, то при программировании микроконтроллер считывает поступающие данные через порты РЗ, Р4 и записывает их в адресованные ячейки ПЗУ, при контрольном чтении выдает через эти порты содержимое пары адресованных ячеек; АПА(С№ — сигнал автоинкремента подается от программатора на вывод Р2.4 и проверяется микроконтроллером после программирования очередной пары ячеек ПЗУ или после выдачи их содержимого при контрольном чтении; при значении сигнала АПН'С№ - 0 производится увеличение на два сформированных микроконтроллером адресов пары ячеек, а затем выполняется запись или считывание содержимого двух следующих ячеек ПЗУ.
Таким образом при последующих циклах записи или считывания ПЗУ не требуется передача адресов, благодаря чему значительно сокращается время программирования и контрольного чтения. После каждого цикла программирования микроконтроллер выполняет проверку правильности записи. Результаты проверки передаются в программатор через выводы Р2.0, Р2.6 порта Р2. На эти выводы поступают следующие сигналы: РЧЕК вЂ” сигнал на выводе Р2.0 принимает значение РЧЕК 1, если в данном цикле запись содержимого двух ячеек ПЗУ проведена без ошибок, или значение РЧЕК - О, если при проверке обнаружена ошибка; СРЧЕК вЂ” сигнал на выводе Р2.8 принимает значение СРЧЕК 1 после завершения программирования, если при контроле не было обнаружено ошибок ни в одной ячейке ПЗУ, при наличии ошибок устанавливается значение СРЧЕК О.
С помощью программатора производится также установка единичных значений битов ОРО, ОЕО, ОЕ1 в регистре 1)ЯРК (см. рис. 1.47). Для этого необходимо выполнить три цикла программирования, вводя в микроконтроллер следутощие числа: 0001Н по адресу 0778Н (установка бита ОГО, 0004 Н по адресу 0758 Н (установка бита ОЕО), 0008Н по адресу 0718Н (установка бита ОЕ1). Отметим, что установка бита ОЕО запрещает контрольное чтение содержимого ПЗУ. Следует помнить, что после программи- 120 МИКРОКОНТРОЛЛЕРЫ' АРХИТЕКТУРА ПРОГРАММИРОВАНИЕ ИНТЕРФЕЙС рования значения этих битов не могут быть изменены; допускается только считывание их значений при обращении к регистру ПЗРК (адрес 1РР6Н). Программатор позволяет также считать из тест-ПЗУ микроконтроллера записанные при его изготовлении идентификатор и коэффициенты ЗЧ, РЧ, указывающие необходимые значения напряжений питания ЧГГ и программирования Чпр.
Идентификатор представляет собой 16-разрядный код, который считывается программатором при обращении по адресу 0070Н и для модели 87С196НТ равен 87АРН. Коэффициент ЗЧ - 40Н - 64 считывается по адресу 0072Н, коэффициент РЧ - ОАОН - 160 — по адресу 0073Н. Эти коэффициенты позволяют определить напряжения Чп, Чпр (в вольтах) с помощью выражений: Чп = (20 х ЬЧ / 256) В, Чпр = (20 х РЧ / 266) В. Перед началом программирования и контрольного чтения микроконтроллер проверяет значения двух старших битов в байте конфигурации РССВ, которые определяют режим защиты ПЗУ (см. табл.