【银杏科技ARM+FPGA双核心应用】MicroPython系列十四:USB_VCP虚...

[复制链接]
711|0
 楼主| 如意不如意 发表于 2020-7-11 18:20 | 显示全部楼层 |阅读模式
本帖最后由 如意不如意 于 2020-7-11 18:20 编辑

一、实验目的
使用micropython创建虚拟串口并与PC通信,发送采集到的ADC数据。

二、实验设备及平台
  • iCore3双核心板点击购买
  • Micro USB线
  • 电脑

三、实验原理
micropython上的USB兼做VCP,可以通过函数去控制VCP,和PC进行数据通信,不必再转接USB串口IC。但要避免与REPL争夺USB CDC通讯。原理示意图如下所示:
fetch.php?media=icore3:icore3_micropython_14_1.jpg

四、实验步骤
  • 用数据线将iCore3的USB-OTG口与电脑相连;
  • 打开PYBFLASH磁盘,将代码包中的main.py文件替换到PYBFLASH的main.py,弹出磁盘;
  • 将iCore3重新上电,代码运行;
  • 打开putty,选择端口号COM6(具体请在此电脑右击→管理→设备管理器中查看),波特率115200,数据位8,停止位1,校验位None。点击打开串口进行连接;

五、实验现象
putty连接上后,接收ADC数据,PA4接地时,ADC值为0,如下图所示:
fetch.php?media=icore3:icore3_micropython_14_2.jpg

六、实验程序
  1. # -*- coding: utf-8-*-
  2. import pyb  #导入库

  3. led = pyb.LED(1)             #创建红色led对象
  4. chx = pyb.ADC(pyb.Pin('A4')) #创建ADC对象,PA4
  5. usb = pyb.USB_VCP()          #创建USB虚拟串口

  6. def loop():
  7.     global led, chx, usb
  8.     x = chx.read()           #读取ADC电压值
  9.     i = x // 33  
  10.     s = "x:%d\t\t%s\r\n"%(x,'#'*i)
  11.     usb.write(s)             #向虚拟串口发送ADC值
  12.     led.toggle()             #红色LED状态翻转
  13.     pyb.delay(250)  

  14. while True:
  15.     loop()

代码包.zip (777 Bytes, 下载次数: 1)


您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

66

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部