MCU位stm32f429,外部SDRAM是16M。配置除了刷新周期和正点原子例程不一样,其余都是一样的。(由于内存大小不一样,算出来的刷新周期也不一样)。
void fsmc_sdram_test(void) //测试程序
{
u32 i=0;
u32 temp=0;
for(i=0;i<8*1024*1024;i+=8*1024)
{
*(vu32*)(Bank5_SDRAM_ADDR+i)=temp;
temp++;
}
for(i=0;i<8*1024*1024;i+=8*1024)
{
temp=*(vu32*)(Bank5_SDRAM_ADDR+i);
printf("%d
",temp);
}
}
上面测试程序的结果是:1024个数据,有5~20个数据是错误的,其余都正常。
有没有可能是在自刷新的时候,MCU还在写入数据,导致读出来的数据出错了?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
for(i=0;i<32*1024*1024;i+=32*1024)
{
tempbuf[temp]=*(vu32*)(Bank5_SDRAM_ADDR+i);//保存原来的数据
delay_us(1);
*(vu32*)(Bank5_SDRAM_ADDR+i)=temp;
temp++;
}[/mw_shl_code]
问题找到了,在数据读出的时候,加了printf打印函数。原子哥,有没有可能是由于printf打印函数花费的时间太久,导致在自刷新的时候,还在写入数据?
一周热门 更多>