问题描述
写入 FMC NAND 地址时,FMC_NCE 在第一次写入开始时变低,然后在最后一次写入结束时变高。我可以使用 60MHz FMC 内核时钟以 10MHz 的频率写入 0x1000 个字。因此,在最短的 SETUP、WAIT 和 HOLD 时间下,写出一个字需要 6 个内核时钟。
读取时,FMC_NCE 随读取的每个字变低然后变高。这增加了每个字之间的读取时间,需要额外的 FMC 内核时钟周期,这意味着以更高的速率运行内核时钟。更高的内核时钟会增加读取之间的时钟周期数不一致的不利影响。在 160MHz FMC 内核时钟下,读取有时需要 16 个时钟,或 15 或 17 个时钟。如果我使用 MDMA 进行读取,那么我可以一次读取多个字,而 FMC_NCE 不会变低并使用最少 6 个内核时钟,但这受到 MDMA 缓存的限制,并且只能进行小范围的突发。我最终需要一口气阅读 10,000 个单词。
我实际上不是使用NAND存储芯片,而是使用FMC作为并行接口,所以我需要保持一致,特别是读取频率。
写入代码:
for (index = 0U; index < BUFFER_SIZE; index++)
{
*(__IO uint16_t *)deviceAddress = *buff;
buff++;
}
阅读代码:
for (index = 0U; index < BUFFER_SIZE; index++)
{
*buff = *(__IO uint16_t *)(deviceAddress);
buff++;
}
不知何故,外设知道写入是一次性完成的,但读取不是?
我已将 mpu 设置为 TEX2 并启用了 i- 和 d-cache。
我真的很感激任何想法
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)