打印

【银杏科技ARM+FPGA双核心应用】MicroPython系列五:UART串口通讯

[复制链接]
411|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 如意不如意 于 2020-6-30 18:15 编辑

一、实验目的   

    使用micropython控制iCore3的串口通信,并用命令控制LED。

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

三、实验原理

    开发板上自带一片CH340芯片,本实验需要电脑安装CH340驱动,CH340的TXD连接开发板的GPIO(PA1),CH340的RXD连接开发板的GPIO(PA0),通过串口发送命令控制LED的亮灭。原理示意图如下所示:



四、实验步骤
  • 用数据线将iCore3的USB-OTG口与电脑相连;
  • 打开PYBFLASH磁盘,将代码包中的main.py文件替换到PYBFLASH的main.py,弹出磁盘;
  • 用数据线将iCore3的USB-UART口与电脑相连,将供电跳帽选择为UART供电,将iCore3重新上电,代码运行;
  • 打开串口调试器,选择端口号COM4(具体请在此电脑右击→管理→设备管理器中查看),波特率9600,数据位8,停止位1,校验位None。点击打开串口进行连接;
  • 命令表如下:
1
LEDR_ON
红灯亮
2
LEDR_OFF
红灯灭
3
LEDG_ON
绿灯亮
4
LEDG_OFF
绿灯灭
5
LEDB_ON
蓝灯亮
6
LEDB_OFF
蓝灯灭


五、实验现象
    发送“LEDR_ON”命令,会接受到相同的字符,并且开发板上红灯亮;发送“LEDR_OFF”命令,会接受到相同的字符,并且开发板上红灯灭;


六、实验程序
# -*- coding: utf-8-*-
# main.py -- put your code here!
from pyb import UART  #导入串口库

#定义串口4对象,波特率9600
U4 = UART(4,9600)

while True:
    re = U4.readline()          #缓冲区读取一行内容
    if re != None:              #若内容不为空
        pyb.delay(10)           #延时10ms,等内容接受完整
        re = re + U4.readline() #将内容合并
        U4.write(re)            #将接收到的内容再发回给串口
        if re == b'LEDR_ON':    #控制命令匹配
            pyb.LED(1).on()
        elif re == b'LEDR_OFF':
            pyb.LED(1).off()
        elif re == b'LEDG_ON':
            pyb.LED(2).on()
        elif re == b'LEDG_OFF':
            pyb.LED(2).off()
        elif re == b'LEDB_ON':
            pyb.LED(3).on()
        elif re == b'LEDB_OFF':
            pyb.LED(3).off()





使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

66

帖子

0

粉丝