串口通信学习笔记

通信网络

650人已加入

描述

串口似乎是一个比较模糊的概念,UART、COM口、RS-232、RS-485等名称有时都会被称作串口,但是从应用电路上看,三者又显然存在差异。个人理解,我们通常所说的串口是使用串行通信协议的一类接口,而RS-232则是串口通信的一种电平标准。下文将针对EIA发布的《Electronic Industries Association (EIA) RS-232-C Interface Standard》为基础,对相关问题进行讨论。

1.传输速率受什么限制

EIA的标准里明确给定了传输速率的上限为20 kbit/s,但是如图1所示的MAX3232的数据手册表明,其传输速率可达到250 kbit/s,可见,标准中规定的传输速率是可以打破的。那么传输速率的限定是基于什么考虑呢?

串口通信

图1 MAX3232数据手册

怀疑点1:高频信号传输过程中发生衰减,不满足信号质量要求

标准中明确规定,RS-232的电平判决门限为±3V,且负载电容不得大于2500pf,负载电阻在3k~7kohm之间。GB 11014-89附录1中关于电压衰减的要求为6dBV,这里采用更为严苛的电压衰减3dB的标准进行计算。

串口通信

图2 GB 11014-89附录1的相关设定

计算前假设输出电压为±15V,总线电容为2500pf,负载电阻取3kohm,根据GB/T 6107-2000中关于互连电缆直流电阻的约束,输出电阻和直流电缆的阻值设定为25ohm,得到等效电路如图3所示。

串口通信

图3 串口通信等效电路

串口通信

图4 GB/T 6107-2000相关约束

按传输速率为20kbit/s,则总线电容的阻抗值为:

串口通信

则电压在终端的幅值为:

串口通信

可见,电压衰减幅度远未达到3dB。

  • 怀疑点2:为了满足上升时间的要求。

标准中有如下一段说明:

The time required for a data or timing signal to pass through the transition region must not exceed one millisecond or 4 percent of the normal duration of a signal element on that interchange circuit, whichever is the lesser.

这应该是网上所谓的码元畸变率不大于4%的出处,但我个人认为,这里的翻译应为通过过渡区间的时间不大于正常信号持续时间的4%比较合适。即对于20kbit/s的传输速率,通过±3V的持续时间不应大于2us。由于输出阻抗和负载阻抗不在一个量级,将图3的电路进一步简化,看成是一个简单的一阶RC电路,其电压变化应符合以下表达式:

当VT为±3V时,即VT分别0.4和0.6,计算可得:

串口通信

可见,上升时间的余量也是很充足的。

怀疑点3:经验取值。

RS-232是一个比较“古老”的标准,它是由EIA在上世纪70年联合多家厂商一起制定的一项标准,一般而言,标准的制定是为了增强不同厂家之间的兼容性,因此可以推测,在该标准问世之前,各厂家应该已经用上了串口通信,那么各项指标在可以满足需求并留有裕量的情况下,完全可以“拍脑袋”决定(可能是基于当时应用的经验数据,无从查证)。另外,串扰可能是需要考虑的其中一个因素,因为RS-232并非差分信号,因此其抗干扰的能力较弱,而速率越快,往外辐射干扰的能力就越强,标准中电压斜率不能超过30V/us的规定就是基于防止串扰的考虑,但串扰大小同样不好定量评估,只能认为是经验取值。另外,2500pf总线电容的限制也并未找到出处,电容的大小最直接影响的便是信号的上升时间,但前述已说明上升时间的裕量十分充足,因此此处认为总线电容的限制也是经验取值之一。

2.传输距离受什么限制

很多地方都描述RS-232的通信距离最大为15m,还是看标准原文:

The use of short cables, each less than 50 feet or 15 meters, is recommended. Use of longer cables is permissible, however, provided that load capacity requirements are met。

可见,15m并不是硬性要求,当使用负载电容较小的电缆时,通信距离可以增加。具体需要考虑的因素可以参照GB 12166-90的附录A,如图5所示:

串口通信

串口通信

图5 GB 12166-90附录A

GB 12166-90说明了数字接口的最大工作距离是主要是近端串扰总和的函数,在限定了线缆类型(双绞同芯电话电缆,同时也给定了线间电容)、串扰水平(近端串扰小于1V)以及驱动能力(12V峰峰值)等因素,得到了一条速率或长度与上升时间之间的关系。由此出发考虑最大通信距离应该是比较全面的。

3.串口通信协议——以UART协议为例

一般而言,通信过程可大致分为:握手—发送—接收—校验—应答等步骤,UART是一个异步通信标准,在通信设备之间只传递数据信号,不传递时钟信号,在通信前,首先要对两台通信设备的相关参数进行设定,比如:传输速率、帧格式等。图6为异步通信协议的帧格式。

串口通信

图6 异步通信协议帧格式

串口总线空闲时为高电平,当接收设备接收到低电平时,意味着通信开始。在起始位为七位数据,一般从低位开始传输,第九位为数据校验位,UART通信采用奇偶校验。最后一位为停止位,即把总线电平拉高。从UART通信的协议可以看到,握手的过程在通信前的设定,起始位后不用等对方应答便开始传输数据,在完成一帧数据传输后,也不必等待对方应答,看数据是否传输成功,总的来说是一种较为简单的通信协议。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分