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