一、SPI:高速,全双工,同步串行总线

串行指的是数据是一位一位发送的,同步指的是要根据主机的时钟信号来发送

  1. SPI有四根线,分别为SCLK(时钟信号),MOSI(主设备输出,从设备输入),MISO(主设备输入,从设备输出),CS(片选信号)
  2. SPI有四种工作模式:
    Mode0:CPOL=0,CPHA=0
    Mode1:CPOL=0,CPHA=1
    Mode2:CPOL=1,CPHA=0
    Mode3:CPOL=1,CPHA=1
    CPOL=0,表示当SCLK=0时处于空闲态,所以有效状态就是SCLK处于高电平时
    CPOL=1,表示当SCLK=1时处于空闲态,所以有效状态就是SCLK处于低电平时
    CPHA=0,表示数据采样是在第1个边沿,数据发送在第2个边沿
    CPHA=1,表示数据采样是在第2个边沿,数据发送在第1个边沿

CPOL=0,CPHA=0:此时空闲态时,SCLK处于低电平,数据采样是在第1个边沿,也就是
SCLK由低电平到高电平的跳变,所以数据采样是在上升沿数据发送是在下降沿

CPOL=1,CPHA=0:此时空闲态时,SCLK处于高电平,数据采集是在第1个边沿,也就是
SCLK由高电平到低电平的跳变,所以数据采集是在下降沿,数据发送是在上升沿

二、IIC: 低速,半双工,同步串行总线

  1. IIC有两根线SDA(数据线)和SCL(时钟线)
  2. I2C总线上数据的传输必须以一个起始信号作为开始条件,以一个结束信号作为传输的停止条件。总线在空闲状态时,SCL和SDA都保持着高电平,当SCL为高电平而SDA由高到低的跳变,表示产生一个起始条件;当SCL为高而SDA由低到高的跳变,表示产生一个停止条件。
  3. IIC传输数据是逐8位传输,主设备在传输有效数据之前要先指定从设备的地址,因此且每一最小包数据由9bit组成,8bit内容+1bit ACK, 如果是地址数据,则7bit地址,1bit方向,1bit ACK。SPI,UART,IIC三大总线对比说明
  4. SCL处于高电平的时候,如果SDA处于低电平:传输数据0,SDA处于高电平:传输数据1 。SDA上的数据必须在SCL高电平周期时保持稳定,数据的高低电平翻转变化发生在SCL低电平时期

三、UART:低速,全双工,异步串行总线

  1. 一般为三线,GND(地线),TXD(发送数据),RXD(接收数据)
  2. 协议格式一般为1位起始位,(5,6,7,8)位数据位,1位校验位,(1,1.5,2)位停止位,同时需要包装双方波特率一直,常用的有115200,9600
  3. UART不需要时钟信号

四、三大总线对比

SPI,UART,IIC三大总线对比说明

  1. IIC总线在高电平的时候采样数据,SPI一般是在上升沿采样数据
  2. IIC总线和SPI总线数据传输都是MSB在前,LSB在后(串口是LSB在前)
  3. SPI依靠片选选择从设备,IIC依靠协议(发送数据前先发送地址)确定从设备

相关文章: