找回密码
 立即注册
查看: 246|回复: 3

8H8K64U用SPI访问W25Q NOR Flash的奇怪现象

[复制链接]
已绑定手机

4

主题

4

回帖

32

积分

新手上路

积分
32
发表于 2024-12-29 16:56:32 | 显示全部楼层 |阅读模式
使用天问的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;                                                   
}

回复

使用道具 举报 送花

已绑定手机

4

主题

4

回帖

32

积分

新手上路

积分
32
发表于 2024-12-29 17:03:34 | 显示全部楼层
自己回看帖子的时候,突然感觉找到原因了,验证果然,是malloc的原因,这里是应该怎么正常去malloc呢?
回复 支持 反对

使用道具 举报 送花

已绑定手机

4

主题

4

回帖

32

积分

新手上路

积分
32
发表于 2024-12-29 17:05:59 | 显示全部楼层
ptr = (char *)_malloc_r((void *)__XDATA, DATA_SIZE);

AI告诉我这样
回复 支持 反对

使用道具 举报 送花

已绑定手机

4

主题

4

回帖

32

积分

新手上路

积分
32
发表于 2024-12-29 17:32:54 | 显示全部楼层
也是锈逗了,OS都没有,Linux搞习惯了。自己搞内存池也没意义。
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-9 22:11 , Processed in 0.164368 second(s), 64 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表