串口的工作原理

引言

串行端口一直被视作计算机最基础的外部连接设备之一,在过去的20多年时间里,它一直是大多数计算机不可或缺的组成部分。虽然许多较新的系统在采用USB连接设备后,已经彻底放弃了串行端口,但大多数调制解调器都仍然在使用,一些打印机、掌上型电脑 和数码相机也是如此。不过,计算机所带的串行端口一般都不会超过两个。





portmon串口监控 串口监控原理_流控制

­


PC背面的两个串行端口


从本质上说,串行端口可提供标准的连接器和协议,允许我们将调制解调器等设备连接到计算机上。

串行端口怎样传输数据

当今人们使用的所有计算机操作系统都支持串行端口,因为其“入驻”计算机已有数十年的历史了。而并行端口的发明要晚得多,速度也比串行端口快得多。USB端口的历史只有数年,它很可能在接下来的几年内全面取代串行端口和并行端口。

之所以取名为“串行”端口,是因为这种端口会将数据“串行化”。更具体地说,它一次获取一个字节的数据并传输该字节的8位。这样做的优势在于,串行端口只需要一条线路就能传输8个位,而并行端口则需要8条。相应的劣势在于,其传输数据的用时是拥有八条线路时的8倍。此外,串行端口还可以降低线缆成本,使线缆更加小巧。

在发送数据的每个字节之前,串行端口会发送一个开始位,这是一个值为0的单个位。在发送完数据的每个字节之后,它将发送一个停止位,表示该字节已传输完成。此外,它还可以发送奇偶校验位。

串行端口也称为通信(COM)端口,是一种双向端口。在双向通信中,每个设备都可以接收数据和传输数据。串行设备使用不同的针脚来接收和传输数据——如果使用相同的针脚,通信将限制为半双工模式,这表示信息一次只能在一个方向上传播。使用不同的针脚可以实现全双工通信,在这种模式中,信息可以同时在两个方向上传播。



portmon串口监控 串口监控原理_数据_02


这个40针的双列直插封装(DIP)芯片是美国国家半导体公司NS16550D UART芯片的一种型号。


串行端口依靠特殊的控制器芯片通用异步接收/传输器(UART)来实现自己的功能。UART芯片从计算机的系统总线获得并行输出,然后将其转换成串行形式,以便通过串行端口传输。为了提高效率,大多数UART芯片都内置有16到64千字节的缓冲区。利用这个缓冲区,芯片便可以在处理要流向串行端口的数据的同时,缓存从系统总线流入的数据。大多数标准串行端口的最大传输速率为115Kbps(千比特每秒),增强型串行端口(ESP)和超级增强型串行端口(Super ESP)等高速串行端口可以实现460Kbps的数据传输速率。

串行连接设备

适用于串行端口的外部连接器可以是9针脚的,也可以是25针脚的。最初,串行端口的主要用途是将调制解调器连接到计算机上。针脚的功能分配反映了这一点。下面,让我们详细了解一下在连接调制解调器时,每个针脚都有何作用。



portmon串口监控 串口监控原理_portmon串口监控_03


9针和25针串行连接器特写


9针连接器:

  1. 载波检测——确定调制解调器是否连接到了可用的电话线路。
  2. 接收数据——计算机接收调制解调器发送过来的信息。
  3. 传输数据——计算机向调制解调器发送信息。
  4. 数据终端就绪——计算机通知调制解调器自己已准备好通话。
  5. 信号地线——针脚接地。
  6. 数据集就绪——调制解调器通知计算机自己已准备好通话。
  7. 请求发送——计算机询问调制解调器是否可以发送信息。
  8. 同意发送——调制解调器通知计算机可以发送信息。
  9. 振铃指示器——发起呼叫后,计算机指示检测到振铃的信号(发送自调制解调器)已收到。

25针连接器:

  1. 未使用
  2. 传输数据——计算机向调制解调器发送信息。
  3. 接收数据——计算机接收调制解调器发送过来的信息。
  4. 请求发送——计算机询问调制解调器是否可以发送信息。
  5. 同意发送——调制解调器通知计算机可以发送信息。
  6. 数据集就绪——调制解调器通知计算机自己已准备好通话。
  7. 信号地线——针脚接地。
  8. 已接收线路信号检测器——确定调制解调器是否连接到了可用的电话线路。
  9. 未使用:传输当前回路返回值(+)
  10. 未使用
  11. 未使用:传输当前回路数据(-)
  12. 未使用
  13. 未使用
  14. 未使用
  15. 未使用
  16. 未使用
  17. 未使用
  18. 未使用:接收当前回路数据(+)
  19. 未使用
  20. 数据终端就绪——计算机通知调制解调器自己已准备好通话。
  21. 未使用
  22. 振铃指示器——发起呼叫后,计算机指示检测到振铃的信号(发送自调制解调器)已收到。
  23. 未使用
  24. 未使用
  25. 未使用:接收当前回路返回值(-)

通过针脚发送的电压可以是以下两种状态之一:开或关。开(二进制值“1”)表示该针脚正在传输-3到 -25伏之间的信号,而关(二进制值“0”)表示该针脚正在传输+3到+25伏之间的信号。

流控制

串行通信一个很重要的方面就是流控制的概念。利用流控制,一个设备便能够通知另一个设备暂时停止发送数据。启用流控制需要用到命令“请求发送”(RTS)、“同意发送”(CTS)、“数据端就绪”(DTR) 和“数据集就绪”(DSR)。



portmon串口监控 串口监控原理_portmon串口监控_04


双串行端口插卡


让我们通过示例看看流控制的工作方式:您有一个以56Kbps的速度进行通信的调制解调器。计算机和调制解调器之间的串行连接以115Kbps的速度传输数据,这是前一个速度的两倍多。这表示,调制解调器从计算机获得的数据多于它能够通过电话线路传输的数据。即使调制解调器有128K的缓冲区来存储数据,它仍将很快耗尽缓冲区空间,以至于无法妥善处理流入的所有数据。

借助流来进行控制,调制解调器可以在来自计算机的数据流耗尽自己的缓冲区之前,让该数据流停止。计算机将持续在“请求发送”针脚上发送信号,同时检查“同意发送”针脚上的信号。如果没有“同意发送”响应,则计算机停止发送数据,直至收到“同意发送”信号才恢复发送。这将使得调制解调器能够保持数据流的平稳流动。