欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

STM32与Flash AT45DB321D之间读写数据

程序员文章站 2022-06-30 16:56:40
...

Flash这种芯片调试,首先必须要读出他的ID来,才能进行读写操作。

AT45DB321D 8192pages(512/528Bytes/Pages)大约4M左右,与单片机之间SPI通信。

大体流程就是先配置好spi,读出芯片ID,往flash里面写一个数据然后再把它读出来,可以通过串口把写入的数据打印出来。写入的过程就是先将数据写入到缓冲器(1或2),在从缓冲器写到指定页的指定地址(具体页地址和字节地址看芯片手册),读的过程也是一样,时序图都在芯片手册有。在这只放一段读ID的程序,详细代码参考的由振南修改的SPI_FLASH,放在我的Github里面。~~~Github~~~

#define Dummy_Byte    0xa5
uint8_t SPI_FLASH_ReadID(void)
{
  SPI_CS_LOW();
  SPI_WriteByte(0x9F);
  ID[0] = SPI_WriteByte(Dummy_Byte);
  ID[1]  = SPI_WriteByte(Dummy_Byte);
  ID[2]  = SPI_WriteByte(Dummy_Byte);
  ID[3]  = SPI_WriteByte(Dummy_Byte);
  SPI_CS_HIGH();
  if(ID[0]==0x1f&&ID[1]==0x27&&ID[2]==0x01&&ID[3]==0x00)
      return 0;
	else
	    return 1;
}

读出来ID后,ID每个字节都代表特定意思,记得第一个应该是代表atmel公司,后面就查手册吧。由振南的程序读和写都封装好了,不用考虑时序,测试可用。

STM32与Flash AT45DB321D之间读写数据