嵌入式的那些通信协议

1.USART

通用同步/异步串行接收/发送器,USART是一个全双工通用同步/异步串行收发模块,该接口是一个高度灵活的串行通信设备。

区别于UART,UART是通用异步收发传输器,USART属于UART的增强型,在异步传输时没有啥区别,但是USART比UART多了同步传输功能,他可以为通信设备提供主动时钟。(由于通常都是使用异步传输,UART与USART就没有啥区别,所以以下USART与UART不做区分,都为UART)

ps:USART应该是我们嵌入式童鞋在平常单片机开发中用到最多的一种通信协议了吧。

7140873-a7057407f658a1d4-1

这个界面有熟悉的童鞋吗

工作原理:

UART使用4线(VCC, GND, RX, TX)

UART使用标准的TTL/CMOS逻辑电平(0~5v、0~3.3v、0~2.5v或0~1.8v)来表示数据,高电平表示1,低电平表示0。为了增强数据的抗干扰能力、提高传输长度,通常将TTL/CMOD逻辑电平转换为RS-232逻辑电平,3~12v表示0,-3~-12v表示1

UART的帧格式包括线路空闲状态(idle,高电平)、起始位(start bit,低电平)、5~8位数据位(data bits)、校验位(parity bit,可选)和停止位(stop bit,位数可为1、1.5、2位)。

7140873-ed280e3b6a77939c-1

UART帧格式

数据在传输过程中是通过一位一位地进行传输来实现通信的,每一次的传输都是靠起始位来同步,空闲时为高电平,用下降沿来通知接收方准备接收,紧接着的就是数据位根据设置的5/6/7/8位数据来进行传输,低位在前,高位在后(LSB——MSB),数据位结束后就是奇偶校验为,校验位之后就是停止位,停止位是用高电平来标记一个字符的结束,并为下一个字符的传输做准备。停止位后面是不同长度的空闲位。停止位和空闲位都规定为高电平,这样可以保证起始位有一个下降沿。

特点:

全双工传输

使用方便,协议相对较简单

缺点:

需要转换为232电平才适合长距离传输


2.RS232

由电子工业协会(Electronic Industries Association,EIA) 所制定的异步传输标准接口。通常 RS-232 接口以9个引脚 (DB-9) 或是25个引脚 (DB-25) 的型态出现。

工作原理:

大致上与UART相同

RS-232串口通信最远距离是50英尺;

RS232可做到双向传输,全双工通讯,最高传输速率20kbps。

RS-232上传送的数字量采用负逻辑,且与地对称。逻辑1:-3 ~-15V    逻辑0:+3~+15V。

RS-232-C标准规定的数据传输速率为50、75、100、150、300、600、1200、2400、4800、9600、19200、38400波特。

7140873-b4df14952261ef63-1

9芯引脚对应图

特点:

协议采用的电压较高,容易损坏接口芯片。与TTL电平不兼容,所以必须加电平转换芯片(例如max232)才能和TTL进行通信

传输速率较低,在异步传输时,比特率为20Kbps

接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。

传输距离有限,最大传输距离标准值为50英尺,实际上也只能用在15米左右


3.RS485

RS-485又名TIA-485-A, ANSI/TIA/EIA-485或TIA/EIA-485。

RS485是一个定义平衡数字多点系统中的驱动器和接收器的电气特性的标准,该标准由电信行业协会和电子工业联盟定义。使用该标准的数字通信网络能在远距离条件下以及电子噪声大的环境下有效传输信号。RS-485使得廉价本地网络以及多支路通信链路的配置成为可能。

RS485有两线制和四线制两种接线,四线制只能实现点对点的通信方式,现很少采用,现在多采用的是两线制接线方式,这种接线方式为总线式拓扑结构,在同一总线上最多可以挂接32个节点。

在RS485通信网络中一般采用的是主从通信方式,即一个主机带多个从机。

很多情况下,连接RS-485通信链路时只是简单地用一对双绞线将各个接口的“A”、“B”端连接起来,而忽略了信号地的连接,这种连接方法在许多场合是能正常工作的,但却埋下了很大的隐患,原因1是共模干扰:RS-485接口采用差分方式传输信号方式,并不需要相对于某个参照点来检测信号,系统只需检测两线之间的电位差就可以了,但容易忽视了收发器有一定的共模电压范围,RS-485收发器共模电压范围为-7到+12V,只有满足上述条件,整个网络才能正常工作;当网络线路中共模电压超出此范围时就会影响通信的稳定可靠,甚至损坏接口;原因二是EMI的问题:发送驱动器输出信号中的共模部分需要一个返回通路,如没有一个低阻的返回通道(信号地),就会以辐射的形式返回源端,整个总线就会像一个巨大的天线向外辐射电磁波。

7140873-5f1a1c065f9ccc25-1

485引脚功能图

RS-485的电气特性:逻辑“1”以两线间的电压差+2V~+6V表示,逻辑“0”以两线间的电压差-6V~-2V表示。接口信号电平比RS-232-C降低了,就不容易损坏接口电路芯片,且该电平与TTL电平兼容,刻方便与TTL电路连接。

数据最高传输速率为:10Mbps

RS-485接口采用平衡驱动器和差分接收器的组合,抗共模干扰能力强,即抗噪声性能好。

