Luckfox Pico UART 使用教程

终端设备介绍

终端设备,简称 TTY(Teletypewriter的缩写),最早源于电传打字机,用于与计算机进行交互通信。TTY 最初指代连接到Unix系统上的物理或虚拟终端。随着时间的推移,TTY 的概念也扩展到串口设备,如ttyn、ttySACn等。在 Linux 系统中,终端设备的支持非常强大,它们通常通过特殊的设备文件进行访问和控制,从而实现串口通信。这些设备文件位于 /dev 目录下,可以通过它们来读取和写入数据,以及执行各种终端控制操作。
查看串口引脚分布

LuckFox Pico 有三个串口,UART2、UART3 和 UART4,其中 UART2 为调试串口。
配置串口

- 查看设备目录
在 /dev 目录中,每个 UART 设备都有其自己的目录。这些目录的名称是 ttyS 加上串口号,例如 /dev/ttyS3 表示 UART3。您可使用如下命令查看:
- 用stty工具查询其通信参数
- 修改波特率,其中ispeed为输入速率,ospeed为输出速率
- 关闭回显
与Windows主机通讯

- 将串口模块一端连接电脑,另一端连接 LuckFox Pico 的引脚18(GND)、19(UART7_TX)和20(UART7_TX)上。
- 下载并打开 MobaXterm,选择串口,设置波特率(默认为9600,请根据自己实际修改过的数值设置)。
- 在开发板上的终端执行以下指令,使用 echo 命令向终端设备文件写入字符串"Hello"和"world !":
- Windows 上的串口调试助手会接收到内容:
Hello
world !
在上图中也有明确的展示。
串口通信(C程序)




在前文中,我们演示了如何使用 Shell 命令实现串口通讯。此外,我们还可以使用C库函数或系统调用来读写设备文件,以达到串口通信的目的。
1.打开串口
这段代码首先让用户选择使用串口3或串口4进行通信,然后打开了相应的串口设备文件,将其文件描述符保存在 serial_fd 变量中。
2. 配置串口
在这部分代码中,我们定义了一个名为 tty 的 termios 结构体,用于配置串口通信的参数。首先,我们使用 memset 将其初始化为0。然后,通过 tcgetattr 函数获取当前串口的属性,并将其存储在 tty 结构体中。
在这部分代码中,我们设置了串口通信的一些参数。我们使用 cfsetospeed 和 cfsetispeed 函数将波特率设置为9600,分别用于设置输出和输入的波特率;清除 PARENB 标志,以禁用奇偶校验;通过 c_cflag 属性操作标志来清除 CSTOPB 标志,以使用一个停止位;通过清除 CSIZE 标志来清除数据位,并通过 CS8 标志来设置数据位为8位。最后,使用 tcsetattr 函数将修改后的属性设置为串口的当前属性,这里使用了 TCSANOW 标志,表示立即应用这些设置。
3. 发送数据
这段代码通过向 serial_fd 写入字符串数据 "hello world!\n" 以实现串口数据发送,发送成功将在终端打印数据。
4. 接收数据
这段代码通过从 serial_fd 读取数据以实现串口数据接收,接收成功将在终端打印数据。
5. 交叉编译
使用交叉编译工具编译程序
arm-rockchip830-linux-uclibcgnueabihf-gcc uart.c -o uart
交叉编译成功后,将在当前目录下生成可在开发板运行的可执行文件
# ls
uart uart.c
6. 运行程序
- 文件传输
先将 uart 从虚拟机传输到 Windows,再通过 TFTP 或 ADB 传输到开发板,将文件从 Windows 通过 ADB 将文件传输到开发板的步骤如下:
adb push 文件所在路径 开发板存储路径
eg:(将当前目录下uart文件传输到开发板的根目录)
adb push uart /
- 运行程序
修改 uart 文件的操作权限后运行程序
# chmod 777 uart
# ./uart
- 实验现象
将UART3的TX与RX相接,运行程序,选择UART3进行通信:
在主机环境中编译,在开发板上执行。











