标题: W25Q128用STM32驱动程序,写数据总不成功,求解 [打印本页]

作者: gym216    时间: 2020-5-23 19:45
标题: W25Q128用STM32驱动程序,写数据总不成功,求解
W25Q128JVSQ

可以读读取到ID,读出0地址的16个字节全是0xFF。

然后写0~16地址.写完读出来还是0xFF。用的原子的驱动程序和板子

以下是串口输出:
Flash ID:0XEF17
JEDEC ID:0XEF4018
Status all:0X600200
SPI_FLASH data addr=0~16
//代码如下
//SPI FLASH
SPI_Flash_Init();
print_hex("Flash ID:",SPI_Flash_ReadID());
print_hex("JEDEC ID:",flash_read_jedec_id());
print_hex("Status all:",flash_read_state_all());
for(temp=0;temp<16;temp++)
{
  send.buf[temp]= temp;
}
flash_page_write(send.buf,0x0,0x0,16);
//flash驱动代码
void flash_page_write(uint8 *pBuffer,uint16 page,uint8 addr,uint8 NumByteToWrite)
{
u8 i;
SPI_FLASH_Write_Enable();                  //SET WEL
SPI_FLASH_CS=0;                            //使能器件   
    SPI1_ReadWriteByte(W25X_PageProgram);      //发送写页命令   
    SPI1_ReadWriteByte(page>>8); //发送24bit地址   
    SPI1_ReadWriteByte(page);   
    SPI1_ReadWriteByte(addr);   
   for(i=0;i<NumByteToWrite;i++)SPI1_ReadWriteByte(pBuffer[ i]);//循环写数  
SPI_FLASH_CS=1;                            //取消片选
SPI1_ReadWriteByte(0xff); //延时8个时钟
SPI_Flash_Wait_Busy();        //等待写入结束
}
网上搜索代码大多是这样。特意在每个CS拉高后延时8个CLK。还是没有效果。

92653e1527e2925577d0184182d76bd.png (13.22 KB, 下载次数: 59)

92653e1527e2925577d0184182d76bd.png

作者: gym216    时间: 2020-5-23 19:52
写使能已经调试过,SPI_FLASH_Write_Enable(); 执行后status 变成0x02.应该是写使能打开了,写完16字节后立即读状态就是0x0.也没有读到busy
作者: 黄youhui    时间: 2020-5-25 10:56
用这个我试过没问题,还是读不出来就可能是你其他地方没做好

25-SPI—读写串行FLASH(W25Q64).rar

668.35 KB, 下载次数: 196


作者: gym216    时间: 2020-5-25 18:50
感谢各位关注,问题已解决,换了一篇flash就好 了。
Flash ID:0XEF17
JEDEC ID:0XEF4018
Status all:0X600200
erase_sector=26
SPI_FLASH data addr=0~16:\0       

作者: contactdeshine    时间: 2020-5-26 21:13
谢谢 同样的问题




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1