文章目录1、UART1.1 UART帧格式1.2 UART电路连接1.3串行端口问题2、RS232协议2.0 RS232协议介绍2.1 RS232帧格式2.2 RS232电路连接2.3 RS232问题3、 RS485协议3.0 RS485协议介绍3.1 RS485帧格式3.2 RS485 4.1收发器SP3485及其电路连接收发器SP3485收发器SP3485的电路连接4.2代码
电脑之间经常使用RS232进行通信; 在工业上,经常使用RRS485总线。 这个RS232和RS485到底是什么? 和常用的串行通信有什么联系吗? 看看他们之间的联系吧。
一、UART 1.1 UART帧格式
1.2 UART电路的连接
1.3串行端口问题想想串行端口有什么问题。
串行端口传输距离近,容易受到干扰。 一般项目中很少使用串行端口通信。
具体问题如下:
电气接口不统一
UART只有针对信号的时序进行了定义,未定义接口的电气特性;
在UART通信的情况下,一般直接使用处理器使用的等级即TTL等级,但由于处理器使用的等级存在差异,因此在处理器使用UART通信的情况下,直接连接并不常见;
UART没有规定连接不同设备时的连接器的标准,因此在不同设备之间通过UART进行通信时不方便连接抗干扰能力差
UART一般直接使用TTL信号表示0和1,但TTL信号抗干扰能力强,数据在传输过程中容易出错,为通信距离极短
由于TTL信号抗干扰能力差,其通信距离也短,一般只能用于一个板上两个芯片之间的通信2、RS232协议2.0 RS232协议介绍RS232协议
RS232协议是1970年美国电子工业协会(EIA )联合铃声系统、调制解调器制造商和计算机终端制造商共同制定的用于串行通信的标准。
该标准在采用一个标准的连接器标准中规定了连接器的每个引脚的作用,也规定了信号的电平;
RS232接口
本标准采用25针的DB-25连接器,标准中规定了连接器的每个针的信号内容)还规定了各种信号的电平。 此后,IBM的PC机将RS232简化为DB-9维连接器,最后成为事实标准;现在工业控制的RS-232接口一般只使用RXD、TXD、GND三条线;
信号
该标准规定了逻辑“1”的电平为-5v到-15v,逻辑“0”的电平为+5v到+15v,该标准旨在提高抗干扰能力,增加通信距离,其传输距离通常可达15m;
2.1 RS232的帧格式RS232的帧格式与UART串行通信相同。他们只是在电气的特性上不同。
2.2 RS232电路连接
虽然许多处理器都内置UART控制器,但处理器生成的信号通常是TTL信号,而不是符合RS232标准的信号,因此需要在处理器外部添加电路来转换信号级别。 芯片电平转换后,TTL信号变为RS232信号。 我们想发送的信息作为RS232的信号发送到接收端。 接收端也需要将RS232转换为TTL电平的电平转换器。
现在的电脑中,RS232也很少使用,但现在电脑主要以USB为主。 但是在嵌入式中,RS232还是经常使用的
2.3 RS232的问题RS232相当于串行端口,但只是电平不同,在帧格式上是相同的。 也就是说,软件编程都是一样的。
RS232存在以下问题:
芯片容易烧坏
接口信号电平值高,接口电路芯片易损坏,且与TTL电平不兼容,需要使用电平转换芯片来连接TTL电路,通信速度低,容易产生共模噪声,抗噪声干扰的传输距离RS485协议3.0 RS485协议为解决RS232通信易受干扰和传输距离短的问题,定义了一种新的协议-RS485协议
该标准由电信行业协会和电子工业联盟定义,该标准通信网络为在远距离条件下以及电子噪声大的环境下有效传输信号该标准允许连接多个收发器,具有多站功能,具有单个RS485接口
RS485在工业上经常使用。
信号
RS485标准规定,使用差分信号(差分信号是指,以两条线的电平差表示0、1 )进行数据传输,
g>两线间的电压差为+2v到+6v表示逻辑“1”,两线间的电压差为-2v到-6v表示逻辑“0”;使用差分信号能有效地减少噪声信号的干扰(因为如果受到干扰,两根线都会受到相同的干扰,所以受到干扰后这两根线的电平差仍然能正确的表示0或1),延长通信距离,RS485的通信距离可以达到1500m;RS485接口信号的电平比RS232降低了,所以不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便地与TTL电路连接接口
RS485采用两线制,这种接线方式为总线式拓扑结构,在同一总线上可以同时存在多个节点;
因为采用两线制,数据的发送和接收都要使用这对差分信号线,发送和接收不能同时进行,所以只能采用半双工的方式工作,编程时也需要加以处理。
这两根线采用双绞线,这样更加减少干扰。
3.1 RS485帧格式
RS485都是基于串口的,帧格式与串口的相同。与串口和RS232只是电气的特性不同,软件的编程都是差不多的。
由于采用了差分信号,RS485 只能采用半双工的方式工作,只能同一时间发送数据或者接收数据。在编程48时,需要注意这一点。
虽然很多处理器中都会集成UART控制器,但处理器产生的信号一般都是TTL信号并不是符合RS485标准的信号,所以一般我们还需要在处理器外部去添加电路将TTL信号转换成差分信号;
RS485的接口是A对A,B对B。
接口的信号电平值较低,不易损坏接口电路的芯片,且与TTL电平兼容,可方便地与TTL电路连接通信速度快抗噪声干扰性强
使用了差分信号,双绞线传输距离较远(1500m)可实现多节点组网
在RS485总线上可以挂多个设备。 四、RS485编程。 4.1 收发器SP3485及其电路连接 收发器SP3485
我们开发板采用SP3485作为收发器,该芯片支持3.3V供电,最大传输速度可达10Mbps,支持多达32-个节点,并且有输出短路保护。该芯片的框图如图
RS485是半双工的方式,RE、DE可以连接在一起,MCU用一个引脚来控制RS485的收发。
如上图:RS485_RE=1,表示发送数据。RS485_RE=0,表示接收数据。A、B口接偏置电阻,保证空闲电压差大于200mV
R14和R17是两个偏置电阻,用来保证总线空闲时,AB之间的电压差都会大于200mV,避免总线空闲时压差不定逻辑混乱。两个485接口连接,A连接A,B连接B。
4.2 代码
代码网络上都有,
注意串口波特率得设置相同,不然接收到的数据都是00