IIC、SPI、UART、USART、USB、CAN等通讯协议原理及区别
(1)IIC (PHILIPS公司开发)
Inter-Integrated Circuit ,它为两线式串行总线(SDA数据线、SCL时钟线),用于连接微控制器和外围设备、传输速度100-400kHz=400kbps(48.8KB/s),高速模式最高可达4MHz(488KB/s),非全双工
注意KB和kbps的区别:
KB代表K个字节
kbps代表k个位每秒。
传送过程中有三种类型的信号:开始、结束、应答信号
图参考:【1】IIC总线工作原理IIC总线工作原理_怀想天空2010的博客-CSDN博客
1.1开始发送信号和结束发送信号时SDA和SCL电平的转换:
![](upload/tmp/2_JN6KN985AJX4VFT.jpg)
1.2主机向从机发送信号,等待从机应答,应答为低电平、非应答为高电平,在第9个时钟周期完成:
![](upload/attach/202406/2_5CSRQYQA279XREC.jpg)
数据传输的时序:
从高位开始传输,若有中断来,则SCL置低电平等待,SCL高电平时数据传输,SCL低电平时数据转换
![](upload/tmp/2_2DH36AC8CEWKDAX.jpg)
补充读写过程
【2】IIC总线解析IIC总线解析 - zalebool - 博客园
【3】对 IIC 总线的理解、调用函数以及常见面试问题 对 IIC 总线的理解、调用函数以及常见面试问题 - AlanTu - 博客园
(2)SPI (Motorola公司)
Serial Peripheral interface 串行外围设备接口
全双工同步数据传输,数据传输速率很高可达到50Mhz(转化一下约,相当于1s传输50M个位,速度为5.9MB/s)
有4根线进行通信:MISO MOSI SCLK CS
MISO:主设备数据输入,从设备数据输出
MOSI:主设备数据输出,从设备数据输入
SCLK:主设备产生的时钟信号
CS:片选信号
![](upload/attach/202406/2_QQPDEDDWPRRHUQ5.jpg)
其中:外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输
传输时序:
依据时钟极性和相位可以进行相应的传输:CPOL时钟极性(为1时,高电平代表空闲状态)反之亦然,CPHA为时钟相位,CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样,为1时,第二个跳变沿被采样。
![](upload/attach/202406/2_PT8P43SVGNT5HNJ.jpg)
补充读写过程
可参考:SPI和IIC总线的对比,写的不错I2C和SPI总线对比_kerneler_的博客-CSDN博客_spi总线
(3)UART
UART,全称Universal Asynchronous Receiver/Transmitter,通用异步收发传输器
传输速率取决于波特率的设置
例如:
波特率115200 = 115200 (位/秒)
如果没有校验位,就应该除以 10,得到的是每秒字节数:
波特率115200 = 115200 (位/秒) = 11520 (字节/秒)
再除以 1024,就是每秒 KB 数:
波特率115200 = 115200 (位/秒) = 11.25 (KB/秒)
如果有一位奇偶校验位,就应该除以 11,得到的是每秒字节数。
参考关于波特率与字节传输速率计算_偏执灬的博客-CSDN博客_波特率115200每秒传多少字节
UART是通用异步收发器(异步串行通信口)的英文缩写,它包括了RS232、RS499、RS423、RS422和RS485等接口标准规范和总线标准规范,即UART是异步串行通信口的总称。而RS232、RS499、RS423、RS422和RS485等,是对应各种异步串行通信口的接口标准和总线标准,它规定了通信口的电气特性、传输速率、连接特性和接口的机械特性等内容。实际上是属于通信网络中的物理层(最底层)的概念,与通信协议没有直接关系。而通信协议,是属于通信网络中的数据链路层(上一层)的概念。 COM口是PC(个人计算机)上,异步串行通信口的简写。由于历史原因,IBM的PC外部接口配置为RS232,成为实际上的PC界默认标准。所以,现在PC机的COM口均为RS232
参考: 通信方式梳理:GPIO,I2C,SPI,UART,USART,USB的区别_步印的博客-CSDN博客_gpio和i2c区别
RS-232是一个串行通信接口标准,它规定了逻辑“1”为-3 ~ -15V,逻辑“0”为+3 ~ +15V,符合该标准的串口也叫RS-232串口,比如电脑的COM口。不符合RS-232标准的串口?如单片机(如stm32)的UART/USART,它不遵循RS-232标准,使用的是TTL电平(Transistor-Transistor Logic),该电平的逻辑“1”为+5V,逻辑“0”为0V,称为TTL串口。
参考:https://blog.csdn.net/qq_26904271/article/details/79829363
(4)USART
Universal Synchronous/Asynchronous Receiver/Transmitter 通用同步/异步串行接收/发送器 全双工同步异步方式
支持异步通信或者同步通信(时钟同步)
UART和USART的区别是USART多了一根时钟同步线
![](upload/tmp/2_NANYUK6RQZ5R5WH.jpg)
参考:UART和USART有区别 - 通信设计应用 - 电子发烧友网
注意一般情况下使用:全双工异步通信(时钟不同步需要加上标志位识别)
TX和RX
![](upload/attach/202406/2_UVTZNH4S6FREMT8.jpg)
(5)USB(英特尔、康柏、IBM、Microsoft等多家公司联合提出)
Universal Serial BUS(通用串行总线)
USB2.0属于半双工 异步通信方式
USB3.0属于全双工
用于规范电脑与外部设备的连接和通讯,是应用在PC 领域的接口技术
传输速度:
![](upload/attach/202406/2_P3CSRKURY36QFAQ.jpg)
标准的4口:
![](upload/tmp/2_RAHA86NGM99T8V6.jpg)
3.0:参考:USB3.0连接器引脚、接口定义及封装尺寸 - 百度文库
![](upload/attach/202406/2_X7GW9749DUW6Q7W.jpg)
(6)CAN (德国电气商博世公司开发出面向汽车的 CAN 通信协议)半双工的通信方式
Controller Area Network ,传输速率1Mbps相当于125KB/s
可参考:CAN总线要点 CAN总线要点 - wfjiang - 博客园
![](upload/attach/202406/2_PAZKT5SP5EA9GWM.jpg)
1、同步和异步通信的问题?
参考:同步异步通信
![](upload/attach/202406/2_SHWFQHESYR8K2GY.jpg)
参考:通信方式梳理:GPIO,I2C,SPI,UART,USART,USB的区别 通信方式梳理:GPIO,I2C,SPI,UART,USART,USB的区别_步印的博客-CSDN博客_gpio和i2c区别
2、单片机与电脑的连接问题?
需要解决电平转换的问题
![](upload/tmp/2_JCT4G42R5FPJQYC.jpg)
参考:区分:串口,COM口,UART,USART区分:串口,COM口,UART,USART_马可波罗包的博客-CSDN博客
关于信道的概念以及通信交互方式:半双工、全双工(上述涉及的)可联系(计算机网络)物理层的如下描述
![](upload/attach/202406/2_QMEFRKYANSNVKSB.jpg)
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/heda3/article/details/89053635