-
IIC:串行通信总线,一根是串行数据线SDA,一根是串行时钟线SCL。多主机总线,主机既可做接收器也可做发送器。数据有效性:SCL在高电平期间,SDA线上的数据必须保持稳定,数据线仅可以在时钟SCL为低电平时改变。主机起始终止信号:在SCL为高电平期间,SDA由高到低为起始信号,SDA由低到高为终止信号。数据传送格式:一帧有9位,每一字节后都有一个应答位。总线寻找:主机向从机发送八位数据。第1位为读写位,“0”表示主机向从机写数据,“1”表示主机由从机读数据;后7位寻址字节(从机地址)。
-
UART(串口):异步通信接口,主机从机接三根线:RX(接收数据),TX(发送数据),GND。第一,帧结构:起始位(低电平),数据位(5-8位),校验位(奇偶校验或无),停止位(高电平),第二,一种中断,当有数据写入SBUF后中断触发,程序进入中断服务程序里面执行结束或发送数据。SBUF(数据缓存区)第三,波特率(每秒传输二进制个数) 9600bps 115200bps。
-
SPI(同步外设接口):全双工同步串行总线,一个主机多从机。接口:SDI(串行数据输入),SDO(串行数据输出),SCK(串行移位时钟),CS(从使能信号)四种信号,片选:CS 决定了唯一的与主设备通信的从设备,片选信号低电平有效。如没有CS 信号,则只能存在一个从设备,主设备通过产生移位时钟来发起通讯。通信:数据由SDO 输出,SDI 输入,数据在时钟的上升或下降沿由SDO 输出,在紧接着的下降或上升沿由SDI 读入。
-
区别:IIC一般用于同一板卡上芯片之间的通信,较少用于远距离通信。UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无所谓,因为它是有时钟的协议。I2C的速度比SPI慢一点,协议比SPI复杂一点,但是连线也比标准的SPI要少。UART一帧可以传5/6/7/8位,IIC必须是8位。IIC和SPI都从最高位开始传。SPI用片选信号选择从机,IIC用地址选择从机。