跳转至

UART

Rockchip 平台 UART 基于16550A 串口标准,拓展引脚 UART 信息如下

主板 SOC 平台 拓展引脚
K1 RK3568 Rockchip UART X4
K1B RK3568 Rockchip UART X2
K3 RK3562 Rockchip UART X3
K7 RK3576 Rockchip UART X5
K7C RK3576 Rockchip UART X4
K8 RK3588 Rockchip UART X5

Allwinner 平台 UART 兼容 16550 UARTs,拓展引脚 UART 信息如下

主板 SOC 平台 拓展引脚
K2B H618 Allwinner UART X2
K2C H618 Allwinner UART X2
K4B T113 Allwinner UART X3
K5C A133 Allwinner UART X1

相关术语介绍

术语 说明
UART Universal Asynchronous Receiver/Transmitter
Console 控制台,Linux 内核中用于输出调试信息的 TTY 设备
TTY TeleType/TeleTypewriters ,原指电传打字机,现在泛指和计算机串行端口连接的终端设备。TTY 设备还包括虚拟控制台,串口以及伪终端设备
/dev/ttyS 普通串口设备名称
/dev/ttySA Allwinner 平台串口名称
/dev/ttyUSB USB 转串口设备

硬件连接

UART 通信最少需要 3 根线即可工作(全双工通信):

  • TXD(Transmit Data):发送数据端,设备通过此线向外发送数据。

  • RXD(Receive Data):接收数据端,设备通过此线接收外部数据。

  • GND(Ground):地线,用于保证两个设备的电平参考一致(共地)。

两个设备之间的 UART 需要交叉连接 RX TX,GND 直连,VCC 直连(可选)。

uart_connect

DTS 配置

使能 UART 设备 0 为例,dts 中添加以下节点:

&uart0 {
    status = "okay";
}

驱动路径

Rockchip 平台 UART 使用 8250 串口驱动:

drivers/tty/serial/8250/8250_core.c
drivers/tty/serial/8250/8250_dw.c
drivers/tty/serial/8250/8250_dma.c
drivers/tty/serial/8250/8250_port.c
drivers/tty/serial/8250/8250_early.c

Allwinner 平台 UART 使用专属串口驱动:

longan/kernel/linux-4.9/drivers/tty/serial/sunxi-uart.c
longan/kernel/linux-4.9/drivers/tty/serial/serial_core.c

stty 测试

主板配置 UART 设备 5,输入输出波特率为 115200 ,8 位数据位:

stty -F /dev/ttyS5 ispeed 115200 ospeed 115200 cs8 

向 UART 设备 5 发送数据 kickpi :

echo "kickpi" > /dev/ttyS5

抓取 UART 设备 5 接收到的数据:

cat /dev/ttyS5

硬件使用示例

以 K7 主板为例,介绍如何连接主板拓展引脚上 UART 引脚。

1. 查看主板拓展引脚图以及对应实物位置。

Note

由图可知 K7 配备五路 UART 和一路 DEBUG UART,UART8 位于引脚 17 和引脚 19。 DEBUG UART 仅用于 DEBUG 调试,不用于其他功能。

image-20251110162807174

2. 查看拓展引脚电压图,可知 UART8 的电源域为 1.8V。

image-20251110162913710

3. 连接相同电源域的设备。

Warning

UART 连接,TX RX 电源域必须一致!

4. UART8 电源域为 1.8V,使用两块主板的 UART8 进行连接,RX 和 TX 交叉连接,GND 直连。

image-20251110164209245