OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4710|回复: 2

STM32f407开发板片外SRAM芯片IS61LV51216稳定性验证

[复制链接]

1

主题

2

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-10-7
在线时间
7 小时
发表于 2017-10-7 19:46:15 | 显示全部楼层 |阅读模式
1金钱
开发环境:VS2017+VisualGDB+arm-eabi-gcc 6.2。
SRAM初始化,使用原子的代码。
SRAM读写代码:
[mw_shl_code=c,true]void FSMC_SRAM_WriteBuffer(void* pBuffer, u32 WriteAddr, u32 n) {
        u8* pbuf = (u8*)pBuffer;
        for (; n != 0; n--) {
                *(vu8*)(BANK1_SRAM3_ADDR + WriteAddr) = *pbuf;
                ++WriteAddr;
                ++pbuf;
        }
}[/mw_shl_code]

[mw_shl_code=c,true]void FSMC_SRAM_ReadBuffer(void* pBuffer, u32 ReadAddr, u32 n) {
        u8* pbuf = (u8*)pBuffer;
        for (; n != 0; n--) {
                *pbuf = *(vu8*)(BANK1_SRAM3_ADDR + ReadAddr);
                ++ReadAddr;
                ++pbuf;
        }
}[/mw_shl_code]

验证代码:
[mw_shl_code=c,true]#define BANK1_SRAM3_SIZE    ((u32)(1024*1024))        // size in bytes
#define TEST_BUFF_SIZE        256
u8 g_sram_test_buf[TEST_BUFF_SIZE];
u32 sram_rw_test() {
        u32 addr = 0;
        for (int i = 0; i < TEST_BUFF_SIZE; i++)
                g_sram_test_buf = i;

        while ( addr < BANK1_SRAM3_SIZE ) {
                sram.write(g_sram_test_buf, addr, TEST_BUFF_SIZE);
                addr += TEST_BUFF_SIZE;
        }

        addr = 0;
        while ( addr < BANK1_SRAM3_SIZE ) {
                memset(g_sram_test_buf, 0, TEST_BUFF_SIZE);
                sram.read(g_sram_test_buf, addr, TEST_BUFF_SIZE);
                for ( int i = 0; i < TEST_BUFF_SIZE; i++ ) {
                        if (g_sram_test_buf != i) return addr;
                }

                //tty_write_large_buff_sync(&tty2, g_sram_test_buf, sizeof(g_sram_test_buf));
                //tty2.write(g_sram_test_buf, sizeof(g_sram_test_buf));
                addr += TEST_BUFF_SIZE;
        }

        return addr;
}
#undef TEST_BUFF_SIZE[/mw_shl_code]

main中调用如下:
[mw_shl_code=c,true]tty2.printf("start to test sram\n");
        u32 sram_test_result = sram_rw_test();
        tty2.printf("sram test result: %u\r\n", sram_test_result);[/mw_shl_code]


问题描述如附件图片所示。



2017-10-07_192346.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-10-7
在线时间
7 小时
 楼主| 发表于 2017-10-7 20:11:10 | 显示全部楼层
补充:问题进一步描述。
使用256字节的buffer进行读写验证,如果回读出问题,测试几次,发现0~127字节正确的,但是128及以后就不对了。
怀疑PCB布板有问题,部分地址/数据线延时不一致
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2017-10-8 18:20:37 | 显示全部楼层
hxf0223 发表于 2017-10-7 20:11
补充:问题进一步描述。
使用256字节的buffer进行读写验证,如果回读出问题,测试几次,发现0~127字节正确 ...

你用我们例程试试
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-18 17:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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