这两天看FMC这块,其中关于外扩SRAM或者SDRAM这块有些疑问,比如外扩了SDRAM,SDRAM挂载在1区,在程序里读取SDRAM的数据:
1 uint32_t temp;
2 temp = *(uint32_t *)0xC000 0000;
3 if(temp > 100) temp = 0;
对于第二行代码,可能只需要几个时钟周期就执行完毕了,但是FMC控制时序将外部SDRAM中的数据读取出来并放到数据总线上需要的时间比执行刚才那个语句的时间长,如果没有等待机制的话,很有可能当程序执行到第三行的时候,实际数据还没有读过来,那岂不是会数据出错吗?
想知道这个问题到底是怎么解决的?
|