硬件环境:两个CPU通过SPI通信,CPU型号为STM32F429,CPU1使用SPI1发送数据给CPU2的SPI2。
在使用中发现,当SPI速率较快时,使用中断接收会丢数据,因而想到使用DMA方式。但我的接收长度是不定长的,接收长度在18~34个字节,下面是我使用DMA方式接收不定长数据的方法。
1 使用STM32CubeMX配置SPI
1.1CPU1的配置
CPU1用于发送,因而这里设置为:
参数设置:
1.2CPU2的配置
CPU2用于接收,设置为:
参数设置:
DMA设置,使用Circular方式,在程序中只需调用一次HAL_SPI_Receive_DMA()函数:
中断设置: