以与写入相同的速度读取 FMC NAND 存储器 STM32H7

问题描述

写入 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 (将#修改为@)