W25Qxx — флеш память в качестве EEPROM

Семейство чипов SPI флеш-памяти от компании Winbond. Могут использоваться, как EEPROM для микроконтроллеров (более 100 000 циклов перезаписи).


Далее только ключевые моменты.


STM32 Library: https://github.com/nimaltd/w25qxx

Memory structure


Pages (256 bytes) — > Sectors (4096 bytes) -> Blocks (65536 bytes)

Read


W25qxx_ReadByte(Buf(uint8_t), Addr(0-…));

uint8_t buf[64] = {0,};

W25qxx_ReadByte(&buf[0], 0);
W25qxx_ReadByte(&buf[1], 1);
W25qxx_ReadByte(&buf[2], 2);

Write


Перед записью данных необходимо стереть сектор

W25qxx_EraseSector(Addr(0-…));

W25qxx_EraseSector(0);
W25qxx_EraseSector(1);

Далее записываем Байты, страницу, сектор или блок.

Буфер записи 256 байт (1 страница).

1 byte to 4 byte INTEGER conversion


Так как чтение происходит побайтно, максимальное значение однобайтного (8-битного) числа = 256. Если требуется записать или прочитать 32-разрядное число, необходимо его преобразовать из/в массив из четырех 8-байтных чисел.

Чтобы получить 32 бит целое число из 4 отдельных байтов, можно произвести следующие расчеты

TestINT32 = pbuf[0]*16777216 + pbuf[1]*65536 + pbuf[2]*256 + pbuf[3];

Для разбития 32 разрядного числа на 4 байта расчеты выглядят так

pbuf[0] = TestINT32/16777216;
pbuf[1] = TestINT32/65536;
pbuf[2] = TestINT32/256;
pbuf[3] = TestINT32-pbuf[2]*256-pbuf[1]*65536-pbuf[0]*16777216;


1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Загрузка...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Optionally add an image (JPEG only)