本帖最后由 pzsh 于 2021-8-12 11:53 编辑
目前在使用W25Q128(华邦产品,SO8封装)这个芯片,主控CPU为PIC18F4523,目前在使用过程中碰到了几个问题,希望高手给指点下:
1、整块擦除后的扇区写,扇区读功能正常。
2、读生产商ID以及芯片代码功能正常。
3、有问题的是扇区擦除命令,即擦除4K的命令。比如我使用命令SPI_FLASH_SECTOR_ERASE(3);时候,希望的是擦除页48-63,但是我发现页304-319页被擦除掉了。同样的SPI_FLASH_SECTOR_ERASE(5);的时候,本来只希望擦除页80-95,但是页336-351也被擦除掉了
4、我的扇区擦除指令为:
void SPI_FLASH_SECTOR_ERASE(unsigned long sector) //块擦除
{
sector *= SPI_FLASH_SECTOR_SIZE;
SPI_FLASH_Write_Enable();
flash_wait_busy();
CS_FLASH_L();
outbyte(SectorErase_4KB);
//outbyte((sector >> 16) & 0xff);
//outbyte((sector >> 8) & 0xff);
//outbyte(sector & 0xff);
outbyte((unsigned char)(sector >> 16));
outbyte((unsigned char)(sector >> 8));
outbyte((unsigned char)sector);
CS_FLASH_H();
flash_wait_busy();
}
void SPI_FLASH_Write_Enable(void)
{
CS_FLASH_L(); //使能器件
outbyte(CMD_WREN); //发送写使能
CS_FLASH_H(); //取消片选
}
void flash_wait_busy(void)
{
CS_FLASH_L();
while( flash_read_status() & (0x01) );
CS_FLASH_H();
}
4、有碰到过类似问题的前辈妈?如果有,请指点迷津。谢谢 |