请教大家呀,这个问题困扰好多天了,什么办法都尝试过了,还是没解决,现在把问题发出来,不吝赐教!
测试过程中,由于产品经常上下电,可能是上下电导致 w25Q32,什么地方改变了??
具体情况如下:
产品中使用STM8L作为主控,通过SPI接口连接W25Q32(4MB) NorFlash,使用方式是将W25Q32(4MB)划分空间存储不同的数据。
使用过程中出现擦除不了数据的情况,猜测可能由于芯片被锁住。但是擦除前进行解锁,效果还是不正常......
附上擦写和解锁的代码:
/*******************************************************************************
****函数名称:
****函数功能:芯片擦除
****版本:V1.0
****日期:14-2-2014
****入口参数:无
****出口参数:无
****说明:
********************************************************************************/
void SPI_Flash_EraseChip(void)
{
SPI_FLASH_WriteEnable();
/* Select the FLASH: Chip Select low */
SPI_FLASH_CS_LOW();
/* Send "Write Enable" instruction */
SPI_FLASH_SendByte(CE);
/* Deselect the FLASH: Chip Select high */
SPI_FLASH_CS_HIGH();
SPI_FLASH_WaitForWriteEnd();
}
unsigned char SPI_FLASH_Unlock(void)
{
unsigned char Device_ID = 0;
SPI_FLASH_CS_LOW();
SPI_FLASH_SendByte(0xAB);
SPI_FLASH_SendByte(0X00);
SPI_FLASH_SendByte(0X00);
SPI_FLASH_SendByte(0X00);
Device_ID=SPI_FLASH_SendByte(Dummy_Byte);
SPI_FLASH_CS_HIGH();
SPI_FLASH_CS_LOW();
SPI_FLASH_SendByte(0X06);
SPI_FLASH_CS_HIGH();
SPI_FLASH_CS_LOW();
SPI_FLASH_SendByte(0X01);
SPI_FLASH_SendByte(0X00);
SPI_FLASH_CS_HIGH();
return Device_ID;
} |