В этой же серии есть микроконтроллеры со встроенным аналого-цифровым преобразователем (АЦП). Часто встречающаяся задача, возлагаемая на такие микроконтроллеры, — преобразование аналоговых сигналов в код с записью кода в память в реальном времени. Однако внутренней памяти микроконтроллеров для этого обычно не достаточно, интерфейса для подключения внешней памяти они не имеют.
Здесь представлен возможный вариант подключения внешней памяти большого объема к микросхеме AT90S8535. Микроконтроллер снабжен встроенным 10-разрядным АЦП с восемью входами, коммутируемыми программно. В качестве входов АЦП в микроконтроллере используются контакты порта А, поэтому не будем задействовать этот порт для организации связи с внешней памятью.
На рис. 6.27 представлен фрагмент схемы, реализующий подключение микросхемы статической памяти K6T4008CIB-GB55 (DD5) к микроконтроллеру AT90S8535 (DD6).
Рис. 6.27. Подключение микросхемы статической памяти К6Т4008CIB-GB55
Микросхема памяти K6T4008CIB-GB55 производства фирмы Samsung Electronics по своим функциям не отличается от аналогичной микросхемы НМ62256, использованной в схеме подключения внешней памяти к микроконтроллеру AT90S8515 (смотрите предыдущий пример). Процедура записи и считывания данных для обеих микросхем одинакова.
Одинаково функционируют их двунаправленные 8-разрядные шины данных (контакты IO0…IO7), а также линии
• записи (контакт WR);
• управления шиной данных (контакт ОЕ);
• выбора микросхемы (контакт CS).
Отличие состоит в объеме памяти: 19-разрядная шина адреса (контакты А0…А18) микросхемы K6T4008CIB-GB55 обеспечивает обращение к 219 ячейкам памяти, это значит, что в микросхеме можно хранить до 512 Кбайт данных (512К х 8).
Описание схемы
В таблице описаны линии, по которым микроконтроллер производит управление микросхемой памяти.
В исходном состоянии микроконтроллер устанавливает высокие уровни на линиях WR и RD, низкие уровни на линиях BUF1 и BUF2.
Программно память как бы разбита на 8 страниц по 64 Кбайт в каждой. Три бита адреса из 19-ти микроконтроллер формирует на линиях AR0…AR2, выбирая одну из страниц памяти.
Адрес внутри страницы формируется двумя 8-разрядными регистрами 74НСТ573 (DD3 и DD4).
С этой целью на шину данных (линии В0…В7) через порт В микроконтроллера (контакты РВ0…РВ7) выводится младший байт адреса, после чего микроконтроллер устанавливает высокий уровень на линии BUF2 для записи младшего байта адреса в регистр DD3. Затем на линии BUF2 устанавливается низкий уровень.
Далее на шину данных через порт В выводится старший байт адреса, запись которого в регистр DD4 происходит по установке микроконтроллером высокого уровня на линии BUF1. После записи на линии BUF1 устанавливается низкий уровень.
Теперь на линиях А0…А18, следовательно, и на контактах А0…А18 микросхемы памяти адрес ячейки памяти установлен, можно производить запись или считывание.
Некоторое смущение может вызвать то, что к контактам микросхемы памяти А0…А19 подсоединены линии адреса с другими именами (к контакту А17, например, линия А14). Это сделано для удобства трассировки печатной платы, на которой размещены детали схемы. Для микросхемы памяти безразлично, в какой последовательности выбираются ячейки, последовательность же выбора при записи и при считывании будет одинаковой.
Если вы занимаетесь трассировкой, то представляете, как были перепутаны дорожки до оптимизации соединений линий адреса с контактами адреса микросхемы памяти.
Запись в ячейку
После формирования адреса микроконтроллер выводит через порт В на шину данных В0…В7 байт информации. Затем микроконтроллер устанавливает низкий уровень на линии WR, что приводит к записи байта информации в ячейку памяти. После записи на линии WR устанавливается высокий уровень.
Считывание из ячейки
После формирования адреса микроконтроллер переводит порт В в режим ввода данных в микроконтроллер. Затем на линии RD микроконтроллер устанавливает низкий уровень, что приводит к выводу данных из адресуемой ячейки памяти на шину данных В0…В7. Микроконтроллер через порт В считывает байт данных, установленный на линиях В0…В7, после чего устанавливает высокий уровень на линии RD. Обратите внимание на резисторы R43 и R44.
При программировании линии портов микроконтроллера находятся в высокоимиедансном состоянии, а поскольку входы WE и ОЕ микросхемы памяти также имеют высокий импеданс, наводки на подключенных к ним линиях могут привести как к записи в произвольную ячейку памяти, так и к выводу данных из произвольной ячейки на линии В0…В7. Последняя ситуация опасна, так как запись программы в микроконтроллер производится с использованием линий В5…В7 (разъем для подключения программатора ХР1 изображен справа на схеме). Поэтому возможны сбои при программировании (наблюдались в отсутствие резистора R43), выход из строя программатора (маловероятно из-за достаточной стойкости используемой в нем микросхемы) или микросхемы памяти (вполне возможно).