Работа с аппаратным интерфейсом SPI микроконтроллеров семейств AVR и MCS51 на примере обмена данными с микросхемами энергонезависисой памяти семейства DataFlash В этом примере мы рассмотрим работу с аппаратным интерфейсом SPI микроконтроллеров семейств AVR (листинг) и MCS51 (листинг) фирмы Atmel. Написанные на ассемблере программы (драйверы) включают в себя инициализацию интерфейса SPI, подпрограммы обмена по SPI с микросхемой памяти (пересылка байта, операция со страницей памяти, ожидание сигнала готовности) и реализацию обмена между контроллером и управляющим компьютером. В качестве микросхемы памяти используется DataFlash фирмы Adesto technologies (ранее Atmel). Программы тестировались с отладочными платами ATSTK500 и TB51M/AVR. Вывод SCK микросхемы памяти соединен с соответствующим выводом микрокнотроллера, вывод SI микросхемы памяти с выводом MOSI контроллера, вывод SO с выводом MISO. Вывод !CS микросхемы памяти соединен с соотвествующим выводом контроллера (PB2 для AVR, P1.4 для MCS51). Индикаторный светодиод подключен к выводу PD7 или P1.0. Низкий уровень на этом выводе сигнализирует о готовности контроллера к принятию команды выбора операции от терминала. Внешниее прерывание N0 используется для завершения операции записи и инициации передачи данных терминалу. Более подробный обзор схемотехнических решений, включая вопросы согласования уровней сигналов, приведен в статье [1]. Терминальная программа (исполняемый модуль PAGE.EXE) работает под управлением ОС MS-DOS или MS-Windows 9x (при использовании в более новых ОС не забудьте выставить соответствующий режим совместимости для исполняемого файла или используйте другое ПО, например, Hyperterminal или Br@y terminal), скорость обмена по последовательному порту 19200 бод. При запуске программа предлагает выбрать порт для обмена данными с микроконтроллером. Затем предлагается выбрать операцию: «Запись страницы памяти», «Сравнение страницы памяти с файлом на диске», «Чтение страницы памяти в дисковый файл». После выбора пункта меню предлагается указать адрес страницы памяти [2]. В пункте «Запись» производится прием данных (ASCII) с клавиатуры, передача их в контроллер и запись в буфер микросхемы памяти. После ввода каждой строки сообщается о количестве переданных байт. Запись заканчивается после передачи 256 байт и содержимое буфера переписывается в энергонезависимую память. Запись буфера в память также может быть инициирована последовательной подачей активного низкого сигнала (импульс) на вход внешнего прерывания N0 и вводом пустой строки (клавиша «Enter») в терминальной программе. Записанные данные сохраняются в файле «temp.txt». В пунктах «Сравнение» и «Чтение» после передачи адреса страницы производится чтение данных из энергонезависимой памяти в буфер. После подачи активного низкого сигнала (импульс) на вход внешнего прерывания N0 данные из буфера передаются терминалу для сравнения с файлом «temp.txt» или записи в файл «out.txt». Прекращение работы программы «ESC», в противном случае быдет повторно предложено выбрать операцию. P. S. Продолжение следует... (работа про прерываниям на примере обмена с контроллером COG ЖКИ и работа с микросхемами Serial Flash фирм Numonyx, Macronix, Amic technologies, EON silicon solutions, Winbond и т. д.). Следите за изменениями. Литература: Автор: Станислав Лещинский aka «Точка Опоры» ООО «МФК Точка Опоры», Москва, www.fulcrum.ru 04.02.2002 |