6. 串口

通用异步收发器(Universal Asynchronous Receiver/Transmitter),通常称作UART, 是一种串行、异步、全双工的通信协议,在嵌入式领域应用的非常广泛。

LubanCat-RV06板卡的30pin接口上默认只有1个uart接口

未找到图片
通用uart引脚

uart

引脚

功能

UART_TX

8

发送信号线

UART_RX

10

接收信号线

6.1. 检查串口设备

1
2
#执行命令查看终端设备
ls /dev/ttyS*

运行结果:

1
2
3
# ls /dev/ttyS*
/dev/ttyS3
#
  • /dev/ttyS3设备就是30pin排针上的uart接口。

6.2. stty工具

stty是Linux下用于设置串口参数的工具,可以设置波特率、数据位、停止位、奇偶校验等参数。

6.2.1. 查看串口配置

1
2
#在板卡的终端执行如下命令
stty -F /dev/ttyS3

运行结果:

1
2
3
4
5
6
7
# stty -F /dev/ttyS3
speed 9600 baud; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-brkint -imaxbel
#
  • speed 9600 baud; line = 0; 说明串口波特率为9600,line = 0;表示无奇偶校验位。

  • intr = ^C; quit = ^; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -brkint -imaxbel 为串口配置参数。

6.2.2. 设置串口参数

1
2
#设置通讯速率,其中ispeed为输入速率,ospeed为输出速率
stty -F /dev/ttyS3 ispeed 115200 ospeed 115200

运行结果:

1
2
3
4
5
6
7
8
# stty -F /dev/ttyS3 ispeed 115200 ospeed 115200
# stty -F /dev/ttyS3
speed 115200 baud; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-brkint -imaxbel
#
  • 可以看到串口波特率已经修改为115200。

6.2.3. 关闭回显

1
2
#关闭回显
stty -F /dev/ttyS3 -echo

6.3. 回环测试

将TXD和RXD引脚连接起来

1
2
3
4
5
6
7
8
# 关闭回显
stty -F /dev/ttyS3 -echo

# 读取串口数据
cat /dev/ttyS3 &

# 发送数据
echo "Hello!" > /dev/ttyS3

运行结果

1
2
3
4
5
# stty -F /dev/ttyS3 -echo
# cat /dev/ttyS3 &
[1] 539
# echo "Hello!" > /dev/ttyS3
# Hello!
  • 可以看到板卡的终端输出了”Hello!”,说明串口正常工作。

6.4. 串口通讯实验(Shell)

6.4.1. 连接串口

实验前需要使用串口线或USB转串口线把它与板卡与电脑连接起来。

  • 板子 - 电脑

  • TXD — RXD

  • RXD — TXD

  • GND — GND

1
2
3
4
5
#在板卡的终端执行如下命令
stty -F /dev/ttyS3

#设置通讯速率,其中ispeed为输入速率,ospeed为输出速率
stty -F /dev/ttyS3 ispeed 115200 ospeed 115200

6.4.2. 与Windows主机通讯

配置好串口调试助手后,尝试使用如下命令测试发送数据:

1
2
3
4
5
#在板卡上的终端执行如下指令
#使用echo命令向终端设备文件写入字符串"Hello!"、"I'm lubancat"
echo Hello! > /dev/ttyS3
echo "I'm lubancat" > /dev/ttyS3
#Windows上的串口调试助手会接收到内容

如下图:

未找到图片13|

可以看到,往/dev/ttyS3设备文件写入的内容会直接通过串口线发送至Winodws的主机。

而读取设备文件则可接收Winodws主机发往板卡的内容,可以使用cat命令来读取:

1
2
3
4
5
6
7
#在板卡上的终端执行如下指令
#使用cat命令读取终端设备文件
cat /dev/ttyS3
#cat命令会等待
#使用串口调试助手发送字符串
#字符串最后必须加回车!
#板卡的终端会输出接收到的内容

如下图:

未找到图片14|