STM32F4 DMA可以并行工作吗?
我正在使用STM32F446开发一个应用程序,它需要3x SPI(我是所有应用程序的主人)和SDIO接口 其中2个SPI(SPI1和SPI2)是需要每1ms读取一次的传感器。对于SPI1,我需要写入1个字节,对该字节的响应将是该值。对于SPI2,我需要先写入1字节,然后读取6字节 第三个SPI(SPI3)和SDIO用于通信/记录,它们都不需要以固定周期传输数据 看看第9节,看起来我不能在外设中断的情况下触发DMA传输(这太糟糕了),但是我能做所有的事情吗STM32F4 DMA可以并行工作吗?,stm32,dma,stm32f4,Stm32,Dma,Stm32f4,我正在使用STM32F446开发一个应用程序,它需要3x SPI(我是所有应用程序的主人)和SDIO接口 其中2个SPI(SPI1和SPI2)是需要每1ms读取一次的传感器。对于SPI1,我需要写入1个字节,对该字节的响应将是该值。对于SPI2,我需要先写入1字节,然后读取6字节 第三个SPI(SPI3)和SDIO用于通信/记录,它们都不需要以固定周期传输数据 看看第9节,看起来我不能在外设中断的情况下触发DMA传输(这太糟糕了),但是我能做所有的事情吗 定时器每1ms中断一次:触发内部ISR
它们不会被阻塞,但只要更高优先级的传输不会完全占用DMA带宽,就可以进行交织。没有SPI传输可以做到这一点,因为SPI至少需要16个时钟周期来传输一个字节(至少2个周期/位)。我已经这样做了,DMA的3个SPI以最大速度传输,但由于SPI1和SPI2很慢(对于stm4,1ms非常慢),我会在中断中设置一个标志为1,如果设置了标志,则在主代码循环中检查它。如果您使用DMA,您将无法获得更高的速度,因为您需要完全相同的速度,每个ms都会重新启动DMA。