初级会员

- 积分
- 60
- 金钱
- 60
- 注册时间
- 2016-7-9
- 在线时间
- 20 小时
|
5金钱
看了W25Q64的数据手册后,了解到它是一页一页写入数据的,但写入之前的位置必须为0xFF,然后我就在写入一页的函数前加入了擦除一个Sector的函数,但这样数据一直无法写入,不知道为什么,求了解的大神告知,谢谢。
void SPI_Flash_Write_Page(u8* pBuffer,u32 WriteAddr,u16 NumByteToWrite)
{
u16 i;
// SPI_Flash_Erase_Sector(0); //就是加了这个函数后这个写入页的函数一直无法将数据写入到W25Q64
printf("erase ok...\r\n");
SPI_FLASH_Write_Enable(); //SET WEL
SPI_FLASH_CS=0; //ê1ÄüÆ÷¼t
SPI2_ReadWriteByte(W25X_PageProgram); //·¢ËíD′ò3Ãüáî
SPI2_ReadWriteByte((u8)((WriteAddr)>>16)); //·¢Ëí24bitμØÖ·
SPI2_ReadWriteByte((u8)((WriteAddr)>>8));
SPI2_ReadWriteByte((u8)WriteAddr);
for(i=0;i<NumByteToWrite;i++)SPI2_ReadWriteByte(pBuffer[i]);//Ñ-»·D′êy
SPI_FLASH_CS=1; //è¡ÏûƬѡ
SPI_Flash_Wait_Busy(); //μè′yD′èë½áêø
}
void SPI_Flash_Erase_Sector(u32 Dst_Addr)
{
Dst_Addr*=4096;
SPI_FLASH_Write_Enable(); //SET WEL
SPI_Flash_Wait_Busy();
SPI_FLASH_CS=0; //ê1ÄüÆ÷¼t
SPI2_ReadWriteByte(W25X_SectorErase); //·¢ËíéèÇø2á3yÖ¸áî
SPI2_ReadWriteByte((u8)((Dst_Addr)>>16)); //·¢Ëí24bitμØÖ·
SPI2_ReadWriteByte((u8)((Dst_Addr)>>8));
SPI2_ReadWriteByte((u8)Dst_Addr);
SPI_FLASH_CS=1; //è¡ÏûƬѡ
SPI_Flash_Wait_Busy(); //μè′y2á3yíê3é
}
|
|