本文记录一下,主从机都用stm32单片机进行SPI通讯,主机的配置按照正常配置,片选信号可以硬件也可以软件,此处特别说明一下从机的配置,Cube软件中SPI模块如下:
DMA配置时,注意需要将DMA模式改成循环。原因:从机被动接收主机的数据并同步反馈,本身没有主动性,因此需要循环持续接收。(不需要配置SPI中断)
Cube生成的从机代码中,在MX_SPI1_Init初始化最后一段加上:
HAL_SPI_TransmitReceive_DMA(hspi, pTxData, pRxData,uint16_t Size);
注意Size需要和主机数量一致,运行程序pRxData为主机发来的数据,pTxData为需要返回的数据。pTxData应设置为全局变量,在程序其他地方进行更新并实时上传。