logo
+7 (495) 997-37-74
Москва, ул.Международная, 15

Работа с памятью M25P40. Часть 1. Спецификации и библиотека

Беспроводной контроллер 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

Программирование 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

Где купить?

uniSensors nRF24 в магазине «Electromicro»

Техническая поддержка

Мы внимательно относимся к потребностям наших клиентов и осуществляем техническую поддержку всей выпускаемой продукции. Вы можете написать нам письмо с вашим вопросом или позвонить по телефону и специалист нашей компании проконсультирует вас и поможет решить вашу проблему.

  • Емейл для вопросов по нашей продукции: electromicro@bk.ru
  • Наш телефон: +7 (495) 997-37-74

Аналогичные товары