SPI接口是一种非常常见的串行接口,支持全双工、同步、高速串行通讯。
但是不同外设厂商的SPI接口模式有可能不同。在做外设驱动开发时一定要注意SPI接口的时钟极性和相位设置。
STM32L1系列SPI接口的时钟极性和相位设置是可编程的:
另外有两个方面需要注意(设置错误可能导致数据传输错误):
可配置的数据帧结构:8位或16位传输帧选择
可配置的数据顺序,MSB在前或者LSB在前
ST的STM32L1系列SPI接口支持的通信模式:
1、SPI模块支持全双工,三线同步传输通信模式
2、SPI模块支持两种单工通信模式:
双向: 1根时钟线和1根双向的数据线
仅接收: 1根时钟线和1根单向的数据线
了解SPI内部框图就容易理解为什么可以这样接线了:
双向单工通信模式在某些情况下可以节省MCU引脚:比如说驱动一个外部SPI接口的LCD显示,只需要往LCD写数据,所以采取这种通讯方式可以节省一个MCUIO口。
ST的STM32L1系列SPI接口提高传输速度的措施:
1、STM32L1系列SPI接口可配置高达16 MHz的通讯比特率;
2、SPI支持中断功能,有SPI总线忙标志位、带中断功能的主模式故障和过载标志;
3、SPI支持DMA传输,每个SPI模块都支持发送和接收两个方向上的DMA请求,每个SPI模块的请求都映射到不同的DMA通道,因此在 同一时间,所有的SPI通信都可以使用DMA传输;
4、具有硬件CRC模块,在数据传输完毕后,会自动发送计算好的CRC校验值。
以上4点确保在高速通讯的情况下,数据仍然是正确的!
ST的STM32L1系列SPI接口支持SPI接口的SD卡,性能可以达到最高传输时钟16MHz,带硬件CRC错误校验。
|