Микросхемы памяти M25xxx представлены на рынке различными производителями. Они имеют одинаковый интерфейс и алгоритм работы. Далее будет представлено краткое описание и простенькая реализация библиотеки для работы с данной памятью.
Ссылка на DataSheet — M25P64.
Назначение ножек
Обмен данными с управляющим микроконтроллером происходит через интерфейс SPI. Микроконтроллер работает в режиме master, а память в режиме slave.
- _S — CS — выбор микросхемы для общения по SPI. Низкий уровень — микросхема памяти выбрана (см. описание протокола SPI).
- C — CLK — тактируюшая линия SPI.
- D — MOSI — входная линия данных для микросхемы памяти (slave input). Выходная для управляющего микроконтроллера (master output).
- Q — MISO — выходная линия данных для микросхемы памяти (slave output). Входная для управляющего микроконтроллера (master input).
NOTE: расшифровка стандартных названий ножек SPI— MOSI — master output slave input, MISO — master input slave output.
- _W — hardware управление защитой от записи в память.
- _HOLD — задержка в общении с микросхемой памяти (если управляющий микроконтроллер по какой то причине не успевает писать/читать микросхему памяти).
NOTE: нижнее подчеркивание значит, что логические уровни данной ножки инвертированы (высокий — выключение, низкий — включение).
Режимы работы SPI для данной микросхемы
Данные считываются всегда по нарастающем фронту, а первоначальный уровень на тактирующей линии может быть как высоким та и низким. Данные передаются старшим битом вперед (MSB).
Инструкции
- 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 — BP2— software управление защитой от записи в память; SWRD — вкл/выкл hardware управления защиты от записи).
- 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 — очистить всю память микросхемы.
В следующей части будет описана простенькая библиотека для данной микросхемы.