RK3576开发板串口配置及使用
RK3576 串口配置及使用
- 重要提示:
- 串口配置查询
- 串口配置
- 设置为 9600 波特率, 8N1:
- 设置为 115200 波特率, 8E1 (偶校验):
- 设置为 115200 波特率, 8N1, 并启用硬件流控 (RTS/CTS):
- 设置为原始模式 (Raw Mode),常用于程序通信:
- 通过命令行发送数据
- 通过命令行发送数据
注意博主开发板为RK3567J,系统为Ubuntu 22.04.5 LTS
重要提示:
在Ubuntu系统中,串口设备通常以 /dev/ttyS* 或 /dev/ttyO* 形式存在。对于AM335x系列处理器(TL3576基于AM335x),串口设备名很可能是 /dev/ttyO1(对应UART1)。您需要通过 dmesg | grep tty 或 ls /dev/tty* 命令来确认具体的设备文件名。
本人使用的开发板为串口1设备名为/dev/ttyS1,下面我将以该设备为列进行测试。
串口配置查询
在 Linux 命令行中,有几种方法可以查看串口 /dev/ttyS1的当前配置(波特率、数据位、奇偶校验等)。
stty 是专门用于查询和设置终端(包括串口)行设置的工具。-F 或 --file=:指定要查询的设备文件。
stty -F /dev/ttyS1
在终端输入上述命令回车后会显示
其中比较重要的信息有:
波特率 (Baud Rate):
speed 115200 baud:表示当前波特率是 115200。
其他常见值:9600, 19200, 38400, 57600, 230400 等。
数据位 (Data Bits):
cs8:表示 8 位数据位。cs7 表示 7 位,cs6 表示 6 位。
奇偶校验 (Parity):
-parenb:负号 - 表示 禁用 奇偶校验 (None)。
parenb(无负号)表示启用奇偶校验。
-parodd:如果启用,-parodd 表示偶校验 (Even),parodd 表示奇校验 (Odd)。
停止位 (Stop Bits):
-cstopb:负号 - 表示 1 位 停止位。
cstopb(无负号)表示 2 位停止位。
硬件流控 (Hardware Flow Control):
-crtscts:负号 - 表示 禁用 RTS/CTS 硬件流控。
crtscts 表示启用。
输入模式:
icanon:表示启用规范输入(行缓冲)。
-icanon:表示禁用规范输入(原始模式,逐字节读取)。
串口配置
设置为 9600 波特率, 8N1:
stty -F /dev/ttyS1 9600 cs8 -cstopb -parenb
设置为 115200 波特率, 8E1 (偶校验):
stty -F /dev/ttyS1 115200 cs8 -cstopb parenb parodd
parenb:启用奇偶校验。
parodd:奇校验。如果要偶校验,用 -parodd。
设置为 115200 波特率, 8N1, 并启用硬件流控 (RTS/CTS):
stty -F /dev/ttyS1 115200 cs8 -cstopb -parenb crtscts
设置为原始模式 (Raw Mode),常用于程序通信:
stty -F /dev/ttyS1 115200 raw -echo -echoe -echok
raw:这是一个快捷方式,它会自动设置 cs8 -cstopb -parenb -icanon -echo -echoe … 等,非常适合程序直接读写串口。
-echo -echoe -echok:确保禁用回显(虽然 raw 通常已包含)。
通过命令行发送数据
要向串口发送数据,可以使用 echo 命令。
echo -n "Hello, UART!" | sudo tee /dev/ttyS1
| sudo tee /dev/ttyS1:将 echo 的输出通过管道传递给 tee 命令,tee 再以 sudo 权限写入串口设备。
-e: 启用转义字符解析(如 \r, \n)。
-n:不输出结尾的换行符。
通过命令行发送数据
sudo cat /dev/ttyS1
注意:发送端要以字符格式发送,否则可能解析不了