UART、IIC、SPI串行通信协议小结

UART:通用异步收发传输器(Universal Asynchronous Receiver/Transmitter)

引脚:2根
        RXD:接收数据
        TXD:发送数据

数据格式:

 

        起始位

        数据位(5/6/7/8)

        奇偶校验位(不常用)

        停止位

数据速率:

        波特率:~、9600、115200、~

IIC:集成电路总线(Inter-Integrated Circuit)

引脚:2根
        SDA:数据收发
        SCL:同步时钟信号

开始信号:

 

        SCL为高的情况下SDA下降沿信号

停止信号:

        SCL为高的情况下SDA上升沿信号

数据信号:

        在SCL为低时进行电平转变,SCL为高时数据必须保持稳定

应答信号:

        主机发送完数据后拉高SDA,从机必须在SCL为低时将SDA拉低,并且在SCL为高时保持稳定

从机寻址:

        发送数据前的第一个字节为控制字节,其中7位为器件地址,理论上可以寻址2^7个器件

数据收发:

        控制字节的最后一位为读写位,1为读,0为写

数据速率:

        标准模式(100Kbps)

        快速模式(400Kbps)

数据传输:

        无论读还是写,主设备都必须先发一个控制字节,

        然后再发一个读或写的数据地址,

        最后才往从设备读取或写入数据,

        每发送一个字节都必须等待应答。

SPI:串行外设接口(Serial Peripheral Interface)

引脚:4根
        MOSI:主机发送数据、从机接收数据
        MISO:主机结束数据、从机发送数据
        SCK:同步时钟信号
        CS:片选信号
时钟极性:
        0:初始电平(空闲电平)为低电平
        1:初始电平(空闲电平)为高电平
时钟相位:
        0:第一个边沿采集数据
        1:第二个边沿采集数据

数据速率:

 

        与同步时钟速率有关

从设备数:

        当有多个设备时必须给每个设备提供使能信号。且同一时间内只能有一个从设备被使能。

        所以最好使用译码器对从设备编址,这样保证不会同时选中两个设备造成信号冲突。

对比:

        UART是异步串行通信,IIC和SPI是同步串行通信

        UART和SPI都可以实现全双工通信,IIC只能实现半双工通信

你可能感兴趣的:(单片机,UART,IIC,I2C,SPI,串行通信)