|
使用天问的W25Q驱动和硬件SPI驱动,
在读取64bit和128bit两块芯片时,FLASH ID可以正常获得,每次写入也都可以成功,
但是读取就极其奇怪:
有时候表现不稳定,几乎每次都读不到正常数据,而是读出一些如ASCII表的顺序数据,有时是随机数据
有时候必须先写入一次,然后读又可以了,放置一段时间又不行
有时候突然又好了,重启一次不用先写入也是正常读
最奇怪的是,有时候从0地址指定读233个字节正常,到234个就错乱,再233正常,234异常,表现出一种规律性,(buffer是malloc的)
但总体上又杂乱无章。
检查了天问的驱动,也没有发现什么问题,把speed也调过,无效,实在有点无语了
有没有高手有经验指导一下,多谢了!
//========================================================================
// 描述: 在指定地址开始读取指定长度的数据.
// 参数: none.
// 返回: none.
//=========================================================================
void w25qxx_read(uint8* pBuffer,uint32 ReadAddr,uint16 NumByteToRead)
{
uint16 i;
W25QXX_CS=0; //选中spiflash
hardspi_write_byte(W25QXX_READ_DATA); //发送读取命令
hardspi_write_byte((uint8)((ReadAddr)>>16)); //发送24位地址
hardspi_write_byte((uint8)((ReadAddr)>>8));
hardspi_write_byte((uint8)ReadAddr);
for(i=0;i<NumByteToRead;i++)
{
pBuffer=hardspi_read_byte(); //循环读数
}
W25QXX_CS=1;
}
|
|