8 Star 26 Fork 14

wibim / luat-jt808

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
pincontrol.lua 2.63 KB
一键复制 编辑 原始数据 按行查看 历史
wibim 提交于 2020-02-15 14:44 . 第一次上代码
--模块功能:io口控制
module(...,package.seeall)
require"pins"
require"pmd"
require"rtos"
--[[
重要提醒!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
使用某些GPIO时,必须在脚本中写代码打开GPIO所属的电压域,配置电压输出输入等级,这些GPIO才能正常工作
必须在GPIO使用前(即调用pins.setup前)调用pmd.ldoset(电压等级,电压域类型)
电压等级与对应的电压如下:
0--关闭
1--1.8V
2--1.9V
3--2.0V
4--2.6V
5--2.8V
6--3.0V
7--3.3V
IO配置为输出时,高电平时的输出电压即为配置的电压等级对应的电压
IO配置为输入或者中断时,外设输入的高电平电压必须与配置的电压等级的电压匹配
电压域与控制的GPIO的对应关系如下:
pmd.LDO_VMMC:GPIO8、GPIO9、GPIO10、GPIO11、GPIO12、GPIO13
pmd.LDO_VLCD:GPIO14、GPIO15、GPIO16、GPIO17、GPIO18
pmd.LDO_VCAM:GPIO19、GPIO20、GPIO21、GPIO22、GPIO23、GPIO24
一旦设置了某一个电压域的电压等级,受该电压域控制的所有GPIO的高电平都与设置的电压等级一致
例如:GPIO8输出电平时,要求输出2.8V,则调用pmd.ldoset(5,pmd.LDO_VMMC)
]]
pmd.ldoset(7,pmd.LDO_VMMC)
-- local level = 0
--GPIO1配置为输出,默认输出低电平,可通过setGpio1Fnc(0或者1)设置输出电平
local setGpioBlockFnc = pins.setup(pio.P0_8, 0) --拦截
-- sys.timerLoopStart(function()
-- level = level==0 and 1 or 0
-- setGpio1BlockFnc(level)
-- log.info("testGpioSingle.setGpio1BlockFnc",level)
-- end,1000)
--GPIO上下拉配置(V0021版本后的lod才支持此功能)
-- if tonumber(string.match(rtos.get_version(),"Luat_V(%d+)_"))>=21 then
-- pio.pin.setpull(pio.PULLUP,pio.P0_5) --配置为上拉
-- --pio.pin.setpull(pio.PULLDOWN,pio.P0_5) --配置为下拉
-- --pio.pin.setpull(pio.NOPULL,pio.P0_5) --不配置上下拉
-- end
-- function gpio4IntFnc(msg)
-- log.info("testGpioSingle.gpio4IntFnc",msg,getGpio4Fnc())
-- --上升沿中断
-- if msg==cpu.INT_GPIO_POSEDGE then
-- --下降沿中断
-- else
-- end
-- end
--GPIO4配置为中断,可通过getGpio4Fnc()获取输入电平,产生中断时,自动执行gpio4IntFnc函数
-- getGpio4Fnc = pins.setup(pio.P0_4, gpio4IntFnc)
function setBlock(block)
-- local setGpioBlockFnc = pins.setup(pio.P0_8, 0)
level = block and 1 or 0
log.info("--zbb--pincontrol.setBlock level",level)
setGpioBlockFnc(level)
end
function resetBlock()
block = nvm.get("isBlock")
log.info("--zbb--pincontrol isBlock", block)
setBlock(block)
end
function setBlockWithNvm(block)
nvm.set("isBlock",block)
resetBlock()
end
resetBlock()
Lua
1
https://gitee.com/wibim/luat-jt808.git
git@gitee.com:wibim/luat-jt808.git
wibim
luat-jt808
luat-jt808
master

搜索帮助