STM32 H7 使用SPI&DMA小结
前段时间项目中要用到单片机(stm32h750)和dsp之间大量数据交互(利用spi,h750做主,dsp做从)。要保证实时性,为了不阻塞到其他线程,所以还是考虑使用DMA方式传输来解放CPU。期间也是遇到了一点小坑!!(个人见解,仅供参考)
SPI
SPI:3线同步串行总线(sck,mosi,miso)+ 片选信号(cs)cs一般由软件控制,开始传输时cs拉低,结束时拉高。hal库初始化spi如下图:
这里配置需要注意以下几点:
- spi的主从设置,从设备是需要主设备给出时钟信号后才可以进行数据的接发。
- 一次传输数据的位数、spi工作方式(图中是方式三)、高低位先行,都需要和通信方协调一致。
- 传输速率的设置,这个是需要看当前D2域中对应的AHBx总线的频率再进行分频计算
- 调用HAL_SPI_Init()进行配置中会默认调用HAL_SPI_MspInit(hspi)相当于是初始化对应外设的GPIO一般在stm32h7xx_hal_msp.c中自行编写 如下图:
至此spi相应配置基本完成。
DMA
在这里简单介绍下DM