[其他芯片] 【国产RISC-V Linux板 昉·星光VisionFive试用报告】UART通讯功能使用

HonestQiao   2022-8-1 17:52 楼主

在星光派官方提供的文档:3.赛昉科技40-Pin GPIO Header用户手册.pdf 中,演示了,如何在星光派的系统中,使用minicom进行串口通讯。

使用Python语言,也可以非常方便的应用串口,进行数据交互。

这个分享中,演示星光派和电脑,通过串口进行通讯。

 

首先按照文档中的说明,启用UART1和UART2,并注意对应的挂载点:

image.png 启用时,注意设置好对应的GPIO口:

image.png  

 

 

要让星光派和电脑进行串口通讯,需要先用USB2TTL进行连接,具体连接如下:

image.png

 

在星光派上,我们使用UART1,对应的串口为/dev/ttyS2,通信波特率使用最常见的115200

然后,可以在星光派编写如下的程序:

# -*- coding: UTF-8 -*-
 
import serial
from time import sleep
 
def recv(serial):
    while True:
        data = serial.read_all()
        if data == '':
            continue;
        else:
            break;
        sleep(0.02)
    return data
 
if __name__=="__main__":
    serial = serial.Serial("/dev/ttyS2", 115200, timeout=0.5)
    if serial.isOpen():
        print("open success, wait for data")
    else:
        print("open failed")
        exit(1)
 
    while True:
        data = recv(serial)
        if data != b'':
            print("StarFive receive:", data)
            serial.write(data)

保存为uart_recv.py,并运行:

python uart_recv.py

运行后,如果打开串口成功,建辉提示打开成功,并等待数据:

image.png  

 

然后,我们再到电脑上,编写如下的程序:

# -*- coding: UTF-8 -*-

import serial
from time import sleep

if __name__ == "__main__":
    serial = serial.Serial("电脑的串口端口", 115200, timeout=0.5)
    if serial.isOpen():
        print("open success")
    else:
        print("open failed")
        exit(1)

    i = 0
    while True:
        i+=1
        data = "test %d" % i
        serial.write(data.encode('utf-8'))
        print("send:", data)
        sleep(1)

并保存为python_send.py。

注意,上述代码中,`电脑的串口端口`需要修改为你系统实际对应的。

在电脑上运行:

python uart_send.py

 

在星光派上运行的程序中,就会收到对应的数据了。

 

因为我是在macOS上操作,所以通过ssh连接到星光派操作,电脑上本地在命令行操作,得到的结果如下:

image.png  

如果把上面的两个程序反过来,就能够在星光派上发送数据,在电脑上接收了。

进一步的,你还可以进行双向的收发通讯测试。

本帖最后由 HonestQiao 于 2022-8-2 13:30 编辑

回复评论 (1)

还可以进行双向的收发通讯测试,这个可以试一下

点赞  2022-8-2 07:19
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复