RS232/RS485/CAN_BUS 通信原理总结与通信波形分析

分析一:232串口信号

要点:RS232,全双工,采用三线制传输分别为TXD\RXD\GND,其中TXD为发送信号,RXD为接收信号。

在RS232中任何一条信号线的电压均为负逻辑关系。即:

-15v ~ -3v 代表1

+3v ~ +15v 代表0

测试结果与分析:

如图所示,以传输一个8位二进制数值“01101010”为例,异步传输数据的一般格式为:起始位+校验位+数据位+停止位。其中,校验位为可选项。因为RS232电平为负逻辑,当电压为3.3V时,发送逻辑‘0’;当电压为-3.3V时,发送逻辑‘1’。空闲状态为负电压(逻辑1)。

波特率计算:如图,传输9bit(1起始位+8数据位)花费的时间为79us。1s传输的数据量为1/0.000079*9 = 113924,可以推测波特设置的波特率为115200。RS485的波特率计算同理。(二进制系统中,波特率等于比特率)

图示为发送端的波形,接收端波形与接收端波形大同小异,符合RS232电平要求。

 RS232/RS485/CAN_BUS 通信原理总结与通信波形分析_第1张图片


分析二:485串口信号

要点:RS485,半双工,采用差分传输(平衡传输)的方式,半双工,一般有两个引脚 A、B。AB间的电势差U为UA-UB:

不带终端电阻AB电势差:+2~ +6v   逻辑‘1’;

                                      -2 ~ -6v   逻辑‘0’;

带终端电阻 AB电势差: 大于 +200mv 逻辑‘1’;

                                     小于 -200mv   逻辑‘0’; 注意:AB之间的电压差不小于200mv。

1、 不带终端电阻

以传输一个8位二进制数值“01101010”为例:

测试结果与分析:

空闲状态:A=3.3V, B=0V,为逻辑‘1’。

发送逻辑‘1’时,A=3.3V,B=0V,A-B=3.3V;

发送逻辑‘0’时,A=0.5V,B=3V,A-B=-2.5V;

图示为发送端的波形,接收端波形与接收端波形大同小异,符合RS485电平要求。

RS232/RS485/CAN_BUS 通信原理总结与通信波形分析_第2张图片


2、 带120R终端电阻

测试结果与分析:

空闲状态:A=1.74V, B=1.53V, A-B= 0.21V,为逻辑‘1’。

发送逻辑‘1’时,A=1.74V,B=1.53V, A-B= 0.21V;

发送逻辑‘0’时,A=0.80V,B=2.80V, A-B= -2.0V;

图示为发送端的波形,接收端波形与接收端波形大同小异,符合RS485电平要求。

 RS232/RS485/CAN_BUS 通信原理总结与通信波形分析_第3张图片


分析三:CAN_BUS信号

要点(显性与隐性电平):

    显性位即无论总线上各节点想将总线驱动成什么样的电平,只要有一个节点驱动为显性位,则总线表现为显性位的电平;隐性位正好相反,只有各节点都不将总线驱动成显性位的电平,总线才表现为隐性位对应的电平。显性位电平为Vh-Vl=2V,逻辑上为“0”;隐性位电平为Vh-Vl=0V,逻辑上为“1”。

    CAN总线在没有节点传输报文时是一直处于隐性状态。当有节点传输报文时显性覆盖隐性,由于CAN总线是一种串行总线,也就是说报文是一位一位的传输的,而且是数字信号(0和1),1代表隐性,0代表显性。在传送报文的过程中是显隐交替的,就像二进制数字0101001等,这样就能把信息发送出去,而总线空闲的时候是一直处于隐性的。

    “显性”具有“优先”的意味,总线上执行逻辑上的线“与”时,只要有一个单元输出显性电平,总线上即为显性电平;只有所有的单元都输出隐性电平,总线上才为隐性电平。(显性电平比隐性电平更强)

隐性(逻辑‘1’): H=2.5V,L=2.5V,H-L=0V

显示(逻辑‘0’): H=3.5V,L=1.5V,H-L=2V

共同点:CAN_BUS空闲状态为隐性状态,相当于串口通信(232/485)的停止位‘1’;当准备发送数据时,CAN_BUS的状态由隐性变成显性,相当于串口通信(232/485)的起始位‘0’。



以上分析若有问题,还请各位前辈在评论区批评指正,感激不尽!

你可能感兴趣的:(电子电路)