Энергонезависимая память. Аппаратная реализация
При выборе микросхемы памяти для использования были сформированы ключевые критерии для микросхемы памяти: малая цена и доступность, интерфейс обмена данными – SPI (Serial Peripheral Interface) и удобство программирования. Выбор пал на микросхему Microchip 25LC128 емкостью 128 кБ.
В разработках компании ДИАЛТЕК применяются микросхемы энергонезависимой памяти, которые позволяют сохранять и восстанавливать настройки приборов после отключения
питания. Так, например, в
блоках управления двигателями постоянного тока программируется и сохраняется в память ключевые параметры управления и адрес устройства на
линии Modbus RTU.
Линии SPI микросхемы 25LC соединяются с микроконтроллером согласно цифровому стандарту обмена данными SPI.
Отладка обмена данными по стандарту SPI одна из самых удобных среди цифровых интерфейсов, однако, если не предусмотреть контрольные точки сигналов, отладка может вызывать затруднения при подключении пробников осциллографа, поэтому мы рекомендуем начинающим разработчикам предусматривать контрольные точки для отладки.
Осциллограмма процесса записи одного байта по стандарту SPI показана ниже.
После правильного включения микросхемы была разработана библиотека на языке программирования Си, которая содержит основные функции взаимодействия, эти функции взяты из спецификации на микросхему.
Из спецификации видно, что процедура чтения данных из микросхемы начинается после установления линии CS (Chip Select) в низкий логический уровень. Управляющее устройство (микроконтроллер) передает команду чтения READ со значением 0b00000011 на линии
MOSI (Master Output Slave Input), тактовый сигнал формируется на линии SCLK.
После команды READ согласно спецификации, микроконтроллер отправляет еще 2 байта адреса стартовой ячейки памяти для чтения. Пример чтения данных из памяти выше на картинке взятый из спецификации показывает чтение, начинающееся с нулевого адреса памяти, поэтому на линии SI после команды READ на следующие 16 тактов SCLK не выдвигаются биты адреса, они равны нулю, идет чтение начиная с нулевого адреса памяти.
На картинке ниже показан реальный пример осциллограммы чтения четырех байтов данных (ячеек) из микросхемы памяти начиная с нулевого адреса как это показано на примере из спецификации. Видно, что на линии MOSI вначале обмена отправляется команда READ (0b00000011), далее идут 16 тактовых импульсов на линии SCLK и нуль на линии MOSI что означает чтение из нулевого адреса памяти. Следующие 4 пачки тактовых импульсов по 8 бит предназначены для вычитывания содержимого четырех ячеек памяти.
После окончания 16 тактовых сигналов адреса следуют такты для линии SO (MISO) на которые микросхема 25LC128 будет выдвигать содержимое ячеек памяти. В микросхеме памяти 25LC128 реализован удобный механизм автоматического инкремента адреса ячейки памяти при последовательном непрерывном чтении ячеек.
При изменении временной развертки осциллографа можно более детально рассмотреть считанное содержимое ячеек памяти и окончание процесса чтения, когда линия CS переходит в высокое логическое состояние.
Схема включения микросхемы 25LC128 очень простая. Задачами статьи было показать схему включения микросхемы памяти, команды взаимодействия и осциллограммы обмена.
Подробное описание программного кода и пример использования в проекте на основе операционной системы реального времени (RTOS) описывается в со второй части статьи в ближайшей публикации.