新闻  |   论坛  |   博客  |   在线研讨会
还没学会SPI总线协议?干货都在这里
嵌入式Linux | 2023-01-08 12:49:07    阅读:232   发布文章

SPI总线基本概念

SPI是一种高速、全双工、同步的串行通信总线,全称是Serial Peripheral Interface,使用时在芯片的管脚上只占用三根或者四根线(如果单向传输的话只需三根线就可以了),节约了芯片的管脚资源,所以在实际项目中应用也非常广泛。SPI总线的通信模式也是一主多从模式。

SPI的四根线都是单向的I/O线:

  • MISO(SDI)– Master Input Slave Output,主设备数据输入,从设备数据输出;

  • MOSI(SDO)– Master Output Slave Input,主设备数据输出,从设备数据输入;

  • SCLK – Serial Clock,时钟信号,由主设备产生;

  • CS(SS)– Chip Select,从设备使能信号,由主设备控制。

常见的硬件连接图:

SPI如何实现一对一的通信?

主设备通过CS片选引脚选中要通信的从设备,只有当从设备的CS引脚被使能才能和主设备进行通信。这就允许在同一个SPI总线上连接多个SPI从设备但仍能保持一对一的通信。

SPI的工作模式

SPI有四种工作模式,各个工作模式的不同在于SCLK不同,具体工作由CPOL和CPHA决定:

CPOL(Clock Polarity):时钟极性

  • 当CPOL为0时,时钟空闲时电平为低;

  • 当CPOL为1时,时钟空闲时电平为高;

CPHA(Clock Phase):时钟相位

  • 当CPHA为0时,时钟周期的上升沿采集数据,时钟周期的下降沿输出数据;

  • 当CPHA为1时,时钟周期的下降沿采集数据,时钟周期的上升沿输出数据;

CPOL和CPHA分别都可以是0或是1,对应四种组合即为SPI的四种工作模式。

注意:SPI主模块和与之通信的外设时钟相位和极性应该保持一致,主设备SPI时钟和极性的配置应该由外设来决定,二者的配置应该保持一致,即主设备的SDO同从设备的SDO配置一致,主设备的SDI同从设备的SDI配置一致。

SPI简单的收发时序,上升沿发送、下降沿接收、高位先发送

总结:

SPI接口的优点:不需要进行寻址操作且全双工,可以同时发送和接收数据,传输速率高。

SPI接口的缺点:没有指定的流控制,没有应答机制确认是否接收到数据。

以上是对SPI总线协议的总结,如有不足欢迎指正;关于SPI总线在找工作面试中也会被经常问到,如果喜欢的话要收藏关注哦!


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
专注于嵌入式Linux知识的分享、交流
推荐文章
最近访客