从串口到SerDes接口进阶 - 第2节

一、RS232电平与TTL电平转换

做硬件设计这些年,我见过不少新手在串口通信上栽跟头。说白了,问题往往出在一个地方——电平不匹配。

TTL电平,我们平时用的最多。3.3V或5V代表逻辑“1”,0V代表逻辑“0”。这是芯片内部的标准。但RS232不一样,它用的是负逻辑:-3V到-15V代表逻辑“1”,+3V到+15V代表逻辑“0”。

为什么会这样?RS232设计于上世纪60年代,当时为了抗干扰,故意把电压摆幅拉大。你想想看,在工业现场,电缆可能走十几米,TTL那点电压早就被噪声淹没了。

关键区别总结:

  • TTL电平:逻辑1 = 3.3V/5V,逻辑0 = 0V
  • RS232电平:逻辑1 = -3V ~ -15V,逻辑0 = +3V ~ +15V
  • 两者不能直接相连,必须做电平转换

我在项目中遇到过一件事。有个同事把单片机TX直接连到电脑串口,结果电脑串口烧了。嗯,这就是典型的电平不匹配导致的悲剧。RS232的±12V直接灌进TTL引脚,不烧才怪。

二、MAX232芯片应用

MAX232是TI(原Maxim)的经典芯片。说实话,这芯片我用了十几年,从来没让我失望过。

2.1 芯片内部结构

MAX232内部集成了两路驱动器和两路接收器。它最厉害的地方是内置了电荷泵,能把5V电源转换成±10V左右的RS232电平。

电荷泵的工作原理其实不复杂:通过内部振荡器控制电容充放电,实现电压倍增和反转。我习惯把它理解成“电压搬运工”——把5V搬成+10V,再搬出一份-10V。

2.2 典型电路连接

这是我最常用的接法,几乎每个串口项目都这么干:

// MAX232典型接线(以5V系统为例)
// 电源部分
VCC → 5V
GND → GND
C1+ → 1μF电容正极
C1- → 1μF电容负极
C2+ → 1μF电容正极  
C2- → 1μF电容负极

// TTL侧(连接单片机)
T1IN → 单片机TX
R1OUT → 单片机RX

// RS232侧(连接DB9)
T1OUT → DB9的Pin2(RXD)
R1IN → DB9的Pin3(TXD)

我的经验:电容值不要随意改。MAX232数据手册推荐1μF,我试过用0.1μF,结果输出电平不够,通信不稳定。后来老老实实换回1μF,问题解决。

2.3 选型建议

MAX232家族有很多变体,我列个表方便你参考:

型号 供电电压 通道数 速率 适用场景
MAX232 5V 2发2收 120kbps 经典款,通用
MAX3232 3.3V 2发2收 250kbps 低压系统
MAX3221 3.3V 1发1收 1Mbps 单通道高速

我个人习惯,3.3V系统首选MAX3232,5V系统用MAX232。如果你只需要一路串口,MAX3221能省点空间和成本。

三、串口DB9接口定义

DB9接口,做硬件的没人不认识。但你真的搞清楚每个引脚干嘛用的吗?

3.1 引脚定义

DB9分公头和母头。公头是带针的,母头是带孔的。电脑上的串口通常是公头,我们做的设备一般用母头。

引脚号 名称 方向 功能说明
1 DCD 输入 载波检测
2 RXD 输入 接收数据
3 TXD 输出 发送数据
4 DTR 输出 数据终端就绪
5 GND - 信号地
6 DSR 输入 数据设备就绪
7 RTS 输出 请求发送
8 CTS 输入 清除发送
9 RI 输入 振铃指示

注意:很多应用只用2、3、5三根线就能通信。我曾经见过有人把所有引脚都接了,结果因为地环路导致通信异常。记住,简单就是可靠。

3.2 三线制接法

大多数嵌入式系统只需要三线制:

  • Pin2(RXD)接对方TXD
  • Pin3(TXD)接对方RXD
  • Pin5(GND)接对方GND

注意,RXD和TXD要交叉连接。这个坑我踩过——第一次做串口线,直连了TXD到TXD,结果怎么都收不到数据。后来才反应过来,串口通信是交叉的。

3.3 硬件流控

如果数据量大,建议用硬件流控。RTS和CTS就是干这个的。RTS请求发送,CTS允许发送。我一般在高速通信(115200以上)才用流控,低速场景三线制足够了。

四、知识体系总览

下面这张图是我梳理的本章知识结构,帮你快速建立整体认知:

串口硬件设计知识体系 RS232 ↔ TTL电平转换 MAX232芯片应用 DB9接口定义 TTL: 3.3V/5V ↔ 0V RS232: ±3V ~ ±15V 负逻辑:1为负,0为正 内置电荷泵升压 2发2收通道 电容1μF不可随意改 9引脚定义 三线制:2、3、5 RXD/TXD交叉连接 核心原则:电平匹配 + 正确接线 = 可靠通信

本章核心要点:

  • RS232和TTL电平不能直连,必须用MAX232这类芯片转换
  • MAX232的电容值要按数据手册来,别自作聪明
  • DB9接口最常用的是2、3、5三根线,RXD和TXD要交叉
  • 硬件流控(RTS/CTS)只在高速场景下有必要

好了,这一章的内容就这些。串口看似简单,但细节不少。我当年也是从烧芯片、调不通的坑里爬出来的。你把这些基础打牢了,后面学SerDes会轻松很多。

可可精品资料库