QSPI读写W25Q256和W25Q128以及W25Q64有什么区别?

2019-07-20 05:58发布

本帖最后由 ssmart 于 2018-9-4 16:27 编辑

用QSPI实验程序,换成Q128后有修改相关参数,实验主体程序如下:                while(1)
                {
                        key=KEY_Scan(0);
                        if(key==KEY1_PRES)//KEY1按下,写入W25Q128
                        {
                                LCD_Fill(0,320,800,160,BLACK);//清除半屏   
                                 LCD_DispStr(30,320,"Start Write QSPI....");
                                W25QXX_Write((u8*)TEXT_Buffer,32*1024,SIZE);                //从倒数第100个地址处开始,写入SIZE长度的数据
                                LCD_DispStr(30,320,"QSPI Write Finished!");        //提示传送完成
                        }
                        if(key==KEY2_PRES)//KEY0按下,读取字符串并显示
                        {
                                 LCD_DispStr(30,320,"Start Read QSPI.... ");
                                W25QXX_Read(datatemp,32*1024,SIZE);                                        //从倒数第100个地址处开始,读出SIZE个字节
                                LCD_DispStr(30,320,"The Data Readed Is:   ");        //提示传送完成
                                LCD_DispStr(30,360,datatemp);                                        //显示读到的字符串
                        }
                }

实验现象是:
32*1024地址那里,原来是FLASH_SIZE-100,从倒数第100个地址处开始,读出SIZE个字节,这样读出来的都是0xff
改成其他地址也可能是乱码,多次修改这个地方的地址,发现地址必须是block起始地址,例如0,32K,64K,96K等block起始地址。
W25QXX_Write   W25QXX_Read函数没有修改,用的原子的,请问这可能是哪儿的问题?

W25Q128FV初始化的时候读取的id是正确的EF17,
但是W25Q64FV竟然不能在QPI模式下读ID,读到的都是0,只能在SPI模式下读到正确的ID=EF16

请问去别在那儿?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。