本帖最后由 FFD8 于 2024-3-8 10:56 编辑
# 【Luckfox幸狐 RV1103】四、基础外设测试-uart(python)
参考教程:https://wiki.luckfox.com/zh/Luckfox-Pico/Luckfox-Pico-UART
Luckfox幸狐 RV1103引脚图:
## 1、设备目录:
在 /dev 目录中,每个 UART 设备都有其自己的目录。这些目录的名称是 ttyS 加上串口号,例如 /dev/ttyS3 表示 UART3。可使用如下命令查看:ls /dev/ttyS*
## 2、配置串口:
### 1. 用stty工具查询其通信参数:
```c
stty -F /dev/ttyS3
```
### 2. 修改波特率,其中ispeed为输入速率,ospeed为输出速率:
```c
stty -F /dev/ttyS3 ispeed 115200 ospeed 115200
```
### 3. 关闭回显:
```c
stty -F /dev/ttyS3 -echo
```
## 3、python代码
代码的具体含义已经在程序中加好了注释:
```python
import serial
import time
# 使用with语句创建一个串口对象,确保在使用完成后正确关闭串口,以释放资源
with serial.Serial(
"/dev/ttyS3", # 指定串口设备路径
baudrate=115200, # 波特率设置为115200
bytesize=serial.EIGHTBITS, # 数据位设置为8位
stopbits=serial.STOPBITS_ONE, # 停止位设置为1位
parity=serial.PARITY_NONE, # 无奇偶校验
timeout=1, # 设置超时时间为1秒
) as uart3:
try:
# 循环执行发送和接收
while True:
# 向串口写入数据
uart3.write(b"Hello World!\n")
# 从串口读取最多128字节的数据
buf = uart3.read(128)
# 打印原始二进制数据
print("Raw data:\n", buf)
# 将二进制数据解码为UTF-8字符串
data_strings = buf.decode("utf-8")
# 打印读取的字节数和以字符串形式打印的数据
print("Read {:d} bytes, printed as string:\n {:s}".format(len(buf), data_strings))
# 等待1秒
time.sleep(1)
except KeyboardInterrupt:
# 捕捉键盘中断异常,用于在用户按下Ctrl+C时退出循环
pass
```
这个代码段实现了一个简单的串口读写操作。通过循环不断读写串口数据并打印出读到的信息。
## 4、运行程序
创建py程序:nano uart.py
将代码拷贝到py中并保存
运行程序:python3 uart.py
使用usb-ttl模块,连接rv1103的uart3,打开PC的串口助手。(或者可以直接将RxTx短接即可,视频演示的为短接情况)
结果展示:
录制_2024_03_08_10_45_44_390
运行结果看程序符合预期表现。