打印
[STM32F2]

STM32直接对SRAM进行读写操作

[复制链接]
5520|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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有坏道?


控制一下时序,保守一些

使用特权

评论回复
5
zhaowei2648029|  楼主 | 2015-8-2 09:08 | 只看该作者

呃呃呃,可能对这个了解不多,有这种可能么?时序要慢一点?

使用特权

评论回复
6
zhaowei2648029|  楼主 | 2015-8-2 09:09 | 只看该作者
airwill 发表于 2015-8-1 09:06
for (i=0; ilen; i++)
        {
            EXT_RAM_cache[k++] = rec->data;

这个是我在代码里粘贴的一部分,在两个不同函数里的,现在数据有错误在查错~

使用特权

评论回复
7
zhaowei2648029|  楼主 | 2015-8-2 09:36 | 只看该作者
mmuuss586 发表于 2015-7-31 20:31
有坏道不会处理的;

是这个问题么

使用特权

评论回复
8
戈卫东| | 2015-8-2 12:02 | 只看该作者
SRAM通常不允许有坏道---有坏道就要换掉它

使用特权

评论回复
9
可可球| | 2015-8-3 22:25 | 只看该作者
sram有坏道是什么意思

使用特权

评论回复
10
FireRiver9| | 2015-8-4 09:37 | 只看该作者
有坏道就要换掉它

使用特权

评论回复
11
zhaowei2648029|  楼主 | 2015-8-4 17:07 | 只看该作者
感谢以上人员,不过问题还没解决,我会再开一个帖子讨论其余问题。

使用特权

评论回复
12
15113484470| | 2015-8-4 18:10 | 只看该作者
SRAM有坏块?不是吧,是NAND才是有坏块

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

96

帖子

0

粉丝