下一页 上一页 目录

19. 引脚定义和信号

19.1 9 针和 25 针串行连接器的引脚定义

引脚编号通常刻在连接器的塑料上,但您可能需要放大镜才能看清。请注意,DCD 有时标记为 CD。母连接器上的引脚编号从右向左读取,右上角为 1(而不是如下所示的公连接器的左上角为 1)。--> 方向是从 PC 输出。

  ___________                    ________________________________________
  \1 2 3 4 5/  Looking at pins   \1  2  3  4  5  6  7  8  9  10 11 12 13/
   \6 7 8 9/  on male connector   \14 15 16 17 18 19 20 21 22 23 24 25/
    ------                         -----------------------------------
Pin #   Pin #   Acronym  Full-Name   Direction  What-it-May-Do/Mean
9-pin   25-pin
 3       2      TxD     Transmit Data     -->   Transmits bytes out of PC
 2       3      RxD     Receive Data      <--        Receives bytes into PC
 7       4      RTS     Request To Send   -->   RTS/CTS flow control
 8       5      CTS     Clear To Send     <--        RTS/CTS flow control
 6       6      DSR     Data Set Ready    <--        I'm ready to communicate
 4      20      DTR     Data Terminal Ready-->  I'm ready to communicate
 1       8      DCD     Data Carrier Detect<--       Modem connected to another
 9      22      RI      Ring Indicator    <--        Telephone line ringing
 5       7      SG      Signal Ground

  9-Pin DB9 Connector                    25-Pin DB-25 Connector
1     DCD   Carrier Detect             1           Chassis Ground             
2     RxD   Receive Data               2     TxD   Transmit Data
3     TxD   Transmit Data              3     RxD   Receive Data
4     DTR   Data Terminal Ready        4     RTS   Request To Send
5     SG    Signal Ground              5     CTS   Clear To Send
6     DSR   Data Set Ready             6     DSR   Data Set Ready
7     RTS   Request To Send            7     SG    Signal Ground
8     CTS   Clear To Send              8     DCD   Carrier Detect
9     RI    Ring Indicator            20     DTR   Data Terminal Ready
                                      22     RI    Ring Indicator

19.2 信号可能没有固定的含义

在 9 个引脚中,只有 3 个引脚具有固定的分配:发送、接收和信号地。这是由硬件固定的,您无法更改它。但是,其他信号线由软件控制,可能执行(和意味着)几乎任何事情。但是,它们只能处于两种状态之一:置位(+12 伏)或否定(-12 伏)。置位是“开”,否定是“关”。例如,Linux 软件可能会命令 DTR 为否定,硬件只会执行此命令并将 -12 伏电压施加到 DTR 引脚上。接收此 DTR 信号的调制解调器(或其他设备)可能会执行各种操作。如果调制解调器以某种方式配置,它将在 DTR 被否定时挂断电话线。在其他情况下,它可能会忽略此信号或在 DTR 被否定(关闭)时执行其他操作。

所有 6 条信号线都是如此。硬件只发送和接收信号,但它们执行什么操作(如果有的话)取决于 Linux 软件以及您连接到串行端口的设备的配置/设计。但是,大多数引脚都有它们通常执行的某些功能,但这可能因操作系统和设备驱动程序配置而异。在 Linux 下,可以修改源代码以使这些信号线的行为不同(有些人已经这样做了)。

19.3 串行端口之间的布线

来自串行端口的电缆始终连接到另一个串行端口。连接到串行端口的外部调制解调器或其他设备内置了串行端口。对于调制解调器,电缆始终是直通的:引脚 2 连接到引脚 2,依此类推。调制解调器被称为 DCE(数据通信设备),计算机被称为 DTE(数据终端设备)。因此,对于连接 DTE 到 DCE,您使用直通电缆。对于连接 DTE 到 DTE,您必须使用零调制解调器电缆(也称为交叉电缆)。有很多方法可以连接这种电缆(请参阅文本终端 HOWTO 子节中的示例:“直接电缆连接”)

它以这种方式工作是有充分理由的。一个原因是信号是单向的。如果引脚 2 发送信号出去(但无法接收任何信号),那么显然您不能将其连接到同类型设备的引脚 2。如果您这样做,它们都将在同一条线上相互发送信号,但两者都无法接收任何信号。有两种方法可以解决这种情况。一种方法是使用两种不同类型的设备,其中第一种类型的设备的引脚 2 将信号发送到第二种类型的设备的引脚 2(后者接收信号)。这就是当您将 PC (DTE) 连接到调制解调器 (DCE) 时所做的方式。还有第二种方法可以在不使用两种不同类型的设备的情况下做到这一点:将发送引脚 2 的引脚连接到同类型设备上的接收引脚 3。这就是当您将 2 台 PC 连接在一起或将 PC 连接到终端 (DTE 到 DTE) 时所做的方式。用于此目的的电缆称为零调制解调器电缆,因为它在不使用调制解调器的情况下连接两台 PC。零调制解调器电缆也可能称为交叉电缆,因为引脚 2 和 3 之间的导线相互交叉(如果您将它们画在一张纸上)。以上示例适用于 25 针连接器,但对于 9 针连接器,引脚编号 2 和 3 恰好相反。

