串口通讯
本章主要讲解LubanCat-RK系列板卡的40pin引脚中串口的基本使用。
6.1. uart
通用异步收发器(Universal Asynchronous Receiver/Transmitter),通常称作UART, 是一种串行、异步、全双工的通信协议,在嵌入式领域应用的非常广泛。
LubanCat-RK系列板卡的 uart 控制器支持下列功能
支持5、6、7、8 bits数据位
支持奇校验和偶校验,不支持mark校验和space校验
支持接收FIFO和发送FIFO,一般为32字节或者64字节
支持最高4M波特率,实际支持波特率需要芯片时钟分频策略配合
支持中断传输模式和DMA传输模式
支持硬件自动流控,RTS+CTS
LubanCat-RK3588系列板子的通用uart设备有1个(如下图所示), 除此之外其他的GPIO也可以复用成uart设备,需要自行根据引脚复用图去配置, 比如说LubanCat-4的40pin引脚最大可支持 5个uart 接口使用。
uart |
引脚 |
功能 |
---|---|---|
UART_TX |
8 |
发送信号线 |
UART_RX |
10 |
接收信号线 |
6.2. uart接口复用说明
在板卡的引脚复用图中,我们可能会看到
UART7_TX_M1,UART7_RX_M1
UART7_TX_M2,UART7_RX_M2
可以看到他们之间的区别是后缀名的不同,这个后缀名表示uart设备的将自己的引脚复用到不同的GPIO引脚的编号,
复用出来的多组引脚是不能同时使用的, 如果同时设置则会根据设备节点的加载时间所覆盖,最终只有最后配置的复用引脚可以使用。
所以在使能引脚时需要注意是否为重复复用。
6.3. 使能串口接口
串口在默认情况是关闭状态的,需要使能才能使用
6.3.1. 方法一
1 2 3 4 5 |
#进入工具配置 sudo fire-config #移动光标到下图的位置 #按确认键进入配置 |
打开串口
使用方向键移动光标到
UART
按 “空格键” 选中UART(出现 “*” ),如下图
按 “确认键” 进行设置
按 “Esc键” 退出到终端,运行 sudo reboot 进行重启应用
6.3.2. 方法二
板卡 |
设备树插件配置文件 |
说明 |
---|---|---|
当前你所使用的板子 |
uEnv.txt |
该配置软链接到你所使用的设备,修改该配置相当于修改板子实际的配置 |
LubanCat-4 |
uEnvLubanCat4.txt |
适用于LubanCat-4 |
LubanCat-4-V1 |
uEnvLubanCat4-V1.txt |
适用于LubanCat-4-V1 |
LubanCat-5 |
uEnvLubanCat5.txt |
适用于LubanCat-5 |
LubanCat-5IO |
uEnvLubanCat5IO.txt |
适用于LubanCat-5IO |
可以通过打开 /boot/uEnv/board.txt (board是你所用的板子的名称) 查看是否启用了uart相关设备设备树插件。
编辑文件,将带有 uart (以uart0为例) 的那一行的注释符号去掉 如下图:
然后重启激活设备
注解
如果是直接拔电源的方式重启,会有可能出现文件没能做出修改 (原因:文件未能及时从内存同步到存储设备中,解决方法,在终端上输入 “sync” 再拔电关机)
6.4. 检查串口设备
查看串口有没有成功使能,uart0~9对应ttyS0~ttyS9。
1 2 3 4 5 |
#执行命令查看终端设备 ls /dev/ttyS* #信息输出如下 /dev/ttyS0 |
以上,开启uart0设备树插件后系统注册对应接口/dev/ttyS0。
6.5. 串口通讯实验(Shell)
使用板卡上的串口0进行实验,对应的设备文件为/dev/ttyS0。 对tty的设备文件直接读写就可以控制设备通过串口接收或发送数据,下面我们使用板卡配合Windows下的串口调试助手或Linux下的minicom进行测试。
6.5.1. 连接串口
实验前需要使用串口线或USB转串口线把它与板卡与电脑连接起来。
板子 - 电脑
TXD — RXD
RXD — TXD
GND — GND
6.5.2. 查询串口0的通信参数
串口0外设使能后,在/dev目录下生成ttyS0设备文件,用stty工具查询其通信参数
1 2 |
#在板卡的终端执行如下命令 stty -F /dev/ttyS0 |
如下图:
6.5.3. 修改串口波特率
1 2 |
#设置通讯速率,其中ispeed为输入速率,ospeed为输出速率 stty -F /dev/ttyS0 ispeed 115200 ospeed 115200 |
如下图:
6.5.4. 关闭回显
默认串口是开启回显的 可以使用以下命令关闭回显
1 |
stty -F /dev/ttyS0 -echo |
6.6. 与Windows主机通讯
配置好串口调试助手后,尝试使用如下命令测试发送数据:
1 2 3 4 5 |
#在板卡上的终端执行如下指令 #使用echo命令向终端设备文件写入字符串"Hello!"、"I'm lubancat" echo Hello! > /dev/ttyS0 echo "I'm lubancat" > /dev/ttyS0 #Windows上的串口调试助手会接收到内容 |
如下图:
可以看到,往/dev/ttyS0设备文件写入的内容会直接通过串口线发送至Winodws的主机。
而读取设备文件则可接收Winodws主机发往板卡的内容,可以使用cat命令来读取:
1 2 3 4 5 6 7 |
#在板卡上的终端执行如下指令 #使用cat命令读取终端设备文件 cat /dev/ttyS0 #cat命令会等待 #使用串口调试助手发送字符串 #字符串最后必须加回车! #板卡的终端会输出接收到的内容 |
如下图:
Hello lubancat!
6.7. minicom通讯
1 2 3 4 5 |
#安装minicom软件包 sudo apt install minicom #设置串口 sudo minicom -s |
如下图:
进入设置,修改串口或者波特率,按键盘上的字母进入各自要设置的东西,enter键确认
设置完成后,可以按这按键保存配置,保存后,以后打开不用设置
然后按exit键进入minicom的终端
如果你输入字母,屏幕上没反应,可以通过打开回显来显示, 先按“ctrl + A” 再按’z’键进入菜单
按下’e’,回显就打开成功了(左下角会有提示,打开或者关闭),可以按下按键测试一下,观察是否有回显, 我们还可以先按“ctrl + A” 再按’z’键,再按’c’键来清除屏幕, 将板卡和电脑用串口线连起来,同时设置为115200, 在板卡上,输入”Hello! i’m lubancat!’’
注意
使用minicom时,不能使用退格键把发出去的内容删掉, minicom是以单个字符的方式发送的。
我们可以在pc端发送文字
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
minicom的菜单有很多功能, s ---- 发送文件 p ---- 设置通讯参数,包括一些预设的波特率,数据格式,数据位等 l ---- 就可以将log信息保存到一个文件中了,方便查看 t ---- 设置终端参数,以及键位设置 w ---- 超出一行的数据后自动换行 r ---- 接收文件 a ---- 换行发送时会增加时间戳 n ---- 增加时间戳 c ---- 清除屏幕 o ---- 设置minicom,相当于sudo minicom -s j ---- 休眠状态 x ---- 退出的同时复位 q ---- 退出 你也可以不用通过按 "ctrl + a" + 'z' + '?'的方式设置 而是直接使用"ctrl + a" + '?' |
6.8. 更多
更多关于uart的使用以及资料可以查阅: rk开源手册/Common/UART
6.9. 参考资料
本文档主要提供有一定经验的使用者快速入门使用,对于初学者可查看以下文档:
设备树相关知识点请阅读下面章节的内容:
rk开源资料(github): 《开源手册》