云天 发表于 2020-7-13 14:51:45

【天天向上】Maixduino AI 开发板试用(四)GPIO

本帖最后由 云天 于 2021-11-8 22:05 编辑

【测试背景】
Maixduino是一款基于Kendryte K210 RISC-V AI处理器、基于Arduino UNO形式并且板载ESP32 Wi-Fi 和蓝牙模块以及M1 AI模块的AI开发板。而且接口与Arduino UNO兼容,包括数字IO口,PWM,I2C,UART,6个模拟输入引脚。
注意:Arduino UNO R3 外形和引脚兼容 ,但是电平不兼容, Arduino采用5V,Maixduino 引脚都是3.3V或者1.8V, 所有引脚均不支持5V耐受。
【遇到问题】
https://maixpy.sipeed.com/zh/get_started/led_blink.html点亮 LED MaixPy 所使用的硬件 K210 的片上外设(比如GPIO、I2C等)对应的引脚是可以任意映射的,STM32 片上外设和引脚对应关系已经固定了, 只有部分引脚可以复用, 相比之下 K210 自由度更大。
代码:
from fpioa_manager import *
from Maix import GPIO

fm.register(board_info.LED_R, fm.fpioa.GPIO0)

led_r=GPIO(GPIO.GPIO0,GPIO.OUT)
led_r.value(0)
其中, 我们先从包 Maix 导入了 GPIO 这个类;前面说了 K210 的引脚可以任意设置, 所以我们使用fm(fpioa manager)这个内置的对象来注册芯片的外设和引脚的对应关系, 这里 fm.fpioa.GPIO0 是 K210 的一个 GPIO 外设(注意区分 GPIO(外设) 和引脚(实实在在的硬件引脚)的区别 ), 所以把 fm.fpioa.GPIO0 注册到了 引脚 board_info.LED_R;这里的 board_info 是一个板子信息的类, 可以在串口终端输入 board_info. 然后按 TAB 按键可以看到所有成员,主要是各个引脚值,也可以直接传引脚号,比如13,实际情况根据开发板的电路图而定然后定义一个 GPIO 对象, 具体参数看 GPIO 模块的文档, 在左边侧边栏查找。使用 led_r.value(0) 或者 led_r.value(1) 来设置高低电平即可。
我在串口终端输入 board_info. pin_map():
board_info.LED_R对应PIN(14)即下图“IO14”

那么“14”对应UNO的哪个引脚?这个问题困扰了两天。

【一图解决】
迎来曙光,今天才看到下面这个图,一切迎刃而解。

board_info.LED_R=IO14=UNO(8)
所以LED正极插入Maixduino板上的引脚“8”。



【循环点亮】
from machine import Timer,PWM
import time,utime
from Maix import FPIOA, GPIO
from fpioa_manager import fm
from board import board_info

fm.register(board_info.LED_R,fm.fpioa.GPIO0)
led_r=GPIO(GPIO.GPIO0,GPIO.OUT)
while(1):
   utime.sleep_ms(500)
   led_r.value(1)
   utime.sleep_ms(500)
   led_r.value(0)
fm.unregister(board_info.LED_R,fm.fpioa.GPIO0)

https://v.youku.com/v_show/id_XNDc0OTUyMTk3Mg==.html

管事多多 发表于 2021-11-8 17:00:36

您好,我的为什么这样做了以后一直不能成功,显示utime这个有错误

云天 发表于 2021-11-8 22:14:58

from machine import Timer,PWM
import time,utime
from Maix import FPIOA, GPIO
from fpioa_manager import fm
from board import board_info

fm.register(board_info.LED_R,fm.fpioa.GPIO0)
led_r=GPIO(GPIO.GPIO0,GPIO.OUT)
while(1):
   time.sleep_ms(500)
   led_r.value(1)
   time.sleep_ms(500)
   led_r.value(0)
fm.unregister(board_info.LED_R,fm.fpioa.GPIO0)

utime改成time试一下,我这两个都可以

管事多多 发表于 2021-11-9 12:40:23

云天 发表于 2021-11-8 22:14
from machine import Timer,PWM
import time,utime
from Maix import FPIOA, GPIO


在使用这个代码前需要做什么事?谢谢

云天 发表于 2021-11-9 13:21:38

下载固件

sipjxc 发表于 2021-11-11 22:12:39

宋老师您好!

sipjxc 发表于 2021-11-11 22:13:22

本来上月能在上海与您见面的,我在线上看了您的演讲

sipjxc 发表于 2021-11-11 22:13:57

我也买了一批这个板
页: [1]
查看完整版本: 【天天向上】Maixduino AI 开发板试用(四)GPIO