串行编程/MAX232 驱动接收器
串行编程: 简介和 OSI 网络模型 -- RS-232 接线和连接 -- 典型 RS232 硬件配置 -- 8250 UART -- DOS -- MAX232 驱动/接收器系列 -- Windows 中的 TAPI 通信 -- Linux 和 Unix -- Java -- Hayes 兼容调制解调器和 AT 命令 -- 通用串行总线 (USB) -- 形成数据包 -- 错误校正方法 -- 双向通信 -- 数据包恢复方法 -- 串行数据网络 -- 实际应用开发 -- IP over 串行连接
本模块主要针对那些构建具有 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(接收器)IC。但是,十多年来,在业余电子领域,使用 MAX232 系列(通常是 MAX232A 或某些克隆)中的集成电路 (IC) 来完成必要的信号电平转换已成为标准做法。事实上,在业余电子领域,很难找到没有 MAX232A 或某些克隆的 RS-232 电路。
我们将在本书后面详细讨论信号位。
来自Maxim 的 MAX232 是第一个在单个封装中包含必要的驱动器 (两个) 和接收器 (也是两个) 的 IC,用于将 RS-232 信号电平转换为 TTL 逻辑。它之所以流行,是因为它只需要一个电压 (+5 V) 并在内部生成必要的 RS-232 电压电平(大约 -10 V 和 +10 V)。这大大简化了电路设计。电路设计师不再需要设计和构建具有三种电压(例如 -12 V、+5 V 和 +12 V)的电源,而是可以使用一个 +5 V 电源,例如,借助简单的 78x05 电压调节器。
MAX232 有一个继任者,即 MAX232A。这两个 IC 几乎完全相同,但是 MAX232A 比原始的 MAX232 更常使用(也更容易获得),并且 MAX232A 只需要原始 MAX232 所需外部电容的 1/10。
需要注意的是,MAX232(A) 只是一种驱动器/接收器。它不会生成具有正确时序的必要的 RS-232 标记和空格序列,它不会解码 RS-232 信号,它不会提供串行/并行转换。它所做的只是转换信号电平。生成具有正确时序的串行数据和解码串行数据必须通过额外的电路完成,例如,通过16550 UART 或越来越流行的这些小型微控制器(例如 Atmel AVR、Microchip PIC)。
MAX232 和 MAX232A 曾经是相当昂贵的 IC,但现在它们很便宜。许多公司现在生产克隆(例如 Sipex)也起到了帮助作用。这些克隆有时需要不同的外部电路,例如,外部电容的容量会有所不同。建议查看特定制造商的 IC 数据手册,而不是依赖 Maxim 的原始数据手册。
原始制造商(现在也有一些克隆制造商)提供了一系列类似的 IC,具有不同的接收器和驱动器数量、电压、内置或外部电容等等。例如,MAX232 和 MAX232A 需要外部电容才能实现内部电压倍增器,而 MAX233 则内置了这些电容。MAX233 在电子商店的售价也比 MAX232A 高出三到十倍,因为其内部电容。MAX233 也比常见的 MAX232A 更难获得。
现在可以使用类似的 IC 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),而无需经过任何电路。这提供了对传入 DTR 信号的自动(无脑)DSR 确认。
有时,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
随着移动电话的兴起,用于这些电话的所谓数据线也变得流行起来。这些是连接移动电话到计算机串行接口的电缆[1]。有趣的是,现代移动电话在其数据总线上使用 3.3 V 逻辑,而旧的手机使用 5 V 逻辑。因此,这些数据线必须并将手机逻辑电压电平转换为 RS232 电压电平,反之亦然。
无名数据线已经变得相当便宜(与原始手机品牌数据线相反)。具有电压转换器的廉价电缆可以用作自制 MAX232 基于电路的替代方案。优点是电缆占用空间更少(转换器通常位于 RS232 插头内)。此类电缆还可以节省焊接电路板的麻烦。另一个优点(也可以是此类数据线的缺点)是它们通常从 RS232 连接器获取电源。这节省了外部电源,但也会造成问题,因为 RS232 接口并非设计用于为某些逻辑供电,并且 DTE 可能无法提供足够的电源[2]。另一个缺点是,许多此类电缆只支持 RX 和 TX(一个接收器,一个驱动器),而不是像 MAX232 那样具有两个驱动器/接收器。因此,不可能进行硬件握手。最后,使用此类电缆时,应确保它们转换为所需的电压(3.3 V 或 5 V)。
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。
德州仪器 MAX232(不是 A) 的第二来源。N 指示封装(塑料双列直插式),而不是任何特殊的电气特性。这是一个非 A MAX232,因此它需要至少 1µF 电容。有时可以发现它相当便宜。TI 还提供 MAX3232 和许多其他 RS-232 驱动器/接收器,如 MC148x。
来自 Linear Technology 的 LT1181A 与 MAX232A 非常相似。它具有完全相同的引脚布局,也使用 0.1µF 电容,并且通常可以替代 MAX232A。但是,对于爱好者来说,通常有点难以获得,并且它们往往比原始的 Maxim MAX232A 贵一些。
Intersil HIN202 是另一个与 MAX232A 非常相似的 IC。它也具有相同的引脚布局(DIL 封装),使用 0.1 µF 电容,可以替代 MAX232A。当需要更多 I/O 线(四对)时,HIN202 尤其有趣,因为制造商规定两个 HIN202 可以共享一个 V+ 和一个 V- 电容。因此,最终电路节省了两个电容。
已经提到了 MC1488/MC1489 IC。但是,它们如今并不是 MAX232 的真正替代品。这些 IC 的组合具有两倍的驱动器/接收器,但 MC1488 驱动器需要 +12 V,-12 V 电源,而 MC1489 接收器需要 +5 V 电源。这样就变成了三个电源,而不是 MAX232 的一个电源。除非电路中已经存在所需的 ±12 V 电源线,否则建议使用两个 MAX232 或一个 MAX238。
- MAX232 (MAX220 至 MAX249) 产品页面 - Maxim - (5 伏)
- MAX3232 (MAX3222 至 MAX3241) 产品页面 - Maxim - (3.3 或 5 伏)
- MAX3232E (MAX3222E 至 MAX3246E) 产品页面 - Maxim - (3.3 或 5 伏)
- MC1488 产品页面 - 德州仪器 - (+12 和 -12 伏)
- MC1489 产品页面 - 德州仪器 - (5 伏)
- MAX232:构建、操作、类型和应用
串行编程: 简介和 OSI 网络模型 -- RS-232 接线和连接 -- 典型 RS232 硬件配置 -- 8250 UART -- DOS -- MAX232 驱动/接收器系列 -- Windows 中的 TAPI 通信 -- Linux 和 Unix -- Java -- Hayes 兼容调制解调器和 AT 命令 -- 通用串行总线 (USB) -- 形成数据包 -- 错误校正方法 -- 双向通信 -- 数据包恢复方法 -- 串行数据网络 -- 实际应用开发 -- IP over 串行连接