|
最近使用STM32H743对外部一个ADC芯片做数据采集,想通过外部中断信号触发SPI DMA读取数据(每次3byte),但根据CubeMX配置的驱动无法触发SPI(无CLK时钟信号发出)。 工程也已经根据CubeMX生成的代码,增加了如下配置: pSyncConfig.SyncSignalID = HAL_DMAMUX1_SYNC_EXTI0; pSyncConfig.SyncPolarity = HAL_DMAMUX_SYNC_FALLING; pSyncConfig.SyncEnable = ENABLE; pSyncConfig.EventEnable = ENABLE; pSyncConfig.RequestNumber = 3; if (HAL_DMAEx_ConfigMuxSync(&hdma_spi5_rx, &pSyncConfig) != HAL_OK) { Error_Handler(); } 目前调试发现,外部PA0中断可以正常发生并进入中断入口, 单独使用HAL_SPI_TransmitReceive_DMA 或HAL_SPI_Receive_DMA也可以进行通信。 但EXTI0事件却无法触发同步SPI DMA传输,请问是否有大神知道,有哪些细节没有配置到位吗? 首次使用STM32H7,对DMAMUX不是很了解。 |
串口DMA收发出现ORE错误
STM32H7A3 怎样配置MDMA的硬件触发MDMA_REQUEST_DMA1_Stream0_TC将数据再次转运
STM32F429突然死机
stm32u575 gpdma burst length=1 配置其他数值不工作
请教STM32F103的DMA空闲接收问题
STM32H7A3RGT6 ADC 8位采样速度只能达到3.5MSPS达不到数据手册上的7MSPS ?
DMAMUX 使用内部外设Request Event(不使用TIM12和LPTIM)
CUBEMX配置G474串口DMA传输,为什么接收正常发送不了?
STM32N6跳线flash烧录座出现写入错误,该如何解决。
简单聊聊STM32的SPI外设
微信公众号
手机版
使用EXTI0是可以作为SPI DMA传输的同步事件的。
估计是你配置上哪里不到位,这里有篇针对性应用实例,是本人经过验证的。
你可以参考下面文章,内容较多,你关注其中的基于EXTI同步SPI DMA传输的配置即可。
基于STM32G4芯片TIM+SPI+DMA应用示例
基于STM32G4芯片TIM+SPI+DMA应用示例
非常感谢你的回答,由于最近在忙别的事情,SPI部分临时使用中断内直接控制IO的方式实现读取。我也觉得是我配置上有错误,等后续有时间,再重新研究一下。
这个文章说的方式非常不错,但是我在这补充一下,
对于SPI的Rx DMA,在发出cstart的时候,就开始发时钟脉冲了,不能够满足时序的需求。但是SPI的Tx DMA,是DMA去请求了后才往外发时钟命令。所以此时,我们获取外部SPI ADC的数据的时候,需要用到HAL_SPI_TransmitReceive_DMA接口。