STM32 能做到吗?高手请进,STM32 的 TIM 定时请求DMA SPI 传输?

2019-08-13 22:05发布

STM32  的 TIM  定时启动  SPI  传输?  哪位仁兄能给点建议吗?通过DMA,该如何配置呢? 我的应用是要  与 外面 高速(1us)AD芯片相连,通过SPI DMA驱动,定时1us启动一次,即1us发生一个SPI DMA请求,而不是SPI的TXE RXNE自动发生DMA请求?  STM32 TIM 的DMA   不能将目标地址或源地址   绑到SPI的DR寄存器地址?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
44条回答
jxc2017jxc
1楼-- · 2019-08-14 15:43
 精彩回答 2  元偷偷看……
beyond696
2楼-- · 2019-08-14 19:22
jxc2017jxc 发表于 2017-6-23 09:30
STM32F4或者有一个TIM的DMA通道能够为通用的外设和存储器之间传输就好了,这样能够扩大很多应用。ST公司应 ...

DMA设计初衷就是为了不使用CPU而传输大量的数据,这种比较复杂的控制,并不能凸显DMA优势,你每次传输16位,用DMA有点浪费
K.O.Carnivist
3楼-- · 2019-08-14 22:33
jxc2017jxc 发表于 2017-6-23 09:23
定时器DMA写USART_DR来启动USART传输:这个你确认?但SPI好像不行。我外部芯片是AD7671,工作在SPI_TI主模 ...

1. USART在F1上确认:
http://www.openedv.com/forum.php?mod=viewthread&tid=81516#pid464572
USART发送的启动方式就是写DR,这个写操作由CPU还是DMA控制器来完成、哪个DMA通道来触发,应该都没有关系。SPI不是这样的么?

2. 我觉得这个ADC做SPI主机挺好的,没有理解为什么需要“控制SPI传输启始时刻”,启始时刻按道理就是和转换完成时刻相关嘛跟单片机没关系,一定要数据接收时间可控的话那用定时器DMA来读SPI就行了。关于“控制速率”,是太快了么,或者单片机来不及从低功耗唤醒恢复时钟?

3. 这个SPI为什么是TI模式,我看着像Normal的呢。
jxc2017jxc
4楼-- · 2019-08-14 22:36
我是1us采集周期,每个1us有16位,连续采2ms,即每次共采2000个数据,4K字节,在这2ms中CPU还有很多别的事要做,故只能用DMA,如果外部AD速度再快的话,stm32f407的spi速度不够了,我现在已达极值SPI40M速率了,外部AD芯片的SPI速度不受控的,SPI有个TI模式,由于速度极快,别的模式很难通信成功。F4的UART是不能用TIM的DMA去写DR的,F1的你确认可以?
jxc2017jxc
5楼-- · 2019-08-15 00:17
控制SPI启始时刻,是启动外部AD采集后,才能通过SPI去读AD的上一帧数据,这是时序要求的,不能任何时候去读。
K.O.Carnivist
6楼-- · 2019-08-15 05:58
 精彩回答 2  元偷偷看……

一周热门 更多>