串行引脚指定最初旨在用于将哑终端连接到调制解调器。终端是 DTE(数据终端设备),调制解调器是 DCE(数据通信设备)。今天,PC 通常用作 DTE 而不是终端(但真正的终端仍然可以这样使用)。引脚的名称在 DTE 和 DCE 上是相同的。“接收”和“发送”这两个词是从 PC (DTE) 的“角度”来看的。来自 PC 的发送引脚发送到调制解调器的“发送”引脚(但实际上调制解调器正在从此引脚接收数据,因此从调制解调器的角度来看,它将是一个接收引脚)。

串行端口最初旨在用于连接 DTE 到 DCE,这使得布线变得简单:只需使用直通电缆即可。因此,当连接调制解调器时,人们很少需要担心哪个引脚是哪个引脚。但是人们想要连接 DTE 到 DTE(例如,计算机到终端),并且找到了各种方法通过制造各种类型的特殊零调制解调器电缆来实现这一点。在这种情况下,哪个引脚连接到哪个引脚变得很重要。

19.4 RTS/CTS 和 DTR/DSR 流控制

这是“硬件”流控制。流控制之前在流控制子节中解释过,但没有解释引脚和电压信号。Linux 目前仅支持 RTS/CTS 流控制(但对于支持 DTR/DSR 流控制的特定应用程序,可能存在特殊的驱动程序)。由于 DTR/DSR 流控制的工作方式相同,因此仅讨论 RTS/CTS 流控制。要获得 RTS/CTS 流控制,需要在应用程序中选择硬件流控制,或使用命令
stty -F /dev/ttyS2 crtscts (或类似命令)。这将在 Linux 设备驱动程序中启用 RTS/CTS 硬件流控制。

然后,当 DTE(例如 PC)想要停止流入它的数据流时,它会否定 RTS。“请求发送”否定(-12 伏)表示“请求不要向我发送”(停止发送)。当 PC 准备好接收更多字节时,它会置位 RTS(+12 伏),并且字节流恢复流入。流控制信号总是以与被控制的字节流相反的方向发送。DCE 设备(调制解调器)的工作方式相同,但通过 CTS 引脚发送停止信号。因此,它是使用 2 条线的 RTS/CTS 流控制。

此停止信号在哪些引脚上接收?这取决于我们是 DCE-DTE 连接还是 DTE-DTE 连接。对于 DCE-DTE,它是直通连接,因此显然信号在与发送引脚同名的引脚上接收。它是 RTS-->RTS(PC 到调制解调器)和 CTS<--CTS(调制解调器到 PC)。对于 DTE 到 DTE,连接也很容易理解。RTS 引脚始终发送,CTS 引脚始终接收。假设我们将两台 PC(PC1 和 PC2)通过其串行端口连接在一起。然后它是 RTS(PC1)-->CTS(PC2) 和 CTS(PC1)<--RTS(PC2)。换句话说,RTS 和 CTS 交叉。这种电缆(以及其他也交叉的信号)称为“零调制解调器”电缆。请参阅串行端口之间的布线

有时令人困惑的是,RTS 的原始用途与上述解释相反。此原始含义是:我请求向您发送。此请求旨在从终端(或计算机)发送到调制解调器,如果调制解调器决定批准该请求,则会从其 CTS 引脚向计算机的 CTS 引脚发送回置位的 CTS:您被允许向我发送。请注意,与现代 RTS/CTS 双向流控制相比,这仅保护一个方向的流量:从计算机(或终端)到调制解调器。这种原始用途在现代设备(包括调制解调器)上似乎很少使用。

DTR 和 DSR 引脚

就像 RTS 和 CTS 一样,这些引脚也是成对的。对于 DTE 到 DTE 的连接,它们很可能会交叉。有两种方法可以使用这些引脚。一种方法是将它们用作 RTS/CTS 流控制的替代品。DTR 引脚就像 RTS 引脚,而 DSR 引脚的行为类似于 CTS 引脚。尽管 Linux 不支持 DTR/DSR 流控制,但可以通过将 PC 上的 RTS/CTS 引脚连接到使用 DTR/DSR 流控制的设备上的 DSR/DTR 引脚来获得它。DTR 流控制与 DTR/DSR 流控制相同,但它是单向的,并且仅使用设备上的 DTR 引脚。许多文本终端和一些打印机使用 DTR/DSR(或仅 DTR)流控制。将来,Linux 可能会支持 DTR/DSR 流控制。该软件已经编写完成,但尚不清楚何时(或是否)将其纳入串行驱动程序中。

DTR 和 DSR 的正常用途(非流控制)如下:设备置位 DTR 表示其已通电并准备好运行。对于调制解调器,来自 PC 的 DTR 信号的含义取决于调制解调器的配置方式。否定 DTR 有时称为“挂断”,但它并非总是这样做。一种“挂断”(否定 DTR)的方法是使用命令“stty 0”将波特率设置为 0。尝试从“外部”终端执行此操作可能由于双接口问题而无法工作。请参阅终端上的两个接口。对于内部调制解调器串行端口,它在使用 minicom 的端口上工作正常,但在端口使用 wvdial 的情况下不起作用。为什么?

19.5 防止端口打开

如果“stty -clocal”(或 getty 与“local”标志否定一起使用),则串行端口在 DCD 获得置位(+12 伏)信号之前无法打开。


下一页 上一页 目录