
FW_H7 V1.12.1-HAL库DMA双缓冲配置
STM32G431 数据手册上有个图有点不理解
请教SPI用LL读取的问题
STM32G473RC多个定时器同步的问题
利用stm32f412 的SPI 的DMA 模式读取外部ADC数据如何提高效率
STM32G030K6Tx使用ADC+DMA进行6通道ADC采集,DMA传输错位问题。
求助:I2S通过DMA搬运后通过USB上传上位机,转为.wav文件后声音嘈杂,音质很差,基本听不出人声
STM32G474VET6如何配置HRTIM的中心对齐模式
stm32H755BIT6 TIM1中断问题
STM32F405RGT6 ADC2+TIM4触发+DMA(DMA2_Stream2_CH1)+DMA中断会死机(取消中断后完全正常)
[md]你可以考虑基于定时器中断,每次中断里启动SPI的DMA传输,DMA传输请求数为6,Normal模式;
或者使用DMAMUX的DMA同步功能,比方使用LPTIMER的周期性输出事件来触发SPI DMA传输。
这个我也实测过可行的。
[md]因为我需要用全硬件方式实现(全程不需要CPU干预),所以我觉得你说的第二个方案可行,多谢大佬解答~
的需求而写的。你可以搜索下 STM32定时器触发SPI逐字收发之应用示例 (qq.com)
估计本网站就能搜到这篇文章。
谢谢,这篇文章我看到了,但是不能实现我说的这个功能。
“这里使用片内定时器TIM3,借助它的更新事件触发DMA请求,通过DMA将数据给到SPI1的数据寄存器并发送出去,同时也开启SPI1接收事件的DMA传输。SPI2的收、发事件都启用DMA传输来实现数据收发操作。
TIM3的更新事件周期控制两个SPI的收发节奏,即定时器每产生一次更新事件,SPI1/SPI2这两个主从通信模块就进行一个数据的收发。我们可以通过调整定时器的计时周期来调整数据收发的快慢节奏。”
上面是我引用文章里的两段话,其中第二段话明确的说明了“定时器每产生一次更新事件,SPI1/SPI2这两个主从通信模块就进行一个数据的收发”,我想要实现的是定时器每产生一次更新事件,SPI1/SPI2这两个主从通信模块就进行6个字节数据的收发。说白了就是定时器溢出一次,触发DMA传输6次,将6个字节送到SPI的发送DR,从而将6个字节的数据从SPI连接的设备中读出。
[md]ok,是的,跟你的要求还不太一样。
你能否告知下芯片型号,或许可以再试试。一起探讨无妨。
如果你所用芯片是G4/F7/H7这些,它们带有DMAMUX,也有机会实现的。
[md]我用的是STM32L4Q5,有DMAMUX。
(PS:题外话,L4+系列DMA貌似都不支持突发传输和双缓冲管理,不知道为什么砍掉这些)