Skip to main content
UART(通用异步收发器)使用起始位和停止位而非时钟信号来异步传输数据。接收端 UART 以称为波特率的特定频率读取数据位。

关键参数

  • 波特率 —— 通信速率(比特每秒)
  • 起始/停止位 —— 帧定界符
  • 奇偶校验位 —— 可选的错误检查
  • 数据位 —— 每帧 5–9 位
  • 流控 —— 通过 CTS/RTS 的硬件握手

各子系统的传输模式

接口组件

设备树源文件

API

软件配置

Linux 设备树示例

四线 UART(带流控):
GPIO pinctrl:
QUPAC 访问控制:

内核配置

编辑 kernel_platform/kernel/arch/arm64/configs/qcom_defconfig
在设备树中启用 UART 节点:

验证

1

验证 UART 设备注册

2

配置 UART 设置

3

运行回环测试

打开两个 SSH 终端。终端 1(写入):
终端 2(读取):
预期输出:Hello UART

调试

启用调试日志

故障排查

  • 确认设备树状态为 "ok"
  • 确认内核配置中 CONFIG_SERIAL_QCOM_GENI=y
  • 检查 GPIO 引脚配置和 QUPAC 访问控制设置
  • 确认两端波特率一致
  • 检查流控配置(CTS/RTS)
  • 先用回环模式测试
  • 高速传输时从 FIFO 模式切换到 DMA 模式
  • 检查中断统计信息:cat /proc/interrupts | grep uart
  • 检查电源管理:cat /sys/kernel/debug/pm_genpd/pm_genpd_summary

调试检查清单

  • 内核配置包含 CONFIG_SERIAL_QCOM_GENI=y
  • UART 节点的设备树状态设为 "ok"
  • GPIO 引脚正确配置并映射
  • QUPAC 访问控制配置正确
  • 两端波特率一致
  • 流控设置一致
  • 设备文件权限正确

资源