通信协议大全
文章目录
- 通信协议大全
- 前言
- 一、异步通信和同步通信
- 二、RS232和RS485
- 1.RS232
- 2.RS485
- 3.RS232和RS485的区别
- 4.RS232、485与普通串口的区别?
- 三、SPI协议
- 四、IIC协议
- 1.IIC的时序介绍
- 2.IIC传输数据的格式
- 总结
前言
通信协议是每一个嵌入式工程师必备的技能。下面我们来了解一下通信协议。
一、异步通信和同步通信
异步传输:异步传输是一种典型的基于字节的输入输出,数据按每次一个字节进行传输,其传输速率低。
同步传输:需要外界的时钟信号进行通信,是把数据字节组合起来一起发送,这种组合称为帧,其传输速度比异步传输快。
二、RS232和RS485
1.RS232
2线通信(RX,TX),支持全双工通讯。高电平:-3v ~ -15v;低电平:+3v ~ +15v。
采用不平衡传输方式,最大传输距离20米。
单端通讯方式只支持两个设备之间的通信
2.RS485
二线和四线通信;二线只支持半双工,四线支持全双工
ES485是差分传输,一对双绞线A和B,RS485的速率可高达10Mbit/s,理论通讯距离可达1200米;
3.RS232和RS485的区别
RS485总线弥补了RS232通信距离短,低速率的缺点,RS485的速率可高达10Mbit/s,理论通讯距离可达1200米;
RS485和RS232的单端传输不一样,RS485是差分传输,使用一对双绞线。
RS485总线同IIC,也是主从模式,支持点对点单从机模式,也支持从机模式,不支持多主机模式。
这样来看更好理解:
1、传输方式不同:RS232采用不平衡传输方式,即所谓的单端传输、而RS485则采用平衡传输,即差分传输方式。
2、传输距离不同,RS232适合本地设备之间的通信,传输距离一般不超过20m,而RS485传输距离可达到几十米甚至上千米。
3、设备数量不同,RS232只允许一对一通信,而RS485接口在总线上是允许连接128个收发器。
4、连接方式不同。RS232规定用电平表示数据,因此线路就是单线路的,用两根线才能达到全双工的目的;而RS485使用差分电平表示数据,因此必须使用两根线才能达到传输数据的基本要求,要实现全双工必须使用四根线。
从某种意义上来说,线路上存在的仅仅是电流,RS232和485规定了这些电流在什么样的线路上流动和流动的方式。
4.RS232、485与普通串口的区别?
普通串口、com口是指物理接口形式(硬件)。而RS485,232是指的电平标准(电信号+)
三、SPI协议
SPI是一种串行外围设备接口,是一种高速全双工的通信总线,SPI为四线制(MOSI、MISO、SCLK、SS)
MOSI
主设备输出、从设备输入引脚,主机的数据从这条信号线输出,从机由这条信号线读入主机发送的数据,即这条线上数据的方向为主机到从机。
MISO
主设备输入、从设备输出引脚。主机从这条信号线读入数据,从机的数据由这条信号线输出到主机,即这条线上数据的方向为从机到主机。
SCLK
时钟信号线,用于通讯数据同步。它由通讯主机产生,决定了通讯的速率,不同的设备支持的最高时钟频率不一样。
SS
从设备选择信号线,也叫片选信号线,也叫NSS、CS。当有多个SPI从设备与SPI主机相连时,设备的其他信号线SCK,MOSI及MISO同时并联到相同的SPI总线上,即无论多少个设备都功能使用这3条总线;而每个从设备都有独立的这一条NSS信号线,即有多少个从设备,就有多少条片选信号线。
SPI数据有效性
SPI使用MOSI及MISO信号线来传输数据,使用SCK信号线进行数据同步。MOSI及MISO数据线在SCK的每个时钟周期传输一位数据,且数据输入输出是同时进行的。数据传输时高位先行或低位先行并没有做硬性规定,但是要保证两个SPI通讯设备之间使用同样的协定,一般会采用MSB(高位先行)模式。
SPI一共有四种通讯模式,时钟极性CPOL是指SPI通讯设备处于空闲状态时,SCK信号线的电平信号(也就是SPI通讯开始前、NSS线为高电平时SCK的状态),当CPOL等于零时SCK为高电平,反之相反。
时钟相位CPHA是指数据的采样时刻,当CPHA=0时,MOSI和MISO数据线上的信号将会再SCK时钟线得奇数边沿被采样。当CPHA=1,数据线在SCK的偶数边沿采用。
四、IIC协议
IIC协议是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据,是一个多主机的半双工通信放hi,每个挂接在总线上的器件都有个唯一的地址。
1.IIC的时序介绍
1、空闲状态
当总线上的SDA和SCL两条信号线同时处于高电平,便是空闲状态,如上图所示,当我们不传输数据时,SDA和SCL被上拉电阻拉高,即进入空闲状态。
2、起始信号
当SCL为高期间,SDA由高到低跳变,便是总线的启动信号,只能由主机发起,且在空闲状态下才能启动该信号
3、停止信号
当SCL为高期间,SDA由低到高的跳变;便是总线的停止信号,表示数据已经完成传输,由下图所示
4、传输数据格式
当启动信号开始后,就开始传输数据
当SCL为高电平时,便会获取SDA数据值,其中SDA数据必须是稳定的,如果不稳定就会变成起始/停止信号。
当SCL为低电平时便是SDA的电平变化状态。
若主从机在传输数据期间,需要完成其他功能(例如一个中断),可以主动拉低SCL,让IIC进入等待状态,直到处理结束再释放SCL,数据传输会继续。
5、应答信号ACK
IIC总线上的数据都是以8位字节进行传输的,当发送了8个数据后,发送方会在第9个时钟脉冲期间释放SDA数据,当接收方接收该字节成功,便会输出ACK应答信号,SDA高电平——非应答信号NACK,SDA低电平——应答信号ACK。
6、完整的数据传输
发送起始信号后,便发送一个8位的设备地址,其中第8位是对设备的读写标志。
2.IIC传输数据的格式
写操作
芯片发出一个开始信号,然后发出一个(确定哪一个芯片发送)方向(读/写,0写,1读)。回应(确定设备是否存在),然后传输数据,传输数据之后回应(确定数据是否接受完成),然后再传输下一个数据。每传输一个数据,接受方都会有一个回应信号,数据发送完之后,主芯片就会发送一个停止信号
读操作
芯片发送一个开始信号,然后发出设备地址(确定哪一个芯片读取)方向(0写1读)。然后回应(确定这个设备是否存在),然后传输数据,传输之后回应(确定数据是否接收完成)然后传输下一个数据,每传输一个数据,接收方都会有一个回应信号,数据发送完成之后,主芯片就会发送一个停止信号。
总结
这些东西,还是要经常看一看,记一下,不然过段时间肯定就忘了。