1.并行通信与串行通信
并行通信通常为8根,一次传送多位,串行通信为一根线,一次传送一位数据,依次传送。
很明显,前者速度更快,但是消耗资源,后者资源消耗少,但速度慢。
2.单工与双工
单工通信分发送与接收方,数据传输方向固定。半双工可以双向转输,但是在一个时刻只能有一个方向。
全双工,在同一个时刻能同时发送与接收两个方向。
3.波特率
串口的通信速率,单位bps(每S传送多少位)
4.UART
全名为通用异步收发器,是一种通用的串行,异步通信总线,该总线有两条数据线,可以实现全双工的发送与接收。在嵌入式可以说是使用最多的一种通信协议。
空闲位为高,起始位拉低为0,就告知了对方开始通信,以此来区分空闲位的高电平与传输数据1的高电平。
开始通信后,从低位开始一位一位发,可以发5-8位数据,但通常发送8位,后进行校验(通常不用),后进入停止位(高电平)进入空闲。
即使发送很多个字节也必须尊重上规则,即每发送8位前后必须有起始位和停止位。
为什么,因为假设有00110011,0是拉低电平,1是拉高电平。那么两个0是不是就会一直拉为低电平,接收方如何区分是一个0还是两个0,就用到了上面的波特率。就双方波特率一致,就可以确定每一位信号的获取时间。
那么假设我们一次发送太多位的话,很容易导致倍波特率时间误差,故每次发8位能尽力保证数据的正确。
(注意,UART通信双方波特率必须一致)
硬件连接
5.RS232,RS485协议
其实都是UART上电气协议上的改变。
前面UART可以知道,高电平表示1,低电平表示0。但是并没有说什么是高电平,什么是低电平,两块不同的处理器可能定义不同,可能一块是3.3V为高,另外一块是5V为高。故引出了第一个缺点,电气接口不统一。高低电平会导致抗干扰能力差,从而导致距离传输距离短。
根据上面缺点,故提出了RS232与RS485的串行通信的标准。
6.RS232
RS232接口有9根线,但通常只使用RXD与TXD与GND三根线。
RS232为负逻辑
-5V到-15V为1
+5到+15V为0
提高了干扰能力,增大通信距离
又提出一个问题,为什么处理器能发出-15V到+15V的信号,很简单,有专门的RS232信号转换芯片,一个芯片发送给另外一块芯片,需先经过RS232信号转换后在发送,接收同样需要转换回来。
缺点,通信速度低,而且高低电平数值高,容易损坏接口芯片
7.RS485
相对RS232,转输距离长与抗干扰能力强。而且能接多个收发器。但UART与RS232只能点对点通信。
RS485使用差分信号,+2V到+6V为1,-2V到6V为0。什么是差分信号,UART与RS232都是一根线上的高低表示1或0,而RS485是两根线上表示,用两根线上的差值来表示,两根线就是同时衰减,在转输的过程中差值变化不大。
同样需要RS485电平转换芯片。
8.IIC
串行半双工总线。IIC通常用于近距离,低速的芯片之间传输。IIC有两根线,一根数据SDA用于收发数据吗,SCL时钟线用于通信双方时间同步。
也是多主机总线协议,与RS485一样。
IIC总线上的设备分为主机与从机,只有主机能发起呼叫通信,从机只能被呼叫。可如果IIC总线上有多个主机,IIC上有冲突检测和仲裁的功能确认谁是主机(IIC总线上谁都可以当主机,但是一个时刻只能有一个主机)。
连接上IIC总线上的器件都有自己的7位地址。
9.IIC通信流程
宏观上
1.主机发送起始信号启动总线
2.主机发送一个字节数据指命从机地址和后续字节传输方向
3.被寻址的从机发送应答信号回应主机
4.发送器发送一个字节数据
5.接收器发送应答信号回应发送器
6.循环45
7.通信完成后,主机发送停止信号释放总线
10.IIC总线寻址方式
就是第9个知识点的第二步,这个发送的字节,高7位是从机地址,最低位是传输方向,0表示主机发送数据,1是从机发送数据,那么怎么改表方向,可以再发一次起始信号,在改变方向。
11.IIC各信号实现
首先IIC总线空闲的时候两根线都是高电平
1.起始信号与停止信号
SCL为高电平时候 ,SDA由高变低表示起始信号
SCL为高电平时候 ,SDA由低变高表示停止信号
2.字节发送与应答
IIC总线每次发送8位,数据传输时候,先发送高位,后传输低位。(与串口相反)。发送后,接收方会放回一个应答
3.同步信号
如何区分和获取数据0或1
利用SCL时钟线,SCl为低电平器件,发送器会发送数据,会改变SDA线上的电平。
SCL为高电平时间,接收器就会读取SDA上的电平(这个期间,发送方不能改变SDA线上数据)。
循环8次即可发送一个字节。
12.SPI
全名串行外设接口。全双工同步通信总线。
SPI采用主从方式,一般有一个主设备,多个从设备。SPI通常需要4根线,风暴是MOSI(主设备输出,从设备输入),MISO(主设备输入,从设备输出),SOCLK(时钟),OS(片选)。
13.SPI寻址方式
CS片选控制。主设备要控制从设备,会从CS1或CS2控制线发送使能信号(可能高电平,有可能低电平),把不通信的从设备禁止。
14.SPI通信流程
先发高位,后发低位,和IIC一样,和UART不一样。同样高电平为1,低电平为0。
SPI相对IIC,发送一个字节无需等待应答,可直接在发送一个字节数据。也无需起始和停止信号。
在时钟SCL上升或下降的时候发送器发送数据,紧接下一个上升或下降沿接收器读取数据。为什么是上升或下降都可能发送与接收,是因为上升与下降表示发送或接收是可以控制的。涉及到了底下的极性与相位。
15.SPI的极性与相位
CPOL极性
CPHA相位
16.IIC与SPI区别