pwm接口
简介
Air724UG支持3路PWM输出:PWM_PWT_OUT, PWM_LPG_OUT, PWM_PWL_OUT_1
pwm接口控制
pwm的库由底层core实现,相关API接口如下:
API接口 | 描述 |
---|---|
pwm.open() | 打开pwm功能 |
pwm.set() | 设置pwm功能 |
pwm.close | 关闭pwm |
详细的API介绍见luat core API章节
相关硬件接口
pwm硬件通道对应的管脚如下:
管脚定义
管脚名 | 管脚号 | 作用 |
---|---|---|
PWM_PWT_OUT GPIO_5 | 49 | 可以输出频率和占空比可调的PWM波形 |
PWM_LPG_OUT GPIO_13 | 43 | 可以输出频率和占空比固定的波形 |
PWM_PWL_OUT_1 GPIO_7 | 82 | 输出频率不固定(一直在变化)但是占空比固定(可以调节)的波形 |
pwm使用示例
pwm 的具体使用方式可以参考如下示例代码,示例代码的主要步骤如下:
1.先建一个sys.taskInit任务
sys.taskInit(function ()
end)
2. 用gpio5做pwm输出时
--0:gpio5, 1:gpio13
local result=pwm.open(0)
sys.wait(3000)
log.info("vbatt.read",result)
--参数 释义 取值范围
--p1 周期 0-1024
--p2 占空比 0-512
--配置pwm参数
pwm.set(0,1024,100)
2.用gpio13做pwm输出
local result=pwm.open(1)
sys.wait(3000)
log.info("vbatt.read",result)
--配置pwm参数
--第一个1是id,第二个是p1:250ms,第三个是p2:125ms
pwm.set(1,1,8)
-- p1:代表一个周期的输出时间,对应关系为:
-- 0 -- LGP_PER_125MS
-- 1 -- LGP_PER_250MS
-- 2 -- LGP_PER_500MS
-- 3 -- LGP_PER_1000MS
-- 4 -- LGP_PER_1500MS
-- 5 -- LGP_PER_2000MS
-- 6 -- LGP_PER_2500MS
-- 7 -- LGP_PER_3000MS
-- p2:代表一个周期高电平的输出时间,对应关系为:
-- 0 -- LGP_ONTIME_UNDEFINE
-- 1 -- LGP_ONTIME_15_6MS
-- 2 -- LGP_ONTIME_31_2MS
-- 3 -- LGP_ONTIME_46_8MS
-- 4 -- LGP_ONTIME_62MS
-- 5 -- LGP_ONTIME_78MS
-- 6 -- LGP_ONTIME_94MS
-- 7 -- LGP_ONTIME_110MS
-- 8 -- LGP_ONTIME_125MS
-- 9 -- LGP_ONTIME_140MS
-- 10 -- LGP_ONTIME_156MS
-- 11 -- LGP_ONTIME_172MS
-- 12 -- LGP_ONTIME_188MS
-- 13 -- LGP_ONTIME_200MS
-- 14 -- LGP_ONTIME_218MS
-- 15 -- LGP_ONTIME_234MS
5.在了解并修改了DEMO后将demo和对应的底包下载到开发板,下载的方式这里不详细说明请参考环境搭建中的烧录章节。
6. 下载完成后重启,在开发板上用示波器测试gpio13的管脚波形如下图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IiFpn0hI-1624847202875)(http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20210420143615628_微信图片编辑_20210420143204.jpg “undefined”)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-an6e4uvS-1624847202883)(http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20210420143634322_微信截图_20210420143445.png “undefined”)]
常见问题
- 为什么gpio13输出是低频波形吗?
答:gpio13只能输出低频pwm 波形。 - 为什么配置后输出没波形
答:看通道是否配置正确,gpio口是否被占用。