串行编程/MAX232 驱动接收器
串行编程: 介绍和 OSI 网络模型 -- RS-232 接线和连接 -- 典型 RS232 硬件配置 -- 8250 UART -- DOS -- MAX232 驱动/接收器系列 -- Windows 中的 TAPI 通信 -- Linux 和 Unix -- Java -- Hayes 兼容调制解调器和 AT 命令 -- 通用串行总线 (USB) -- 形成数据包 -- 纠错方法 -- 双向通信 -- 数据包恢复方法 -- 串行数据网络 -- 实际应用开发 -- 串行连接上的 IP
此模块主要针对那些用 RS-232 接口构建自己电子设备的人。带有 RS-232 接口的现成计算机已经包含了必要的电子元件,因此无需添加此处所述的电路。
串行 RS-232 (V.24) 通信使用电压(-15 V ... -3 V 用于传输二进制 '1',+3 V ... +15 V 用于传输二进制 '0'),这些电压与当今的计算机逻辑电压不兼容。另一方面,经典的 TTL 计算机逻辑工作在 0 V ... +5 V 之间(大约 0 V ... +0.8 V 被称为二进制 '0' 的低电平,+2 V ... +5 V 称为二进制 '1' 的高电平)。现代低功耗逻辑工作在 0 V ... +3.3 V 甚至更低的范围内。
因此,最大 RS-232 信号电平对于当今的计算机逻辑电子器件来说太高了,而计算机逻辑根本无法产生负 RS-232 电压。因此,要接收来自 RS-232 接口的串行数据,必须降低电压,并将0 和1 电压电平反转。在另一个方向(将数据从某个逻辑发送到 RS-232)上,必须“提升”低逻辑电压,并同时产生负电压。
RS-232 TTL Logic ----------------------------------------------- -15 V ... -3 V <-> +2 V ... +5 V <-> 1 (idle state) +3 V ... +15 V <-> 0 V ... +0.8 V <-> 0 (start bit)
所有这些都可以通过传统的模拟电子器件实现,例如特定的电源和一对 晶体管,或者曾经很流行的 MC1488(发射器)和 MC1489(接收器)集成电路。然而,十多年来,在业余电子领域,使用 MAX232 系列的集成电路(通常是 MAX232A 或其克隆)进行必要的信号电平转换已经成为标准做法。事实上,很难在业余电子领域找到没有 MAX232A 或其克隆的 RS-232 电路。
我们将在本书的后面部分更详细地讨论 信号位。
MAX232 是 Maxim 推出的第一个集成电路,它在一个封装中包含了必要的驱动器(两个)和接收器(也是两个),用于将 RS-232 信号电平适配到 TTL 逻辑。它之所以流行,是因为它只需要一个电压 (+5 V),并在内部产生必要的 RS-232 电压电平(约 -10 V 和 +10 V)。这极大地简化了电路设计。电路设计师不再需要设计和制造具有三个电压(例如 -12 V、+5 V 和 +12 V)的电源,而只需提供一个 +5 V 电源,例如通过使用简单的 78x05 电压调节器。
MAX232 有一个继任者,MAX232A。这两个集成电路几乎完全相同,然而,MAX232A 比原始的 MAX232 使用得更广泛(也更容易获得),并且 MAX232A 只需要外部电容是原始 MAX232 所需电容的十分之一。
应该注意的是,MAX232(A) 只是一个驱动器/接收器。它不会生成具有正确时序的必要的 RS-232 标记和空格序列,它不会解码 RS-232 信号,它不会提供串行/并行转换。它只做信号电平转换。生成具有正确时序的串行数据和解码串行数据必须由额外的电路完成,例如由 16550 UART 或越来越流行的小型微控制器(例如 Atmel AVR、Microchip PIC)完成。
MAX232 和 MAX232A 曾经是相当昂贵的集成电路,但今天已经很便宜了。许多公司现在生产克隆产品(例如 Sipex)也起到了一定的作用。这些克隆有时需要不同的外部电路,例如外部电容的容量会有所不同。建议查看特定制造商的集成电路数据手册,而不是依赖 Maxim 的原始数据手册。
原始制造商(以及现在一些克隆制造商)提供了一系列类似的集成电路,它们具有不同的接收器和驱动器数量、电压、内置或外部电容等。例如,MAX232 和 MAX232A 需要外部电容用于内部电压倍增器,而 MAX233 则内置了这些电容。MAX233 在电子商店中的价格也比 MAX232A 高出三到十倍,因为它的内部电容。MAX233 也比常见的 MAX232A 更难获得。
如今,MAX3232 这种类似的集成电路可用于低功耗 3 V 逻辑。
- MAX232(A) DIP 封装
编号 | 名称 | 用途 | 信号电压 | MAX232 电容值 | MAX232A 电容值 |
1 | C1+ | 电容 C1 的 + 端连接器 | 电容应至少承受 16 V | 1 µF | 100 nF |
2 | V+ | 电压倍增器的输出 | +10 V,电容应至少承受 16 V | 1 µF 至 VCC | 100 nF 至 VCC |
3 | C1- | 电容 C1 的 - 端连接器 | 电容应至少承受 16 V | 1 µF | 100 nF |
4 | C2+ | 电容 C2 的 + 端连接器 | 电容应至少承受 16 V | 1 µF | 100 nF |
5 | C2- | 电容 C2 的 - 端连接器 | 电容应至少承受 16 V | 1 µF | 100 nF |
6 | V- | 电压倍增器/反相器的输出 | -10 V,电容应至少承受 16 V | 1 µF 至 GND | 100 nF 至 GND |
7 | T2out | 驱动器 2 输出 | RS-232 | ||
8 | R2in | 接收器 2 输入 | RS-232 | ||
9 | R2out | 接收器 2 输出 | TTL | ||
10 | T2in | 驱动器 2 输入 | TTL | ||
11 | T1in | 驱动器 1 输入 | TTL | ||
12 | R1out | 接收器 1 输出 | TTL | ||
13 | R1in | 接收器 1 输入 | RS-232 | ||
14 | T1out | 驱动器 1 输出 | RS-232 | ||
15 | GND | 接地 | 0 V | 1 µF 至 VCC | 100 nF 至 VCC |
16 | VCC | 电源 | +5 V | 见上文 | 见上文 |
V+(2) 也通过一个电容 (C3) 连接到 VCC。V-(6) 通过一个电容 (C4) 连接到 GND。GND(15) 和 VCC(16) 也通过一个电容 (C5) 连接,尽可能靠近引脚。
MAX232(A) 具有两个接收器(将 RS-232 转换为 TTL 电压电平)和两个驱动器(将 TTL 逻辑转换为 RS-232 电压电平)。这意味着每个方向只能转换两个 RS-232 信号。旧的 MC1488/1489 组合提供了四个驱动器和接收器。
通常使用一对 MAX232 的发送器/接收器来实现
- TX 和 RX
另一个用于
- CTS 和 RTS。
MAX232 中没有足够的发送器/接收器来连接 DTR、DSR 和 DCD 信号。通常在例如与 PC 的串行接口通信时可以省略这些信号。如果 DTE 确实需要这些信号,则需要第二个 MAX232,或者可以使用 MAX232 家族中的其他 IC(如果在消费电子商店中能找到)。下面还给出了 DTR/DSR 的另一种替代方案。
Maxim 的数据手册详细解释了 MAX232 家族,包括引脚配置以及如何将此类 IC 连接到外部电路。此信息可以在自己的设计中按原样使用,以获得可工作的 RS-232 接口。Maxim 的数据只缺少一个关键信息:如何将 RS-232 信号精确地连接到 IC。因此,这里有一个可能的示例
MAX232 引脚编号 | MAX232 引脚名称 | 信号 | 电压 | DE9 引脚 |
7 | T2out | RTS | RS-232 | 8 |
8 | R2in | CTS | RS-232 | 7 |
9 | R2out | CTS | TTL | n/a |
10 | T2in | RTS | TTL | n/a |
11 | T1in | TX | TTL | n/a |
12 | R1out | RX | TTL | n/a |
13 | R1in | TX | RS-232 | 3 |
14 | T1out | RX | RS-232 | 2 |
15 | GND | GND | 0 | 5 |
此外,可以将 DTR(DE9 引脚 4)直接连接到 DSR(DE9 引脚 6),而无需经过任何电路。这将自动(无脑)DSR 确认传入的 DTR 信号。
有时,MAX232 的引脚 6 会硬连接到 DCD(DE9 引脚 1)。不建议这样做。引脚 6 是用于 -10 V 电压的电压泵和反相器的原始输出。从引脚中汲取电流会导致电压快速击穿,并导致两个 RS-232 发送器的输出电压击穿。最好使用不关心 DCD 的软件,但仅通过 CTS/RTS 进行硬件握手。
该电路通过将五个电容器连接到 IC 来完成。MAX232 需要 1.0 µF 电容器,MAX232A 需要 0.1 µF 电容器。MAX232 克隆显示出类似的差异。建议查阅相应的数据手册。应使用至少 16 V 的电容器类型。如果使用电解电容器或钽电容器,则必须注意极性。下表中列出的第一个引脚始终是电容器的正极应连接到的位置。
电容器 | + 引脚 | - 引脚 | 备注 |
C1 | 1 | 3 | |
C2 | 4 | 5 | |
C3 | 2 | 16 | |
C4 | GND | 6 | 这看起来不直观,但由于引脚 6 在 -10 V 上,GND 获取 + 连接器,而不是 - |
C5 | 16 | GND |
5 V 电源连接到
- +5 V:引脚 16
- GND:引脚 15
替代方案
[edit | edit source]数据线缆
[edit | edit source]随着移动电话的兴起,用于这些手机的所谓的数据线也变得流行起来。这些是将手机连接到计算机串行接口的线缆[1]。有趣的是,现代移动电话在数据总线上使用 3.3 V 逻辑,而旧款手机使用 5 V 逻辑。因此,这些数据线必须将手机逻辑电压电平转换为 RS232 电压电平,反之亦然。
无名数据线已经变得相当便宜(与原始手机品牌数据线相比)。具有电压转换器的廉价线缆可以用作自制 MAX232 基电路的替代方案。优点是线缆占用空间更小(转换器通常位于 RS232 插头内部)。这种线缆还可以节省焊接电路板的麻烦。另一个优点是,它也可能是这种数据线的缺点,即它们通常从 RS232 连接器获取电源。这节省了外部电源,但也可能导致问题,因为 RS232 接口并非设计用来为某些逻辑供电,并且 DTE 可能无法提供足够的电源[2]。另一个缺点是,许多这种线缆只支持 RX 和 TX(一个接收器,一个发送器),而不是像 MAX232 那样有两个发送器/接收器。因此,不可能进行硬件握手。最后,在使用这种线缆时,应确保它们转换到所需的电压(3.3 V 或 5 V)。
(滥)用 USB <-> RS-232 转换器
[edit | edit source]USB 转串行接口线缆通常有两个组件:一个输出串行数据的 USB 收发器;以及一个电压转换器,用于生成符合标准的 RS-232 电压。通常可以丢弃(忽略、拆焊、切除)这些线缆的 USB 部分,连接外部 5 V 电源(或滥用 RS-232 接口)来代替来自 USB 总线的电源,并仅使用 RS-232 电平转换器。所有这些可能与使用 MAX232A 一样多,尽管您可以免费获得一个 RS-232 连接器。
如果您考虑使用 USB 线缆,那么也值得考虑直接使用 USB,而不是 RS-232。许多 USB 收发器芯片可以直接集成到电路中,从而消除了对电压转换组件的需求。诸如 FTDI FT232BM 之类的部件甚至具有一个输入,允许设计人员选择 5 V 或 3.3 V 输出电平。大多数这种 USB 收发器芯片仅作为表面贴装器件提供。但一些供应商提供 DIP 尺寸的预组装模块,通常价格具有竞争力,并且通常带有免费或廉价的驱动程序或驱动程序开发环境。
有关 USB 硬件、与 USB 设备接口以及 USB 设备编程的更多信息,请参阅 Serial Programming:Universal Serial Bus。
MAX232N
[edit | edit source]德州仪器 MAX232(不是 A) 的第二来源。N 表示封装(塑料 DIP),而不是任何特殊的电气特性。这是一个非 A MAX232,因此它需要至少 1µF 电容器。有时可以找到它非常便宜。TI 还提供 MAX3232 和一些其他 RS-232 发送器/接收器,例如 MC148x。
线性技术 LT1181A
[edit | edit source]来自线性技术的 LT1181A 与 MAX232A 非常相似。它具有完全相同的引脚布局,也使用 0.1µF 电容器,通常可以替代 MAX232A。然而,对于业余爱好者来说,通常更难获得这种 IC,而且它们往往比原装 Maxim MAX232A 贵一些。
Intersil HIN202
[edit | edit source]Intersil HIN202 是另一个与 MAX232A 非常相似的 IC。它也具有相同的引脚布局(DIL 封装),使用 0.1 µF 电容器,可以替代 MAX232A。HIN202 尤其适合需要更多 I/O 线(四对)的情况,因为制造商规定两个 HIN202 可以共享一个 V+ 和一个 V- 电容器。因此,生成的电路可以节省两个电容器。
MC1488 和 MC1489
[edit | edit source]MC1488/MC1489 IC 已经提到过。然而,它们现在并不是 MAX232 的真正替代品。这些 IC 的组合具有两倍的发送器/接收器,但 MC1488 发送器需要 +12 V、-12 V 电源,而 MC1489 接收器需要 +5 V 电源。这意味着需要三个电源,而 MAX232 只需要一个。除非电路中已经存在所需的 ±12 V 电源线,否则建议使用两个 MAX232 或一个 MAX238。
外部链接
[edit | edit source]- MAX232 (MAX220 到 MAX249) 产品网页 - Maxim - (5 伏)
- MAX3232 (MAX3222 到 MAX3241) 产品网页 - Maxim - (3.3 或 5 伏)
- MAX3232E (MAX3222E 到 MAX3246E) 产品网页 - Maxim - (3.3 或 5 伏)
- MC1488 产品网页 - Texas Instruments - (+12 和 -12 伏)
- MC1489 产品网页 - Texas Instruments - (5 伏)
- MAX232:构造、操作、类型和应用
串行编程: 介绍和 OSI 网络模型 -- RS-232 接线和连接 -- 典型 RS232 硬件配置 -- 8250 UART -- DOS -- MAX232 驱动/接收器系列 -- Windows 中的 TAPI 通信 -- Linux 和 Unix -- Java -- Hayes 兼容调制解调器和 AT 命令 -- 通用串行总线 (USB) -- 形成数据包 -- 纠错方法 -- 双向通信 -- 数据包恢复方法 -- 串行数据网络 -- 实际应用开发 -- 串行连接上的 IP