本帖最后由 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
请问去别在那儿?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
QSPI_Init(); //初始化QSPI
W25QXX_Qspi_Enable(); //使能QSPI模式
W25QXX_TYPE=W25QXX_ReadID(); //读取FLASH ID.
printf("ID:%x ",W25QXX_TYPE);
W25Q64这里要吧ReadID放到QSPI_Enable前面才能正确读取。。。
一周热门 更多>