Беспроводной контроллер uniSensors nRF24, кроме прочих компонентов, содержит микросхему EEPROM памяти STMicroelectronics M25P40VP объёмом 4 мегабита или 512 килобайт. Это довольно значительный по меркам микроконтроллеров объём и его можно использовать для хранения различных данных и настроек в ваших проектах.
Этой статьёй мы начинаем цикл по этой микросхеме в котором подробно разберём характеристики M25P40VP и на практических примерах научимся с ней работать.
Спецификации M25P40VP
Ниже представлены основные спецификации микросхемы M25P40VP:
- Объём памяти: 4 Мб (512 кБ)
- Интерфейс подключения: SPI
- Частота работы: до 25 МГц
- Напряжение питания: 2,7-3,6 В
- Ток потребления в режиме сна: 1 мкА
- Количество циклов записи/стирания: > 100000
- Длительность хранения данных: > 20 лет
- Температурный диапазон: от -40 до 85 °C
На рисунке ниже представлена логическая логическая схема M25P40VP.
Распиновка и назначение выводов M25P40VP в корпусе SO8:
Далее вы можете видеть расположение этого чипа на плате uniSensors nRF24:
И фотография самой микросхемы крупным планом.
Схема подключения
На плате uniSensors nRF24 микросхема M25P40VP подключена по интерфейсу SPI на выводах D11 (MOSI), D12 (MISO), D13 (SCK) и D8 (CS).
Организация памяти
Вся память M25P40VP разбита на несколько зон и доступ к записи и данным может осуществляться разными способами. Вот подробности об этом разбиении:
- Побайтовый доступ. 512 кБ (524228 байт).
- Постраничный доступ. 2048 страниц по 256 байт.
- Посекторный доступ. 8 секторов по 65536 байт.
Сектор 0 — 00000h (0)
Сектор 1 — 10000h (65536)
Сектор 2 — 20000h (131072)
Сектор 3 — 30000h (196608)
Сектор 4 — 40000h (262144)
Сектор 5 — 50000h (327680)
Сектор 6 — 60000h (393216)
Сектор 7 — 70000h (458752)
Каждая страница (2048/256) может быть запрограммирована (изменена) индивидуально (биты устанавливаются от 1 к 0). Вся память посекторно или целиком может быть стёрта (биты устанавливаются от 0 к 1), но постраничное стирание не поддерживается.
Библиотека SPIFlash
Практическая работа с этой микросхемой Flash памяти в среде Arduino осуществляется при помощи библиотеки SPIFlash. Далее мы подробно разберём устройство и функции этой библиотеки.
explicit SPIFlash(uint8_t slaveSelectPin, uint16_t jedecID=0)
Конструктор, которому передаётся номер CS вывода микроконтроллера. В нашем случае это пин D8.
bool initialize()
Это функция инициализации Flash объекта, в которой настраивается взаимодействие с шиной SPI, микросхемой памяти и производятся прочие необходимые действия.
void command(uint8_t cmd, bool isWrite=false)
Функция посылки команд чипу.
uint8_t readByte(uint32_t addr)
Читает из микросхемы и возвращает байт, находящийся по адресу addr.
void readBytes(uint32_t addr, void* buf, uint16_t len)
Читает из микросхемы массив байтов начиная с адреса addr и длиной len и записывает его в массив buf.
void writeByte(uint32_t addr, uint8_t byt)
Записывает в память по адресу addr байт byt.
void writeBytes(uint32_t addr, const void* buf, uint16_t len)
Записывает в память массив байтов buf, начиная с адреса addr и длиной len (размером до 64 кБ).
void chipErase()
Стирает полностью всю память микросхемы M25P40VP (устанавливает все биты в 1).
void blockErase64K(uint32_t addr)
Стирает блок памяти в 64 кБ, начиная с адреса addr.
uint16_t readDeviceId()
Функция возвращает ID номер производителя микросхемы
static uint8_t UNIQUEID[8]
Массиве для хранения уникального 64-битного идентификатора микросхемы M25P40VP
uint8_t* readUniqueId()
Функция возвращает уникальный 64-битный идентификатор, сохранённый в массиве UNIQUEID[8]
uint8_t readStatus()
Читает из микросхемы и возвращает состояние регистра статуса.
bool busy()
Флаг занятости микросхемы (при выполнении длительных операций чтения/записи).
void sleep()
Перевод микросхемы Flash памяти в режим сна с малым энергопотреблением.
void wakeup()
Вывод микросхемы Flash памяти из режима сна.
void end()
Завершение работы с микросхемой Flash памяти M25P40VP.
Команды M25P40VP
На таблице ниже представлены команды (инструкции) чипа M25P40VP, их настройки и дополнительные параметры в том виде, как они обозначены в даташите. Для удобства схожие операции выделены разными цветами.
Заключение
На этом мы заканчиваем с вводной теоретической частью по микросхеме M25P40VP и в следующей статье мы займёмся разбором практических примеров работы с этой микросхемой на контроллере uniSensors nRF24.
Ссылки по теме
Обзор контроллера uniSensors nRF24
Программирование uniSensors nRF24
Работа с памятью M25P40. Часть 1. Спецификации и библиотека
Работа с памятью M25P40. Часть 2. Sleep, Wakeup, Erase и Busy
Работа с памятью M25P40. Часть 3. Read и Write Byte и Arrays
Работа с памятью M25P40. Часть 4. Работа с беззнаковыми типами данных
Работа с памятью M25P40. Часть 5. Работа со знаковыми типами данных
Работа с памятью M25P40. Часть 6. Read и Write Float
Работа с памятью M25P40. Часть 7. Read и Write Char array и String
Работа с памятью M25P40. Часть 8. Работа с секторами
Работа с памятью M25P40. Часть 9. Выборочное стирание секторов
Работа с памятью M25P40. Часть 10. Копирование секторов
Работа с памятью M25P40. Часть 11. Восстановление (backup) секторов
Работа с памятью M25P40. Часть 12. Работа с блоками памяти
Работа с памятью M25P40. Часть 13. Пишем библиотеку для M25P40
Работа с памятью M25P40. Часть 14. Пишем библиотеку для M25P40 (2)
Работа с памятью M25P40. Часть 15. Пишем библиотеку для M25P40 (3)
Где купить?
uniSensors nRF24 в магазине «Electromicro»
Техническая поддержка
Мы внимательно относимся к потребностям наших клиентов и осуществляем техническую поддержку всей выпускаемой продукции. Вы можете написать нам письмо с вашим вопросом или позвонить по телефону и специалист нашей компании проконсультирует вас и поможет решить вашу проблему.
- Емейл для вопросов по нашей продукции: electromicro@bk.ru
- Наш телефон: +7 (495) 997-37-74