Micropython——基于Micro-USB口实现和UART上下位机串口通信

其实本质上Micropython的USB口就是一个UART,就是板子上没有的UART0,所以这里我们只需要使用一个pyb内置类pyb.USB_VCP,就可以通过函数去控制VCP,和PC进行数据通信。

pyb.USB_VCP

一直以来,用USB串口时,直接用print函数就可以实现单片机在USB串口的数据发送功能,但是无法实现上位机发下来的数据的接收功能,所以用VCP就可以很好地实现数据的读取和发送功能。

PYB端

在使用pyb.USB_VCP时,只需要先声明,然后就基本和UART的API使用方法相同了。

import pyb
# 声明类
usb_vcp = pyb.USB_VCP()
# 检查是否连接
print(usb_vcp.isconnected())

while True:
    # 每秒发送一次,测试上位机是否能收到
    b = ("b"+"\n").encode("utf-8")
    usb_vcp.send(b)
    pyb.delay(1)

上位机代码

上位机直接测试能否接收到下位机穿上来的代码就行。

import serial

if __name__ == '__main__':
    ser = serial.Serial('COM1', 9600)
    while 1:
        a = "a".encode("utf-8")
        ser.write(a)
        b = ser.readline()#read a string from port
        b = b.decode("utf-8")
        print(b)

测试接收:完全ok!
在这里插入图片描述

不过有个缺点就是调试起来可能会和串口冲突,如果产品开发的差不多了,就可以直接用USB作为串口即可,挺好用的。

参考文章:

猜你喜欢

转载自blog.csdn.net/qq_45779334/article/details/114590459
今日推荐