скрытое меню
SPI

AT45DB321E чтение/запись

На соседней странице мы настроили инициализацию микросхемы AT45DB321E. Там было учено немало нюансов.

Здесь попробуем читать / писать.

Первоначально AT45dbxx_ReadPage выводил нам FF по запросу чтения любой страницы и мы подумали уже , что неправильно читаем. (FF - это чистая память)

Но записав в микросхему некие символы через AT45dbxx_WritePage, впоследствие считали эти же данные.

В Итоге : чтение / запись работает нормально , вот так начинается команда чтения страницы 0:

фотка 1

Если в нашем случае с контроллером STM32F205 (120MHz) установить максимальную скорость чтения/записи предделителем частоты на 2 (Prescaler baud rate), то время считывания всей микросхемы AT45DB321E (32MBit) примерно 7сек! Что на первый взгляд очень очень неплохо.

фотка 2

У нас размер страницы 528 байт

Когда мы уже решили , что пишем/читаем нормально у начались не-понятки при больших адресах памяти микросхемы.

В даташите :

3 address bytes are used to address memory locations in either the main memory array or in one of the SRAM
buffers.

The three address bytes will be comprised of a number of dummy bits and a number of actual device address bits, with the number of dummy bits varying depending on the operation being performed and the selected device page size.

Buffer addressing for the standard DataFlash page size (528 bytes) is referenced in the datasheet using the terminology BFA9 - BFA0 to denote the 10 address bits required to designate a byte address within a buffer.

The main memory addressing is referenced using the terminology PA12 - PA0 and BA9 - BA0, where PA12 - PA0 denotes the 13 address bits required to designate a page address, and BA9 - BA0 denotes the 10 address bits required to designate a byte address within the page.

Therefore, when using the standard DataFlash page size, a total of 23 address bits are used.

У нас standard DataFlash page size (528)

Write

To load data into a buffer using the standard DataFlash buffer size (528 bytes), an opcode of 0x84 for Buffer 1 or 0x87 for Buffer 2 must be clocked into the device followed by three address bytes comprised of 14 dummy bits and 10 buffer address bits (BFA9 - BFA0).

The 10 buffer address bits specify the first byte in the buffer to be written.

фотка 3

Page address - это номер страницы.

Byte Address это адресс внутри блока 528 байт. Нам он не нужен , т.к. мы пишем целыми блоками по 528. Byte Address = 0, всегда пишем с нулевого смещения.

Dummy bits - будьте осторожны

Не забывайте , когда надо при чтении посылать в конце команды любые (по содержанию) биты , необходимое число раз. AT45 считывает их , но не использует. Это просто задержка микросхеме , чтобы гарантированно подготовить к выдате байты данных.

Короче говоря проект заработал. Для примера стираем страницу , пишем страницу, читаем и проверяем.

Файлы для скачивания

* STM32F205VGT6_SPI_AT45 [zip]
Atollic True Studio , Не используем прерывания, тестируем чтение, запись несколькими способами