吴皓月 李旭东 赵亮
[摘要]本文首先阐述了RS-232、RS-485口通信产生和特点,并穿插着比较7N种接口的差别和异同,然后实现他们之间的相互转换方法,最后又对常见的串口通讯接口12C、CAN、SPI、USB等进行了简介。
[关键字]串口通讯 RS-232 RS-485 TTL 2C
一、引言
上世纪70年代,同时出现了串行通信和并行通信。经过时间的检验,并行通信,由于位同步问题和干扰问题已经逐步被淘汰。串行通信接口标准则经过实践的考验并得到了长足的发展,演化为诸多串口通许标准,如:USB、SAS、SATA、RJ-45(以太网卡接口)均来源于串行通讯,最初的串口标准RS232则是所有串口通讯的前身和基础。近年来随着物联网、智能家居、高性能单片机等技术和市场的发展,RS-232也是老树开花,再次被广泛应用。本文首先对RS-232、RS485接口进行详细的说明,然后说明他们之间的转换。最后对常见串行通讯技术做个简单的对比阐述供初学者借鉴。
二、RS-232接口
RS-232是最早出现的串行通讯接口,也是其他串口通讯的基础。1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定了用于串行通讯的标准,该标准采用一个25脚的DB-25连接器。后来IBM的PC机将RS232简化成了DB-9连接器,从而成为事实标准。虽然纯粹的RS-232接口已经少见,但是许多的串口通讯技术保持了相同的时序和操作方法。
RS-232采取不平衡传输方式,即所谓单端通讯。收、发端的数据信号是相对于信号地。典型的RS-232信号在正负电平之间摆动。RS-232是为点对点通讯而设计的,其驱动器负载为3kΩ~7Ω。所以RS-232适合本地设备之间的通信,最大传输波特率为256000,最大传输距离约15米,传输速度随传输距离增大而减小。
在PC机上,不管是unix(含linux)系统还是windows系统,均把串口通信进行了封装,我们对串口的操作简化为文件操作,只不过,和普通文件相比,它在打开文件后,需要设定串口通讯参数,并需要处理好串口读写的超时问题。通常在PC机上串口的读写由独立的线程完成,在需要读写串口时,读写线程启动,对串口进行初始化,然后循环关注串口,当读到数据后,产生消息通知主线程。
在单片机上,情况相对复杂,有的开发平台也进行了封装,有的没有,不管是否封装,操作方法都不大相同,需按照单片机或开发平台的数据手册执行。但是89C52兼容机均可以通过对串口寄存器的操作来完成的,这个过程中的核心是以下几个问题:1、通讯模式设定;2、波特率发生器(定时器)的选择和设定;3、波特率的计算和设定;4、控制寄存器进行数据通讯。
通讯模式有4种:1、同步位移串行,在该模式1帧信息8位,即8位数据位;2、8位异步波特率可变,在该模式1帧信息10位,1个起始位,8位数据位,1个停止位;3、9位异步,在该模式1帧信息11位,1个起始位,8位数据位,1个可编程位,1个停止位;4、9位异步波特率可变,1帧信息11位同模式3。
需要特别说明的是由于信号的电平标准不同,不能单片机的串口直接接在COM口(即DB-9接口)的对应针脚上,必须通过电路转换。常见的转换芯片有MAX232芯片,每个MAX232芯片可以完成两组DB-9到TFL的转换(电路图可以参见MAX232 Data Sheet,此处略)。在实际应用中,直接用COM口加转换芯片的情况并不多见,更多的情况是用USB接口模拟COM口,其另一端直接就是单片机所用的TTL电平信号。
三、RS-422和RS485接口
RS-422标准全称是“平衡电压数字接口电路的电气特性”,它推出不久就发展了更高级的RS-485。它们相对于RS-232最大的优点有:首先是多机通讯,一主多从的通讯方式,允许一条总线上可以连接多达32个设备;其次大大延伸了通讯距离,通讯距离从十几米延伸至上千米。再次是通许速率大大提高,最高传输速率为10Mbps。另外,由于其驱动电压也从25V降到6V,这样也就延长了接口电路的芯片的寿命;最后是连线方式也大大简化,从原来的9线,变为两线制(不含信号地。以前RS485也有四线制接法,该接法为全双工,但是只能实现点对点的通信方式,现很少采用)。由于PC机多数没有RS485接口,在实际中RS485很少独立使用,而是通过转换器将DB-9接口的RS-232转换成RS-485接口转换器,采用屏蔽双绞线传输。RS-485其典型的连线方式如图1。
需要注意485总线必须要单点可靠接地。单点就是整个485总线上只能是有一个点接地,不能多点接地,因为将其接地是因为要将地线(一般都是屏蔽线作地线)上的电压保持一致,防止共模干扰,如果多点接地适得其反。另外在在低速、短距离、无干扰的场合可以不要匹配电阻,相反必须有120欧的匹配电阻。
由于在一条总线上有多个设备,为了防止多个设备同时发出信息而相互干扰(撞包),一主多从时,只能半双工通讯,如果从机要上报信息,只能等待主机轮询到该从机时,才可以发送信息,而主机发出的信息包所有从机都可接收到信息,所以主机发出的信息包中要有从机地址码,以便从机辨识发送给自己的信息包。
四、RS232、RS485和TTL之间的转换
RS232和RS485的时序是相同的,只有电平标准不同,所以只要通过转换电路将两者之间电平之间转换即可。转换电路见图2:
在这个电路中MAX232芯片将RS232转换为TTL信号,MAX485芯片将串口TTL信号转换为RS485标准。
五、其他常见串口标准
其他和单片机相关的常见的串口通讯技术和标准有:12C、CAN、SPI/QSPI、USB、TTL等。其中TTL不是串行通讯技术,它是计算机处理器控制的设备内部,各部分之间通信的电平标准,+5V等价于逻辑“1”,0V等价于逻辑“0”。USB作为PC机最常用的外设接口,可以在PC机端模拟串口,但是其另一端不是标准RS232口,而是TTL信号。在上边提到的技术中12C、CAN由于时序不同,所以无法通过电路转换成RS232标准。
在通讯距离上12C和TTL通常是一块主板上的不同芯片间的通讯,SPI/QSPI和USB通常是在几米的通讯距离;CAN控制器局域网属于现场总线的范畴,是一种有效支持分布式控制系统的串行通信网络。通信距离最远可达10KM(速率低于5Kbps)速率可达到1Mbps(通信距离小于40M),可用于汽车、舰船上的设备控制。