Журнал Радио 9 номер 2000 год. МИКРОПРОЦЕССОРНАЯ ТЕХНИКА

Журнал Радио 9 номер 2000 год. МИКРОПРОЦЕССОРНАЯ ТЕХНИКА ПРОГРАММИРОВАНИЕ ПОСЛЕДОВАТЕЛЬНЫХ МИКРОСХЕМ ПАМЯТИ А, ГОНЧАРЕНКО, г. Одесса, Украина   Микросхемы энергонезависимой памяти с последовательным вводом и выводом данных сегодня широко применяют для запоминания установленных режимов и фиксированных настроек в телевизорах, магнитолах и другой бытовой технике. При ее ремонте нередко возникает необходимость прочитать содержимое таких микросхем или записать в них новые данные. Обычно это делают с помощью специальных устройств - программаторов. Но для того, чтобы запрограммировать одну-две микросхемы в любительских условиях, приобретать довольно дорогой программатор невыгодно. С этим вполне справится обычный персональный компьютер.

Одна из наиболее распространенных микросхем энергонезависимой памяти - АТ93С46 фирмы ATMEL. Для связи с микроконтроллером она снабжена последовательным интерфейсом, состоящим всего из трех одноразрядных шин SK (синхронизация), D1 (вход данных) и DO (выход данных). К этим шинам подключают параллельно все имеющиеся в устройстве узлы с таким интерфейсом. Данные передают побитно. сопровождая каждый бит синхроимпульсом SK.

В микросхеме АТ93С46 предусмотрены также входы CS (выбор кристалла) для перевода ее в активное состояние и ORG (организация). Если последний соединен с источником питания, в микросхеме образуются 64 шестнадцатиразрядные ячейки памяти, если с общим проводом - 128 восьмиразрядных ячеек.

Для чтения содержимого или программирования с помощью компьютера микросхему АТ93С46 следует подключить к розетке порта LPT1 или LPT2, как показано на рисунке. Так как вход ORG микросхемы соединен с общим проводом, организация памяти - восьмиразрядная. Напряжение +5 В рекомендуется подать от внешнего источника, но можно воспользоваться и любой свободной выходной линией порта, программно установив на ней высокий логический уровень.

Обслуживающая программа, приведенная в таблице, написана на БЕЙСИКе (компилятор Power Basic версии 2.10f). Программа начинает работу с запроса номера порта, к которому подключена микросхема. В зависимости от ответа оператора переменной port при спаивается значение базового адреса выбранного порта: 888 (шестнадцатиричное 378Н) для LPT1 или 632 (шестнадцатиричное 278Н) для LPT2. Командой out port.О на всех выводах шины данных порта устанавливается напряжение низкого логического уровня.

Далее оператору предлагается выбрать режим чтения данных из микросхемы или записи в нее и ввести имя файла, в котором будет сохранена считанная или находится подготовленная к записи информация. Тем, кто пользуется другими версиями БЕЙСИКа, следует иметь в виду, что синтаксис операторов для работы с файлами может быть иным. Прочитанные из микросхемы или записываемые в нее данные программа не только сохраняет в файле или читает из него, но и выводит на экран монитора в виде шестнадцатиричного дампа. Процедуры чтения и записи данных несколько различаются, но используют для "общения" с микросхемой одни и те же операции, оформленные в программе в виде функций:

cs(num) устанавливает логический уровень сигнала, подаваемого на вход CS микросхемы памяти, в соответствии со значением своего параметра (0 или 1);
sk(num) выполняет аналогичную операцию для входа SK;
skout формирует импульс синхронизации;
del и del1 формируют интервалы времени, равные соответственно длительности синхроимпульсов и пауз между ними. Максимальная частота синхроимпульсов для разных модификаций микросхемы АТ93С46 может находиться в пределах от 0.25 до 2 МГц, минимальная - равна нулю. При необходимости частоту генерируемых компьютером импульсов можно изменить, задав в функциях del и del1 другие предельные значения переменной i;
shiftin читает байт данных с выхода DO микросхемы;
dinchip(num). shiftout(address) и shiftoutd(odata) служат для записи информации в микросхему через вход DI. Первая заносит в нее один бит, значение которого задано параметром num. Вторая записывает семиразрядный адрес, последняя - байт данных.

Внутреннее устройство управления микросхемы АТ93С46 принимает и выполняет команды, поступающие по линии DI. Каждая команда начинается стартовым битом, равным логической 1. за которым следуют два бита кода операции и необходимое число битов адреса ячейки памяти и данных. Перед подачей каждой команды на входе CS необходимо установить высокий логический уровень, после ее завершения - низкий.

Команда чтения данных (READ) имеет код операции 10. за которым следует адрес ячейки. В ответ микросхема выдаст на выход DO хранящийся по указанному адресу байт данных, который можно прочитать с помощью функции shiftin.

После включения питания микросхема АТ93С46 автоматически переходит в режим, в котором стирание и запись данных запрещены, чем предотвращается их случайная порча. Поэтому перед тем. как записывать в нее данные, необходимо разрешить эту операцию, подав команду EWEN - Erase/Write Enable (разрешить стирание/запись). Ее код операции - 00. за которым следует адрес 11 ххххх. Значения последних пяти битов адреса команда EWEN не анализирует, и они могут быть любыми. Однажды поданная команда EWEN действует до ее отмены специальной командой или до выключения питания микросхемы.

Команда записи (WRITE) имеет код операции 01. за которым следуют адрес ячейки и записываемый байт данных. Получив такую команду, устройство управления начинает выполнять внутренний цикл записи, длительность которого не более 10 мс. До его окончания микросхема не реагирует на новые команды. Если в это время подать на вход CS короткий импульс низкого логического уровня, на выходе DO установится и будет сохраняться до завершения цикла низкий уровень. Как только он сменится высоким, необходимо установить низкий уровень на входе CS. после чего микросхема готова к приему новых команд. Если упомянутый импульс на вход CS не подавать или подать его после завершения цикла записи, состояние выхода DO останется высокоимпедансным.

Кроме рассмотренных команд имеются и другие: запретить стирание/запись (EWDS). записать константу во все ячейки памяти (WRAL), стереть все ячейки памяти (ERAL). На практике их применяют сравнительно редко. Описание всех команд, как и другие подробности устройства и работы микросхемы АТ93С46. можно найти в [ 1, 2].

Описанную программу с небольшими доработками можно применить для программирования любой микросхемы памяти семейства АТ9ЗСхх, задав соответствующий интервал адресов. Например, микросхема АТ93С56 содержит 256. а АТ93С66 - 512 восьмиразрядных ячеек памяти. На сайте ftp.paguo.ru можно найти файл 93X16.EXE - вариант программы, предназначенный для работы с микросхемой АТ93С46 в шестнадцатиразрядном режиме (вход ORG соединен с источником питания).


Показать в полный размер

ЛИТЕРАТУРА
1. Nonvolatile Memory Data Book. - ATM EL. May 1996.
2. Гребнев В.В. Микросхемы энергонезависимой памяти фирмы ATMEL. - С.-Пб.: ЭФО. 1997.

Вернуться к содержанию журнала "Радио" 9 номер 2000 год







Рекомендуемый контент




Copyright © 2010-2019 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.