打印
[STM32F4]

STM32F407VG FSMC 访问32位变量问题

[复制链接]
2685|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bin726|  楼主 | 2013-12-31 13:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用STM32F407VG(100pin) 访问FPGA

地址线使用ST的FSMC_A16~FSMC_A23作为 A[0...7],基地址位0x6000 000

读取一个32变量(int32TEST = *(int32*)(0x6000 000))时,ARM会发出两次读16的时序;
问题是地址线(A[0...7])上的电平没有变化,所以读到的2个数据是一个地址的数据。分析原因:两次读操作其实地址是有变化的,只是变化的位置是在ST的FSMC_A0~FSMC_A15上。100pin芯片却没有这16位地址线。
怎样才能正常的访问32位的变量呢(不要分两次操作)
沙发
airwill| | 2014-1-1 08:26 | 只看该作者
分析完全正确. 32变量会发出两次读16的时序;由于 ARM  已经固定了 A0 这个地址线, 两次读16的时序又必然用到 A0 线. 所以, 必须要用起来这条线.
好在就一根线. 可以利用NADV 信号通过 HC126 这类器件从 AD0 上分离出 A0 信号. 或者直接让 FPGA 完成这个任务.

使用特权

评论回复
板凳
bin726|  楼主 | 2014-1-3 14:53 | 只看该作者
又仔细阅读了一下手册:对于100pin的芯片,FSMC的操作模式可以使用地址数据分时复用进行操作,即FSMC_AD[0...15]在信号线NADV为低是作为地址线A[0...15],信号线NADV为高是作为数据线。这样就避免了地址加1变化在低地址线的问题了。地址数据分时复用模式支持对NOR和PSRAM的访问。

但是我配置成分时复用的方式后,新问题有来了;读写操作时,我的片选、读信号等等这些时序都看不到了:'(;哪位大侠有相关的经验或例程,麻烦指点一下。
谢谢大家的关心,哪怕只是浏览一下!
继续调试!

使用特权

评论回复
地板
bin726|  楼主 | 2014-1-14 15:17 | 只看该作者
问题已解决,上次看不到时序的问题是示波器探头出现了问题。感谢大家的关注!如有类似问题可和我谈论。

使用特权

评论回复
5
21世纪黄毛| | 2014-2-12 21:22 | 只看该作者
学习了

使用特权

评论回复
6
wlzxzq| | 2014-2-18 12:33 | 只看该作者
现在都没有打电话啊

使用特权

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

本版积分规则

2

主题

5

帖子

0

粉丝