:::: MENU ::::

Простая библиотека для памяти (Serial NOR Flash) типа M25, часть 1

Микросхемы памяти M25xxx представлены на рынке различными производителями. Они имеют одинаковый интерфейс и алгоритм работы. Далее будет представлено краткое описание и простенькая реализация библиотеки для работы с данной памятью.

Ссылка на DataSheet — M25P64.

Назначение ножек

m25p64

Обмен данными с управляющим микроконтроллером происходит через интерфейс SPI. Микроконтроллер работает в режиме master, а память в режиме slave.

  • _SCS — выбор микросхемы для общения по SPI. Низкий уровень — микросхема памяти выбрана (см. описание протокола SPI).
  • CCLK — тактируюшая линия SPI.
  • DMOSI — входная линия данных для микросхемы памяти (slave input). Выходная для управляющего микроконтроллера (master output).
  • QMISO — выходная линия данных для микросхемы памяти (slave output). Входная для управляющего микроконтроллера (master input).

NOTE: расшифровка стандартных названий ножек SPIMOSImaster output slave input, MISOmaster input slave output.

  • _Whardware управление защитой от записи в память.
  • _HOLD — задержка в общении с микросхемой памяти (если управляющий микроконтроллер по какой то причине не успевает писать/читать микросхему памяти).

NOTE: нижнее подчеркивание значит, что логические уровни данной ножки инвертированы (высокий — выключение, низкий — включение).

Режимы работы SPI для данной микросхемы

Данные считываются всегда по нарастающем фронту, а первоначальный уровень на тактирующей линии может быть как высоким та и низким. Данные передаются старшим битом вперед (MSB).

sign_m25

Инструкции

m25_opcode

 

  • WREN — подается перед командами записи в микросхему памяти. Устанавливает бит WEL в регистре статуса в 1, после чего разрешена разрешена очистка памяти и запись в нее, запись в регистр статуса. Нужно подавать перед WRSR, PP,SE, BE.
  • WRDI — сбрасывает бит WEL (кроме того, WEL сбрасывается после POWERUP, WRSR, PP,  SE, BE).
  • RDID — чтение идентификатора микросхемы памяти (0x20, 0x20, 0x17, UID).
  • RDSR — чтение регистра статуса (WIP, write in progress — используется для того, чтобы проверять закончились ли операции в микросхеме памяти и можно ли давать ей новые команды; WEL — флаг разрешения подачи команды записи и стирания (устанавливается WREN); BP0 — BP2software управление защитой от записи в память; SWRD — вкл/выкл hardware управления защиты от записи).

 

m25_status

  • WRSR — запись в регистр статуса.
  • READ — команда чтения памяти. После нее надо передать 3 байта адреса с которого вы хотите читать. После память будет считываться до тех пор пока вы не перестанете подавать тактирующие сигналы по CLK линии SPI (считываются все адреса подряд, а при достижении max адреса памяти микросхемы — адрес становится равным нулю — кольцевой буфер). max частота считывания Fr.
  • FAST READ — тоже самое что и READ, но max частота считывания Fc.
  • PP — запись в память. После данной команды нужно передать 3 байта адреса, с которого будем писать данные и до 256 байт данных. max размер записи — 1 страница (256 байт).
  • SE — очистить сектор. Сектор = 256 страницам. 1 страница = 256 байт. (после очистки — все данные 0xFF).
  • BE — очистить всю память микросхемы.

В следующей части будет описана простенькая библиотека для данной микросхемы.