| **银杏科技有限公司旗下技术文档发布平台** |||| |技术支持电话|**0379-69926675-801**||| |技术支持邮件|Gingko@vip.163.com||| ^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | V1.0 | 2020-06-17 | gingko | 初次建立 | ===== 例程十四:【micropython】USB_VCP虚拟串口 ===== ==== 一、实验目的 ==== 使用micropython创建虚拟串口并与PC通信,发送采集到的ADC数据。 ==== 二、实验设备及平台 ==== - iCore3双核心板[[https://item.taobao.com/item.htm?id=524229438677|点击购买]] - Micro USB线 - 电脑 ==== 三、实验原理 ==== micropython上的USB兼做VCP,可以通过函数去控制VCP,和PC进行数据通信,不必再转接USB串口IC。但要避免与REPL争夺USB CDC通讯。原理示意图如下所示: {{ :icore3:icore3_micropython_14_1.png?direct |硬件原理图}} ==== 四、实验步骤 ==== - 用数据线将iCore3的USB-OTG口与电脑相连; - 打开PYBFLASH磁盘,将代码包中的main.py文件替换到PYBFLASH的main.py,弹出磁盘; - 将iCore3重新上电,代码运行; - 打开putty,选择端口号COM6(具体请在此电脑右击->管理->设备管理器中查看),波特率115200,数据位8,停止位1,校验位None。点击打开串口进行连接; ==== 五、实验现象 ==== putty连接上后,接收ADC数据,PA4接地时,ADC值为0,如下图所示: {{ :icore3:icore3_micropython_14_2.png?direct |AD值}} ==== 六、实验程序 ==== # -*- coding: utf-8-*- import pyb #导入库 led = pyb.LED(1) #创建红色led对象 chx = pyb.ADC(pyb.Pin('A4')) #创建ADC对象,PA4 usb = pyb.USB_VCP() #创建USB虚拟串口 def loop(): global led, chx, usb x = chx.read() #读取ADC电压值 i = x // 33 s = "x:%d\t\t%s\r\n"%(x,'#'*i) usb.write(s) #向虚拟串口发送ADC值 led.toggle() #红色LED状态翻转 pyb.delay(250) while True: loop()