打印

请教有关STM32F207的FSMC访问速度

[复制链接]
2973|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lorelia14|  楼主 | 2012-6-13 16:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在做的项目开发是从STM32F207外接的NAND FLASH中读取数据,并将数据传给同样利用FSMC接口连接的FPGA,目前的代码采用memory-to-memory的DMA方式控制数据传递,通过示波器观察读写信号,一个page(8KBytes)的数据可以在900us不到时间完成传递,但在两次DMA数据传递期间存在将近200us的间隔期,这样将大大降低系统的数据传递速率。
为了缩短这个间隔,我将代码压缩到最精简的程度,但没有什么效果:
  while(1)
    {
      NAND_ReadSmallPage_SinglePage(MultiBlock_Buffer,&NAND_Address);
      NAND_AddressIncrement(&NAND_Address);
    }
不知道哪位大虾对这个有所研究呢?
沙发
lorelia14|  楼主 | 2012-6-13 16:37 | 只看该作者
作为NAND FLASH,由于存在初始失效页,加上在不断使用的过程中会增加坏块的数量,因此在每次读取块数据时,需要先读取spare area中的数据已确认该page的数据有效性,因此我增加了一些读取spare area的程序,如下:
  while(1)
    {
    NAND_ReadSpareArea_ECC(Buffer, &NAND_Address);
    if((Buffer[1]==0xFF)||(Buffer[6]==0xFF)||(Buffer[11]==0xFF)||(Buffer[16]==0xFF))
      {
      NAND_ReadSmallPage_SinglePage(MultiBlock_Buffer,&NAND_Address);
      NAND_AddressIncrement(&NAND_Address);
      }
    else
      NAND_AddressIncrement(&NAND_Address);
    }
这时通过示波器观察读信号,会发现在一个page的8K数据传递结束后,有将近200us的空闲,随后是读取spare area数据的操作,接着是同样将近200us的空闲期。由此我怀疑,是不是每次使用FSMC访问NAND FLASH时,都需要有一个潜在的初始化时间呢?否则为啥总是存在固定的停顿时间?
谁对这个有研究?请教啦!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

27

帖子

0

粉丝