2. Android串口硬件架构
在 Android 设备上进行 UART 调试,首先需要理解从 SoC 内部到物理调试接口的完整硬件链路。这条链路通常由三个核心部分组成:SoC 内部的 UART 控制器、电平转换芯片以及物理连接器(如 DB9)。本章将深入剖析每一部分的硬件原理、电气特性及其在调试中的作用。
2.1 SoC 内部 UART 控制器
UART(Universal Asynchronous Receiver/Transmitter)控制器是集成在 SoC 内部的一个硬件 IP 核,负责将并行数据转换为串行比特流,并按照约定的波特率、数据位、停止位和校验位格式进行收发。在 Android 系统中,常见的 UART IP 核包括 8250/16550 兼容系列(广泛用于 Qualcomm、MediaTek 平台)以及 Synopsys DesignWare APB UART(常见于 Rockchip、Allwinner 平台)。
- THR(Transmit Holding Register):写数据到发送 FIFO。
- RBR(Receiver Buffer Register):从接收 FIFO 读数据。
- IER(Interrupt Enable Register):使能/禁止接收、发送、线路状态等中断。
- LCR(Line Control Register):配置数据位、停止位、校验位以及除数锁存器访问位(DLAB)。
- LSR(Line Status Register):读取接收数据就绪、发送保持寄存器空、溢出错误等状态。
- DLL/DLH(Divisor Latch Low/High):设置波特率除数。
以下是一个典型的 UART 控制器内部结构框图,展示了数据流与关键模块的关系:
2.2 电平转换芯片:TTL 与 RS-232 的桥梁
SoC 的 UART 控制器通常输出 TTL(3.3V 或 1.8V) 电平信号,而标准的 RS-232 串口使用 ±12V 或 ±5V 电平。因此,在连接 PC 或调试终端时,必须使用电平转换芯片进行信号转换。常见的转换芯片包括 MAX232(用于 RS-232 转换)和 FTDI FT232(用于 USB 转串口)。
| 特性 | MAX232(RS-232 转换) | FTDI FT232(USB 转串口) |
|---|---|---|
| 输入电平 | TTL(3.3V / 5V) | TTL(3.3V / 5V) |
| 输出电平 | RS-232(±12V) | USB 差分信号 |
| 主机接口 | DB9 串口 | USB(虚拟串口) |
| 典型应用 | 传统 PC 串口调试 | 现代笔记本/无串口设备调试 |
| 驱动需求 | 无需额外驱动 | 需安装 VCP 驱动(虚拟 COM 端口) |
以下是一个典型的电平转换链路示意图:
2.3 DB9 接口定义与引脚功能
DB9 是传统的 9 针 D-Sub 连接器,在 RS-232 标准中定义了完整的串行通信接口。虽然 Android 调试通常只使用 TX、RX 和 GND 三根线,但了解完整的引脚定义有助于排查硬件连接问题。
| 引脚编号 | 信号名称 | 方向(DTE 视角) | 功能描述 |
|---|---|---|---|
| 1 | DCD | 输入 | 数据载波检测 |
| 2 | RXD | 输入 | 接收数据(调试核心信号) |
| 3 | TXD | 输出 | 发送数据(调试核心信号) |
| 4 | DTR | 输出 | 数据终端就绪 |
| 5 | GND | — | 信号地(调试核心信号) |
| 6 | DSR | 输入 | 数据设备就绪 |
| 7 | RTS | 输出 | 请求发送 |
| 8 | CTS | 输入 | 清除发送 |
| 9 | RI | 输入 | 振铃指示 |
以下是一个 DB9 公头(插针)的引脚排列示意图,从连接器正面(焊接侧)观察:
2.4 完整硬件链路总结
从 Android 设备到 PC 调试终端的完整 UART 硬件链路可以概括为以下流程:
- SoC UART 控制器:生成 TTL 电平的串行数据(TX)和接收数据(RX)。
- 电平转换芯片:将 TTL 电平转换为 RS-232 电平(MAX232)或 USB 协议(FT232)。
- 物理连接器:通过 DB9 或 USB 接口连接到 PC。
- PC 调试终端:运行 minicom、PuTTY 或 Android Studio 的 Logcat 工具,解析串口数据。