西祠响马 发表于 2019-9-27 17:37:50

STM32F103 使用FSMC同步模式问题

大家好,我现在正在使用STM32F103的FSMC同步模式。
需要读取高速ADC数据,ADC是8位并口,但需要一个时钟去触发转换,在时钟上升沿读取数据,速度20M,
我看FSMC的同步模式正好有这个CLK,所以就想通过FSMC去读取,数据我已经读取回来了,但是有点疑问,及时每次读取ADC的数据都必须发送一次地址,然后等待2个时钟周期才有数据,并不是每个时钟上升沿一个数据,所以几乎就是速度很慢。本以为每发1个时钟出1个数据,但实际上发多个时钟才出1个数据。
例程的FSMC大多是异步模式的,因此现在想请教下各位高手,有没有使用过这个功能的,谢谢

西祠响马 发表于 2019-9-28 10:39:44

顶一下,让更多高手看到

xmshao 发表于 2019-10-12 16:43:17

你使用FSMC的同步模式,并通过该同步时钟触发你的ADC,然后读取ADC数据 原理上是没有问题的。

同步时钟过来后,FSMC硬件至少要等待两个CLK后才去读取并行数据。这个等待时间我们可以从 2-17CLK进行配置。
DATLAT: Data latency for synchronous burst NOR Flash memory
For NOR Flash with synchronous burst mode enabled, defines the number of memory clock
cycles (+2) to issue to the memory before getting the first data:
0000: Data latency of 2 CLK clock cycles for first burst access
1111: Data latency of 17 CLK clock cycles for first burst access (default value after reset)

你期望每个上升沿出现就读取数据,这个不太现实。
你要知道。该时钟同时又做了触发信号,你的ADC受触发后再进行转换,之后才将数据送到总线上,这都是要时间的。

如果说即使这样还嫌慢无法满足要求,那就再想想别的办法。比较换个速度更高点的STM32.

aiherong 发表于 2019-10-18 22:20:05

手册和库对FSMC寄存器定义方式不同,看看手册里的BCR,BTR和BCTR寄存器描述,那里有建立数据,保持数据的时钟周期设置,还有各种模式选择;
但连续读ADC转换数据为什么不用DMA(可设成循环方式,又能中断处理每次发来的数据)

西祠响马 发表于 2019-10-30 15:44:59

aiherong 发表于 2019-10-18 22:20
手册和库对FSMC寄存器定义方式不同,看看手册里的BCR,BTR和BCTR寄存器描述,那里有建立数据,保持数据的时 ...

您好,谢谢回复。我现在用的是ADC芯片AD9280,芯片本身需要一个时钟出发ADC采样。如果我使用DMA的MEMto MEM 模式,貌似不可以循环读。
页: [1]
查看完整版本: STM32F103 使用FSMC同步模式问题