打印
[STM32F4]

STM32的FSMC无地址线情况下,读取数据只需取任意地址吗

[复制链接]
3989|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
faldaybreak|  楼主 | 2015-10-11 17:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我将FSMC的数据线接到了ADC的数据输出,将NOE读取数据使能线接到ADC的时钟线,ADC采样频率为10M,选取控制SRAM的BAND1SECTION4。但硬件上无分配任何FSMC的地址线,获取数据时,采用了BAND1SECTION4上的任意地址,发现读取的数据都不相同,难道数据不是这样获取的吗?
沙发
zchong| | 2015-10-17 17:52 | 只看该作者
1、NOE接的哪?
2、AD的片选接的是BAND1SECTION4这个片选NE4吗?
上面两个都对的话,你读取NE4所在的ban的任何一个地址都可以

使用特权

评论回复
板凳
734774645| | 2015-10-17 22:05 | 只看该作者
最好上图,这样会的可以方便看出来问题那

使用特权

评论回复
地板
mintspring| | 2015-10-18 11:06 | 只看该作者

做DP开发过程中,需要将DP芯片和ARM芯片进行通信,一般有两种方式:

1)IO端口(总线)方式来进行通信;

2)FSMC-存储器映射方式来进行通信;


之前的开发是采用第一种方式在F103芯片上开发,现在换F4平台,采用第二种方式来进行交互数据。


FSMC的基础


FSMC功能是类似 51 单片机的存储器映射功能,能管理多个外部不同种类的存储设备,具有方便,简单,快捷的优点。


目前支持的类型有:SRAMROMPSRAMNOR Flash和NANDFlash 存储器

更多的关于FSMC的资料需要阅读STM32 手册对于FSMC的详细介绍。


VPC3+C   +    ARM     +     FSMC实现细节描述


1)首先了解VPC3+C该芯片的时序图,VPC3的存储器提供两种访问方式:

a) 数据线和地址线不复用模式,手册中叫做C165模式;

b) 数据线和地址线交叉复用,手册中叫做80C32模式;

   为了节约IO的数量,决定采用80C32模式,手册中对此描述为同步模式,个人觉得有歧义。

2)查找80C32模式的时序图,如下:

3)在STM32数据手册中查找与80C32时序图一致的时序图。



采用的是地址线和数据线交叉复用和异步方式的,所以,相应的查找交叉复用的时序图,如下:






4)对比时序图发现,互联的线有


FSMC_NADV
加反向器(VPC3地址锁存控制信号)
ALE
FSMC_AD
数据线(地址线)
AB
FSMC_A
地址线
DB
FSMC_NWE
写信号
XWR
FSMC_NRD
读信号
XRD

由于VPC3内部自带地址锁存器,所以外部可以不加锁存器了,按照VPC3手册推荐,用了8个地址线,寻址2K空间,剩余的用作地址片选信号,这里有个小技巧,片选其中一个引脚,加反相器,同时也将STM32地址唯一映射为VPC3的确定地址。我当时调试代码时未理解透该细节,导致浪费了不少时间。


5)代码的调试


FSMC的代码采用STM32官方库函数来实现,在新平台下面需要注意一些几点:


A)新平台采用的系统时钟是否由于外部晶振变化而变化,需要对系统时钟进行配置,具体的配   置是在STM32F4xx.c 文件中。


系统时钟 = ((HSE或者HSI)/PLL_M )*PLL_N /PLL_P;


B)新平台时钟加快后对于FSMC的时间的设置的影响,在异步模式下,主要是考虑地址生成时间,地址保持时间,数据生成时间,这几个参数需要参考对应的外部存储器的参数来进行设定。


6)调试中遇到最大的两个问题

a) 外部晶振更改后为重新进行系统时钟的配置,我调用RCC_GetClocksFreq()来获取当前系统的时钟,是168M,这个是根据上面的计算公式计算出来,由于宏定义的数据未更改,所以表面上市正确的,但是和实际的情况却不符合。

b) 对于片选信号的理解,我是在配置FSMC功能后重新对地址线上的片选信号进行IO的操作,经过观看GPIO口的数据后,发现拉高该端口了,其实,FSMC是一个自动的过程,在FSMC操作额过程中,即便我之前拉高该端口,FSMC在地址操作时会将之前的IO口操作的结果给覆盖掉,导致数据写入不成功这个也是我对于片选的理解不彻底而造成的。


结束语


本次FSMC的调试过程中,学到了许多的知识,硬件电路的如何连接,信号线的选择,对FSMC 的理解和操作,时序图的匹配这个一个大体过程,基本掌握了硬件设计人员原理图线路连接过程,以及软件调试。


使用特权

评论回复
5
598330983| | 2015-10-18 19:29 | 只看该作者
fsmc用的地方挺多的,这个东西是不是很复杂啊?

使用特权

评论回复
6
可可球| | 2015-10-18 21:25 | 只看该作者
对FSMC 的理解和操作,时序很重要

使用特权

评论回复
7
ryan_jiang| | 2018-6-28 08:55 | 只看该作者
楼主,你好,你用FSMC读取高速ADC的数据,将ADC的输出接口连接到FSMC的数据口上,请问硬件上具体该怎么连接,我最近也要读取高速ADC的数据,请教下FSMC与ADC的连接,谢谢!

使用特权

评论回复
8
yehuichao| | 2018-8-16 22:49 | 只看该作者
本帖最后由 yehuichao 于 2018-8-16 22:52 编辑
ryan_jiang 发表于 2018-6-28 08:55
楼主,你好,你用FSMC读取高速ADC的数据,将ADC的输出接口连接到FSMC的数据口上,请问硬件上具体该怎么连接 ...


使用特权

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

本版积分规则

1

主题

6

帖子

0

粉丝