W25Q64读 Read JEDEC ID失败

2019-07-20 06:39发布

本帖最后由 yibiejiangtian 于 2016-11-17 22:38 编辑

有人尝试过读取W25Q64的JEDEC ID吗,也就是使用0x9f命令。我用0x90读取返回的ID正常,可使用0x9f命令返回的全是0,什么都读不到,有人遇到过吗
u32 SPIFlash_ReadID(void)
{
    u32  FlashID,t1,t2,t3;

    FlashID=0x00000000;
    CS_Enable;
    SPIFlash_SendReadByte(0x9F);
    t1|=SPIFlash_SendReadByte(0xFF);

    t2|=SPIFlash_SendReadByte(0xFF);

    t3|=SPIFlash_SendReadByte(0xFF);
    CS_Disable;
    FlashID=(t1<<16)|(t2<<8)|t2;
    return FlashID;
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
MoQinchuan
1楼-- · 2019-07-21 04:12
yibiejiangtian 发表于 2017-1-7 10:58
就驱动自己写的,其他全部移植的,读JEDEC ID是好像最后那个函数,不太记得了,我的开始是引脚配置有问题, ...

具体是W25QXX_Write里面的W25QXX_Write_NoCheck里面的W25QXX_Write_Page里面的那个Busy程序,死在那里.....
yibiejiangtian
2楼-- · 2019-07-21 05:58
 精彩回答 2  元偷偷看……
冰封嗜魔
3楼-- · 2019-07-21 06:13
读之前执行一下w25qxx_wake_up();试试。
void w25qxx_wake_up(void)   
{  
        W25QXX_CS_PIN_WRITE(0);       
                           
        spi_read_write_byte(W25X_WAKE_UP);

        W25QXX_CS_PIN_WRITE(1);  
        delay_us(1);
}
我们公司采购的FLASH,不先wake_up的话就不行。
MoQinchuan
4楼-- · 2019-07-21 07:22
冰封嗜魔 发表于 2017-1-9 13:14
读之前执行一下w25qxx_wake_up();试试。
void w25qxx_wake_up(void)   
{  

你是说我的问题么?我自己在开发板上面很顺利,NSS和CS独立,NSS没有接任何的东西.....我为了验证我的问题,我把开发板上面的CS跟NSS接起来,立马Flash就不运行了.....
MoQinchuan
5楼-- · 2019-07-21 12:36
 精彩回答 2  元偷偷看……
MoQinchuan
6楼-- · 2019-07-21 14:35
yibiejiangtian 发表于 2017-1-8 16:25
跟上拉没得太大关系吧,只要把电平设置正确就可以,实在不放心用个直插电阻引根线上拉试下。等待空闲一直 ...

而最后,我把开发板上NSS和CS都强行接地,发现就可以了......读写数据很正常,能不能读出ID我不知道.....

一周热门 更多>