RS-485接口的最大传输距离标准值4000英尺,实际上可达3000米。

RS-232-C接口在总线上只允许连接一个收发器,即单站能力;而RS-485接口在总线上只允许连接多达128个收发器,即具有多站能力,这样用户可以利用单一的RS-485接口方便地建立设备网络。


4.RS422

EIA-422(过去称为RS-422)是一系列的规定采用4线,全双工,差分传输,多点通信的数据传输协议,它定义了接口电路的特性。它采用平衡传输采用单向/非可逆,有使能端或没有使能端的传输线。和RS-485不同的是EIA-422不允许出现多个发送端而只能有多个接受端。硬件构成上EIA-422 (RS-422)相当于两组EIA-485(RS-485),即两个半双工的EIA-485(RS-485)构成一个全双工的EIA-422(RS-422)。一个主设备(Master),其余为从设备(Slave),从设备之间不能通信,所以RS-422支持点对多的双向通信。接收器输入阻抗为4k,故发端最大负载能力是10x4k+100Ω(终接电阻)。

RS-422和RS-485电路原理基本相同,都是以差动方式发送和接受,不需要数字地线。差动工作是同速率条件下传输距离远的根本原因,这正是二者与RS232的根本区别,因为RS232是单端输入输出,双工工作时至少需要数字地线。发送线和接受线三条线(异步传输),还可以加其它控制线完成同步等功能。

RS-422通过两对双绞线可以全双工工作收发互不影响,而RS485只能半双工工作,发收不能同时进行,但它只需要一对双绞线。RS422和RS485在19kpbs下能传输1200米。用新型收发器线路上可连接台设备。

RS-422的电气性能与RS-485完全一样。主要的区别在于:RS-422有4根信号线:两根发送(Y、Z)、两根接收(A、B)。由于RS-422的收与发是分开的所以可以同时收和发(全双工);RS-485有2根信号线:发送和接收。

7140873-9f50a010f7b40316-1

特性:

RS-422四线接口由于采用单独的发送和接收通道,因此不必控制数据方向,各装置之间任何必须的信号交换均可以按软件方式(XON/XOFF握手)或硬件方式(一对单独的双绞线)。RS-422的最大传输距离为4000英尺(约1219米),最大传输速率为10Mb/s。其平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能达到最大传输距离。只有在很短的距离下才能获得最高速率传输。一般100米长的双绞线上所能获得的最大传输速率仅为1Mb/s。

RS-422需要一终接电阻,要求其阻值约等于传输电缆的特性阻抗。在短距离传输时可不需终接电阻,即一般在300米以下不需终接电阻。终接电阻接在传输电缆的最远端。

RS232/RS485/RS422区别

7140873-9177c9e7f33045fe-1

RS232是全双工的,RS485是半双工的,RS422是全双工的。

RS485与RS232仅仅是通讯的物理协议(即接口标准)有区别,RS485是差分传输方式,RS232是单端传输方式,但通讯程序没有太多的差别。

都被称为串口通信


5.IIC

IIC(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。它是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,高速IIC总线一般可达400kbps以上。

I2C总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。

开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。

结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。

应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。

CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。

这些信号中,起始信号是必需的,结束信号和应答信号,都可以不要

7140873-2390d69d4a6df210-1

多主机I2C总线系统结构

7140873-6d84ac928bb30a21-1

总线时序图

空闲状态:I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。

起始信号:当SCL为高期间,SDA由高到低的跳变;启动信号是一种电平跳变时序信号,而不是一个电平信号。

停止信号:当SCL为高期间,SDA由低到高的跳变;停止信号也是一种电平跳变时序信号,而不是一个电平信号。

 

7140873-db195e4aeef8e0ad-1

起始信号与停止信号

应答信号:发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。 应答信号为低电平时,规定为有效应答位(ACK简称应答位),表示接收器已经成功地接收了该字节;应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。 对于反馈有效应答位ACK的要求是,接收器在第9个时钟脉冲之前的低电平期间将SDA线拉低,并且确保在该时钟的高电平期间为稳定的低电平。 如果接收器是主控器,则在它收到最后一个字节后,发送一个NACK信号,以通知被控发送器结束数据发送,并释放SDA线,以便主控接收器发送一个停止信号P。

7140873-8761d90273c02511-1

数据有效性:I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。即:数据在SCL的上升沿到来之前就需准备好。并在在下降沿到来之前必须稳定。

 

7140873-abc58a808aff190a-1

数据的传送:在I2C总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在SCL串行时钟的配合下,在SDA上逐位地串行传送每一位数据。数据位的传输是边沿触发。


6.SPI

SPI 是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议

7140873-5f80df2afd9a390e-1

SPI接口一般使用4条线通信:

MISO 主设备数据输入,从设备数据输出。

MOSI 主设备数据输出,从设备数据输入。

SCLK时钟信号,由主设备产生。

CS从设备片选信号,由主设备控制。

从图中可以看出,主机和从机都有一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节来发起一次传输。寄存器通过MOSI信号线将字节传送给从机,从机也将自己的移位寄存器中的内容通过MISO信号线返回给主机。这样,两个移位寄存器中的内容就被交换。外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。

SPI主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。

SPI总线四种工作方式SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设备时钟相位和极性应该一致。

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容