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

2020-07-137431
AI 快速预览详细 收起
本文介绍了如何在 Maixduino AI 开发板上通过 GPIO 引脚映射点亮 LED。首先,通过导入 fpioa_manager 和 Maix.GPIO 模块,使用 fm.register() 函数将 K210 的 GPIO 外设映射到具体的引脚。然后,定义一个 GPIO 对象并通过 led_r.value(0) 或 led_r.value(1) 设置高低电平来控制 LED。此外,还提供了循环点亮 LED 的代码示例。


【测试背景】
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 自由度更大。
代码:
  1. from fpioa_manager import *
  2. from Maix import GPIO
  3. fm.register(board_info.LED_R, fm.fpioa.GPIO0)
  4. led_r=GPIO(GPIO.GPIO0,GPIO.OUT)
  5. 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():
【天天向上】Maixduino AI 开发板试用(四)GPIO图1

board_info.LED_R对应PIN(14)即下图“IO14”
【天天向上】Maixduino AI 开发板试用(四)GPIO图2

那么“14”对应UNO的哪个引脚?这个问题困扰了两天。
【天天向上】Maixduino AI 开发板试用(四)GPIO图3

【一图解决】
迎来曙光,今天才看到下面这个图,一切迎刃而解。
【天天向上】Maixduino AI 开发板试用(四)GPIO图4

board_info.LED_R=IO14=UNO(8)
所以LED正极插入Maixduino板上的引脚“8”。
【天天向上】Maixduino AI 开发板试用(四)GPIO图6


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

【循环点亮】
  1. from machine import Timer,PWM
  2. import time,utime
  3. from Maix import FPIOA, GPIO
  4. from fpioa_manager import fm
  5. from board import board_info
  6. fm.register(board_info.LED_R,fm.fpioa.GPIO0)
  7. led_r=GPIO(GPIO.GPIO0,GPIO.OUT)
  8. while(1):
  9.    utime.sleep_ms(500)
  10.    led_r.value(1)
  11.    utime.sleep_ms(500)
  12.    led_r.value(0)
  13. fm.unregister(board_info.LED_R,fm.fpioa.GPIO0)
复制代码



创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(6)
sipjxc
sipjxc
我也买了一批这个板
sipjxc
sipjxc
本来上月能在上海与您见面的,我在线上看了您的演讲
sipjxc
sipjxc
宋老师您好!
云天
云天
作者
下载固件
云天
云天
作者
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试一下,我这两个都可以
管事多多
管事多多回复云天
在使用这个代码前需要做什么事?谢谢
管事多多
管事多多
您好,我的为什么这样做了以后一直不能成功,显示utime这个有错误
- 没有更多了 -