1、串口:(串行异步全双工,先发低位)
因为是异步的,所以没有时钟线,因为是全双工,所以有两条数据传输线,实现数据的收发。
帧格式
起始位1位,数据位8位,校验位1位(可有可无),停止位1位
串口通信存在的问题:
1)串口只是规定了协议,即帧格式,用高电平表示1,低电平表示0,但是在不同的处理器中这个定义是不一样的机电气特性不一样,所以这两个处理器是不能直接连
2)抗干扰能力差,使用的是 TTL 信号表示0和1,TTL信号中3.3-5V表示逻辑1
3)通信距离短,只能用于一个电路板上的两个不同芯片之间的通信
由于串口通信存在的问题就出现了RS232、RS485协议,但是软件编程还是串口那样编程,因为改的只是硬件上的电性
1.2 RS232
- 无论是RS232还是RS485底层都是串口,只是在电特性上面做了些修改,使得改善串口的问题
- (接口)RS232有9根线,一般只使用其中的RXD TXD GND
-
(信号)规定逻辑1的电平为-5V到-15V,逻辑0的电平为+5V到+15V,提高了抗干扰能力,传输距离一般可达15m
由于我们处理器的电平是TTL电平达不到RS232这个电平要求,所以中间还需要一个转换过程,一般使用 MAX232这款芯片,把TTL电平转为RS23
2、IIC:(串行同步半双工 高---->低)
同步的,有时钟线SCL; 半双工的,有一根数据线实现收发SDA
帧格式:
起始位1位,从机地址8位(一字节数据),应答位1位
通信过程:
1、主机发送起始信号启用总线,这时总线就处于被占用状态
2、主机发送一字节的从机地址数据,也就是8bit,低7位决定从机地址,第8位决定主机是接收还是发送数据,也就是确定数据传输方向
3、被寻址的从机发送1位应答信号回应主机
4、主机再发送一字节数据
5、从机回应1位
重复4、5
6、通信完成主机发送停止信号释放总线
细节补充:
主机如何确定?
不同的器件定义地址的方式是不同的,有的是软件定义,有的是硬件定义。
起始信号和停止信号怎么产生?
起始:在SCL为高电平时,SDA由高变低
停止:在SCL为高电平时,SDA由低变高
比如IIC总线上接了两块单片机,一块是主机,另一块是从机,如何定义从机的这个地址?
如果是带IIC的单片机,会有地址寄存器,寄存器里的值即为它作为从机时的地址。
3、SPI:(串行同步全双工 高-->低)
同步的,有时钟线; 全双工的,有两条数据线实现收发; 另外还有片选线
至少四根线
帧格式
通信过程
先发送高位再发送低位,发送完一个字节之后无需应答即可开始下个字节,没有起始,结束,应答信号,直接发送数据
在时钟线SCL下降沿或者上升沿时,发送器将数据发送到数据线,在紧接着的上升沿或者下降沿接收器从数据线接收数据
细节补充:
极性和相位------>确定了是上升沿发数据还是收数据
SPI总线有四种工作模式,取决于极性CPOL和相位CPHA
1)CPOL表示 空闲时的状态
CPOL=0,空闲时SCLK为低电平
CPOL=1,空闲时SCLK为高电平
2)CPHA表示采样时刻
CPHA=0,每个周期的第一个时钟沿采样--->读取数据
CPHA=1,每个周期的第二个时钟沿采样----->读取数据