前言
本章介绍基于MicroPython的外设开发案例,在开始之前请确认使用的MicroPython镜像,可以参考 从零玩转CanMV-K230(2)- 环境搭建
K230管脚分布图
K230内部包含64个GPIO Pin,每个Pin可配置为输入或输出,可配置上下拉,可配置驱动能力。
在介绍IO之前需要先了解FPIOA,FPIOA的主要作用是进行引脚复用的设置,IOMUX主要配置物理PAD(管脚)的功能,由于soc功能多管脚(pads)少,多个功能共享同一个I/O管脚(pads),但是一个pads同一时间只能使用其中一个功能,所以需要IOMUX进行功能选择。IOMUX也叫FPIOA,Pin multiplexing,管脚功能选择等。
一、API介绍
本文档主要介绍machine模块下的Pin类API。
pin = Pin(index, mode, pull=Pin.PULL_NONE, drive=7)
**【参数】**
index: 引脚号,取值:[0,63]
mode: 输入或输出模式
pull: 上下拉配置,可选参数,默认PULL_NONE
drive: 驱动能力配置,可选参数,默认7
Pin.init(mode, pull=Pin.PULL_NONE, drive=7)
配置引脚模式,上下拉,驱动能力
【参数】
mode: 输入或输出模式
pull: 上下拉配置,可选参数,默认PULL_NONE
drive: 驱动能力配置,可选参数,默认7
【返回值】
无
Pin.value([value])
获取引脚输入或设置引脚输出
【参数】
value: 输出值,可选参数,如果不传参数则返回输入值
【返回值】
返回空或当前引脚输入值
Pin.mode([mode])
获取或设置引脚输入输出模式
【参数】
mode: 输入输出模式,可选参数,如果不传参数则返回当前输入输出模式
【返回值】
返回空或当前引脚输入输出模式
Pin.pull([pull])
获取或设置引脚上下拉配置
【参数】
pull: 上下拉配置,可选参数,如果不传参数则返回当前上下拉配置
【返回值】
返回空或当前引脚上下拉配置
Pin.drive([drive])
获取或设置引脚驱动能力
【参数】
drive: 驱动能力,可选参数,如果不传参数则返回当前驱动能力
【返回值】
返回空或当前引脚驱动能力
Pin.on()
设置输出高
【参数】
无
【返回值】
无
Pin.off()
设置输出低
【参数】
无
【返回值】
无
Pin.high()
设置输出高
【参数】
无
【返回值】
无
Pin.low()
设置输出低
【参数】
无
【返回值】
无
二、示例代码
因为我这块CanMV上没有可以控制的led灯,这里使用按键进行测试;
这里我们使用Key0做测试,可以看到他对应的IO是52,示例代码如下:
from machine import Pin
from machine import FPIOA
import time
#将GPIO52配置为普通GPIO模式
fpioa = FPIOA()
fpioa.set_function(52,FPIOA.GPIO52)
KEY=Pin(52,Pin.IN,Pin.PULL_UP) #构建KEY对象
while True:
if KEY.value()==0: #按键被按下
time.sleep_ms(10) #消除抖动
if KEY.value()==0: #确认按键被按下
print('KEY down')
while not KEY.value(): #检测按键是否松开
pass
总结
本章节介绍了GPIO例程的使用方法,GPIO很常用,可以结合K210相关教程进行学习。