概述

串口是老式 PC 机上必备的接口,然而近年来它正逐渐淡出我们的视线,被设计上更优良的 USB 接口所取代,但是你若想跟嵌入式设备或古董计算机通讯,串口仍是最简单也是最高效的通讯方式。

此系列文章共 2 篇,笔者作为「非专业嵌入式工程师」,结合之前项目上的应用和自身理解,将分别从理论和实践两方面对 RS-232 串口进行介绍,同时致敬逐渐淡出我们视线的串口。

什么是串口

串行接口简称串口,也称串行通信接口或串行通讯接口 ( 通常指 COM 接口 ),是采用串行通信方式的扩展接口。串行接口 ( Serial Interface ) 是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信 ( 可以直接利用电话线作为传输线 ),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。

串行接口、并行接口是按照数据传输方式来划分的,串行接口是一大类接口。USB、RS232、SATA、PS/2、RS485 等等,这些都属于串行接口;但一般情况下,如果没有特殊说明而只是说「串口」的话,通常特指 RS-232 接口。

RS-232

RS-232 是美国电子工业联盟 ( EIA ) 制定的序列数据通讯的接口标准,原始编号全称是 EIA-RS-232 ( 简称 RS232 ),它被广泛用于计算机串行端口外设联机。

老式 PC 机上的 COM1、COM2 接口,就是 RS-232 接口,RS-232 对电气特性、逻辑电位和各种信号线功能都作了规定。

RS-232的连接器

常见的 RS-232 的连接器分为:DB25、DB15、DB9 三类,其中以 DB9 最为常见。

DB9 即连接头上有 9 个引脚,DB25 为 25 个引脚。在计算机上的 RS-232 均是公头,即使是 25Pin 也是公头。

-c300

图 1. DB25 示意图

数据流动模式

当资料传送与接收,传输在线的数据流动情形可以分成三种: 单工:数据流动只有一个方向时。 半双工:数据流动是双向,但同一时间只能一个方向行进。 全双工:数据流动是双向,且具有两个方向的传输能力时。

串口的工作模式

串行通讯的方式可以分为同步式 ( Synchronous ) 及异步式 ( Asynchronous ) 两种。

同步式在通讯的两端使用同步讯号作为通讯的依据;而异步式则使用起始位 ( Start Bit ) 及停止位 ( Stop Bit ) 作为通讯的判断,现在则是以使用异步传输较多。

非同步传输只要9支脚就够了;如要采用同步传输则需使用到 25 支脚。

电缆长度:在通信速率低于 20kb/s 时,RS-232C 所直接连接的最大物理距离为 15m。

DB9 脚位详解

在认识 DB9 脚位之前,我们先来明确两个名词概念: 数据终端设备 DTE ( Data Terminal Equipment ) 数据通信设备 DCE ( Data Communication Equipment )

以计算机端和调制解调器为例: –DTE:计算机 –DCE:调制解调器(俗称上网用的「猫」)

-c300

图2. DB9 脚位示意图
脚位 简写 意义
Pin 1 CD或DCD 载波侦测 (Carrier Detect)
Pin 2 RXD 接收字符 (Receive)
Pin 3 TXD 传送字符 (Transmit)
Pin 4 DTR 资料终端备妥 (Data Terminal Ready)
Pin 5 GND 地线 (Ground)
Pin 6 DSR 数据设备备妥 (Data Set Ready)
Pin 7 RTS 要求传送 (Request to Send)
Pin 8 CTS 清除以传送 (Clear To Send)
Pin 9 RI 响铃侦测 (Ring Indicator)

所谓传送、接收是从 DTE 装置的观点来说明,TXD、DTR 和 RTS 讯号是由 DTE 产生的,RXD、DSR、CTS、DCD 和 RI 讯号是由 DCE 产生的。

  1. DCD :计算机←调制解调器 调制解调器通知计算机有载波被侦测。
  2. RXD:计算机←调制解调器 接收数据。
  3. TXD:计算机→调制解调器 传送数据。
  4. DTR:计算机→调制解调器 计算机告诉调制解调器,计算机端已准备好。
  5. GND:计算机=调制解调器 地线。
  6. DSR:计算机←调制解调器 调制解调器告诉计算机,调制解调器端已准备好。
  7. RTS:计算机→调制解调器 计算机要求调制解调器将数据送入。
  8. CTS:计算机←调制解调器 调制解调器通知计算机可送出数据。
  9. RI:计算机←调制解调器 调制解调器通知计算机有电话进来。

波特率

串行通讯在软件设定里需要做多项设定,最常见的设定包括波特率 ( Baud Rate )、同位检查 ( Parity Check ) 和停止位 ( Stop Bit )。

波特率:是指从一装置发到另一装置的比特率,即每秒钟多少位 bits per second ( bit/s ) 。典型的波特率是 300, 1200, 2400, 9600, 115200, 19200 等 bit/s 。一般通讯两端装置都要设为相同的波特率,但有些装置也可以设定为自动检测波特率。

起始位及停止位:当双方准备要开始传送数据时,发送端会在所送出的字符前后,分别加上低电位的起始位及高电位的停止位,接收端会依起始位及停止位的设定,确实地接收到字符。当加入了起始位及停止位,也才比较容易达到多字符的接收能力,起始位固定为一个位,而停止位则有 1、1.5、2 个位等多种选择,只要通讯双方协议通过即可。

将传送字符依上述的说明组合起来之后,就形成了传输资料的格式如下:

起始位+传送字符+同位位+停止位

假设在传输时用了 1 个起始位,传送字符为八个位,1 个停止位,不使用同位检查,则所传输的数据总共 10 个位,所以此时最小的传输单元是以 10 位为单位。

若我们采用 19200bps 的传输速度,每一秒便可传输 19200/10 = 1920 (Bytes) 的资料。

看到这里,脑瓜子又嗡嗡的吧!没错,纯理论有时候就是有些枯燥无味,但是理论是实践的基石,有了理论基础才能更好地解决实践中的问题。

下一篇「串口通信之应用篇」敬请期待!