上海合宙Luat Air724模块 入门指南(2)GPIO

本文要介绍的内容

1) GPIO循环读取输入电平操作

2) GPIO中断读取输入电平操作

3) GPIO输出操作

硬件资源简介

Air724 共有标明的GPIO引脚31个,GPIO0-GPIO7 GPIO9-GPIO31,其中初始状态随不同固件可能稍有不同,也有引脚会因为固件不同造成不可用。 所以开发前建议尽量锁定固件版本,进行实际测试再进行相关电路开发。

GPIO有两种表示方法一种是 pio.P0_18,另一种是直接输入数字18,实际使用中二种方法等价。

下面是基本的使用步骤:

电压域配置

对于有指定电压域的GPIO,使用前应该先做相应配置,电压域的使用方法如下:

x=2
pmd.ldoset(x,pmd.LDO_VMMC)
pmd.ldoset(x,pmd.LDO_VLCD)
pmd.ldoset(x,pmd.LDO_VSIM1)

其中 x 取值为 0-15

x=0时:关闭LDO
x=1时:LDO输出1.716V
x=2时:LDO输出1.828V
x=3时:LDO输出1.939V
x=4时:LDO输出2.051V
x=5时:LDO输出2.162V
x=6时:LDO输出2.271V
x=7时:LDO输出2.375V
x=8时:LDO输出2.493V
x=9时:LDO输出2.607V
x=10时:LDO输出2.719V
x=11时:LDO输出2.831V
x=12时:LDO输出2.942V
x=13时:LDO输出3.054V
x=14时:LDO输出3.165V
x=15时:LDO输出3.177V

通过以上代码,可以把所有GPIO口配置成1.8V 电压。 输入检测状态 高于1.2V为高电平,低于0.6V为低电平。 电压域的对应关系请参考硬件手册。

GPIO输入

大多数引脚在GPIO输入模式下可以配置成上拉或者非上拉状态,提供约50uA的高电平电流。

--配置GPIO0为上拉状态或非上拉状态

PIO=0
配置为上拉状态
pio.pin.setpull(pio.PULLUP,PIO)
配置为非上拉状态
pio.pin.setpull(pio.NOPULL,PIO)

输入有两种方法进行检测

1.轮询法

--GPIO19配置为输入,可通过getGpio19Fnc()获取输入电平

local getGpio19Fnc = pins.setup(19)

sys.timerLoopStart(function()
    log.info("testGpioSingle.getGpio19Fnc",getGpio19Fnc())
end,1000)

以上代码含义为每秒查询一次GPIO19的状态,并打印出来,输入为高电平则显示1,低电平则显示0

2. 中断法

--先定义一个中断处理函数,这个函数必须在GPIO配置之前出现

--GPIO13配置为中断输入状态
function gpio13IntFnc(msg)
    log.info("testGpioSingle.gpio13IntFnc",msg,getGpio13Fnc())
    --上升沿中断
    if msg==cpu.INT_GPIO_POSEDGE then
    --下降沿中断
    else
    end
end

--GPIO13配置为中断,可通过getGpio13Fnc()获取输入电平,产生中断时,自动执行gpio13IntFnc函数
getGpio13Fnc = pins.setup(13,gpio13IntFnc)

GPIO输出

配置GPIO输出使用以下语句

    local setGpio18Fnc = pins.setup(18,level)

其中level=0为高电平,level=1为低电平,以下代码为每秒钟变换一次GPIO18的电平状态

--GPIO18配置为输出,默认输出低电平,可通过setGpio18Fnc(0或者1)设置输出电平
local setGpio18Fnc = pins.setup(pio.P0_18,0)
sys.timerLoopStart(function()
    level = level==0 and 1 or 0
    setGpio18Fnc(level)
    log.info("testGpioSingle.setGpio18Fnc",level)
end,1000)

以上代码均为官方DEMO ,安装Luatools V2后会自动生成,存放目录为:

LuatoolsV2\resource\8910_script\script_LuaTask_V2.3.0\demo\gpio\gpioSingle

以下地址为DEMO下载地址:

https://file.miuser.net/Luat/Air724/LuatDEMO/Air724DEMO_V0009.rar

上次更新 2021-01-28