[STM32F2] STM32直接对SRAM进行读写操作

[复制链接]
 楼主| zhaowei2648029 发表于 2015-7-31 18:40 | 显示全部楼层 |阅读模式
本帖最后由 zhaowei2648029 于 2015-7-31 18:44 编辑

菜鸟过来求教一下,现在做一个板子,使用了IS61WV102416BLL-10TLI作为数据缓存,我把地址0x68000000开始的2M字节作为大数组,如下
#define EXT_RAM_Base          0x68000000
#define EXT_RAM_cache        ((u8 *)EXT_RAM_Base)
使用时直接进行读写操作:
写:
        for (i=0; i<rec->len; i++)
        {
            EXT_RAM_cache[k++] = rec->data;
        }
读:
p = &EXT_RAM_cache[EXT_RAM_index.read_index];
        for (i=0; i<rec->len; i++)
        {
            buf[k++] =p;
        }
这样会有问题么?另外如果IS61WV102416BLL-10TLI有坏道STM32会进行处理么,现在发现写入的数据与读出来的数据有时会不同。

请大神们赐教一下。。。。
mmuuss586 发表于 2015-7-31 20:31 | 显示全部楼层
有坏道不会处理的;
airwill 发表于 2015-8-1 09:06 | 显示全部楼层
       for (i=0; i<rec->len; i++)
        {
            EXT_RAM_cache[k++] = rec->data;
        }
读:
p = &EXT_RAM_cache[EXT_RAM_index.read_index];
        for (i=0; i<rec->len; i++)
        {
            buf[k++] =p;
        }

这样写没有问题, 只是 循环变量是 i, 数组下标是 k, 有啥直接关系, 楼主自己检查.
注意支持最高 16 位数据访问
zchong 发表于 2015-8-1 10:35 | 显示全部楼层
sram有坏道?


控制一下时序,保守一些
 楼主| zhaowei2648029 发表于 2015-8-2 09:08 | 显示全部楼层

呃呃呃,可能对这个了解不多,有这种可能么?时序要慢一点?
 楼主| zhaowei2648029 发表于 2015-8-2 09:09 | 显示全部楼层
airwill 发表于 2015-8-1 09:06
for (i=0; ilen; i++)
        {
            EXT_RAM_cache[k++] = rec->data;

这个是我在代码里粘贴的一部分,在两个不同函数里的,现在数据有错误在查错~
 楼主| zhaowei2648029 发表于 2015-8-2 09:36 | 显示全部楼层
mmuuss586 发表于 2015-7-31 20:31
有坏道不会处理的;

是这个问题么
戈卫东 发表于 2015-8-2 12:02 | 显示全部楼层
SRAM通常不允许有坏道---有坏道就要换掉它
可可球 发表于 2015-8-3 22:25 | 显示全部楼层
sram有坏道是什么意思
FireRiver9 发表于 2015-8-4 09:37 | 显示全部楼层
有坏道就要换掉它
 楼主| zhaowei2648029 发表于 2015-8-4 17:07 | 显示全部楼层
感谢以上人员,不过问题还没解决,我会再开一个帖子讨论其余问题。
15113484470 发表于 2015-8-4 18:10 | 显示全部楼层
SRAM有坏块?不是吧,是NAND才是有坏块
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

96

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部