919浏览
查看: 919|回复: 7

【天天向上】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 自由度更大。
代码:
  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():
10.jpg

board_info.LED_R对应PIN(14)即下图“IO14”
1-P-0xsmw-nG6texhdciqCWA-1024x760.png

那么“14”对应UNO的哪个引脚?这个问题困扰了两天。
1583964757-234113-13.jpeg

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

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


IMG_20200713_131350.jpg

【循环点亮】
  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)
复制代码



管事多多  学徒

发表于 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

我也买了一批这个板
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2021 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail