STM32与Flash AT45DB321D之间读写数据

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公司,后面就查手册吧。由振南的程序读和写都封装好了,不用考虑时序,测试可用。

猜你喜欢

转载自blog.csdn.net/Geekjin/article/details/82596520