F429,怎么把sdram当内存使用

2019-07-20 20:52发布


使用sdram读写前,都要有以下的操作。必须要先等sdram芯片那边状态。
  while(FMC_GetFlagStatus(FMC_Bank1_SDRAM, FMC_FLAG_Busy) != RESET)
  {
  }

然后再操作地址0xc0000000读写。


如果直接用地址0xC0000000来直接读写,而不先去等FMC_FLAG_Busy标志,虽然大部分没问题,但有时候还是会产生错误。

这样的话,sdram用起来就会很麻烦。有没有什么办法,可以把SDRAM当内部ram那样可以直接用?多谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
kourbeck
1楼-- · 2019-07-21 01:33
SDRAM为256Mb,把一个32M字节的数组定义到SDRAM的起始地址,然后往SDRAM里遍历写0x55和0xaa,
每次读写1K字节,判断写入和读出的数据是否一致,进行了上百次的32MB读写,一次32MB的读写时间大概为7秒。没有发现有异常。暂时结贴
xuande
2楼-- · 2019-07-21 03:54
 精彩回答 2  元偷偷看……
taizonglai
3楼-- · 2019-07-21 05:36
看我们的429开发板的例程,SDRAM配置好就可以直接读写指定地址了
mcza30
4楼-- · 2019-07-21 10:09
xuande 发表于 2016-8-8 10:21
够呛,没有可能性。

定义u8 buf[5000] __attribute__((at(0xD0200000)));
可以直接对数组读写。
难道有问题?我试过,没有发现错误。
xuande
5楼-- · 2019-07-21 13:01

看来是我不懂了,确实了解不深。

一周热门 更多>