6. 串口通讯

LubanCat-P1板卡22pin上有一组具有uart功能的GPIO

未找到图片

6.1. 串口引脚关系

其中串口的引脚关系如下表所示

串口

引脚

功能

TXD

8

发送信号线

RXD

10

接受信号线

6.2. 使能串口接口

sg200x有5个uart控制器,uart0~4分别对应系统/dev/ttyS0~4。

uart接口在默认情况是打开状态的,但是不一定有引脚复用,例如uart1,默认没有引脚占用。

可以通过可以通过 cvi_pinmux 查看uart引脚复用情况

1
2
#列出当前引脚复用
sudo cvi_pinmux -l

全部列出查看比较麻烦,可以通过grep进行过滤

1
2
3
4
5
#使用grep过滤带v的uart1前后8行信息
sudo cvi_pinmux -l | grep 'v.*UART1\|UART1.*v' -A 8 -B 8

#使用grep过滤带v的uart2前后8行信息
sudo cvi_pinmux -l | grep 'v.*UART2\|UART2.*v' -A 8 -B 8
未找到图片

从上图可以才到UART2_TX、UART2_RX引脚分别复用为了UART2_TX、UART2_RX(默认给蓝牙使用),而UART1则没有引脚复用。

通过 cvi_pinmux 工具将22pin引脚引脚总称为IIC0_SDA、IIC0_SCL复用为uart功能。

1
2
3
4
5
6
7
#查看当前引脚复用
sudo cvi_pinmux -l | grep -A 5 'IIC0_SDA function'
sudo cvi_pinmux -l | grep -A 5 'IIC0_SCL function'

#修改引脚复用为i2c功能
sudo cvi_pinmux -w IIC0_SDA/UART1_RX
sudo cvi_pinmux -w IIC0_SCL/UART1_TX

6.3. 串口通讯实验(Shell)

使用板卡22pin上的串口1进行实验,对应的设备文件为/dev/ttyS1。 对tty的设备文件直接读写就可以控制设备通过串口接收或发送数据,下面我们使用板卡配合Windows下的串口调试助手或Linux下的minicom进行测试。

注意

22pin上的IO电平都是1.8v的,耐压也是1.8v,如果外接的设备不兼容1.8v,需要接电平转换模块,将1.8v转成合适的电压再接外设。

如果模块不兼容1.8v,需要转换电平,如下表所示:

板卡

电平转换模块

模块

VCC1.8

VCC1.8/VCC3.3

VCC3.3

TX

TX

RX

RX

RX

TX

GND

GND

GND

6.3.1. 连接串口

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

  • 板子 - 电脑

  • TXD — RXD

  • RXD — TXD

  • GND — GND

6.3.2. 查询串口1的通信参数

串口1复用切换后,用stty工具查询其通信参数

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

如下图:

未找到图片

6.3.3. 修改串口波特率

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

6.3.4. 关闭回显

默认串口是开启回显的 可以使用以下命令关闭回显

1
stty -F /dev/ttyS1 -echo

6.4. 与Windows主机通讯

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

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

#如果是普通用户需要切换root或者以root执行
#切换root
sudo -s
#或者以root执行
sudo sh -c 'echo Hello! > /dev/ttyS1'

往/dev/ttyS1设备文件写入的内容会直接通过串口线发送至Winodws的主机。

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

1
2
3
4
5
6
7
8
#在板卡上的终端执行如下指令
#使用cat命令读取终端设备文件
cat /dev/ttyS1

#cat命令会等待
#使用串口调试助手发送字符串
#字符串最后必须加回车!
#板卡的终端会输出接收到的内容

如下图:

未找到图片14|

6.5. 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"  + '?'

提示

如果需要自启动配置和使能uart,可将相关命令写入/etc/init.d/sophgo.sh系统初始化脚本末尾。

6.6. 参考资料

本文档主要提供有一定经验的使用者快速入门使用,对于初学者可查看以下文档:

《imx6ull : 串口通讯与终端设备》

《LubanCat RK系列 : 串口通讯》

《stty工具命令》