LED配置在耳机和音响项目中也是比较常见的配置, 本篇文章跟随WQ7033 SDK简单介绍了SDK中的LED是如何配置和工作的
LED软件分层
WQ7033中的LED最上层是通过APP_LED模块进行控制的, APP_LED模块是离用户最近一层, APP_LED上层最多支持3个LED的配置, 结合beetle tool UI工具的配置文件, 参数给到led_manager, led_manager为每个led单独开定时器, 每个 led 独立调用驱动接口达到 led 显示效果. LED设备驱动控制的是芯片内部的硬件模块LEDC(LED Controller), 该模块可以根据驱动
对其的配置产生硬件波形,输出到 led 的控制电路中去,进而控制 led 的行为. 如下图为LED软件分层
UI工具配置步骤
-
LED IO MAP的设置
beetle tool UI工具中关于LED的设置: 在IOMap选项中选择LED使用的引脚和电平方式, 比如这里配置这两个IO作为LED口. 这里如果是高电平点亮LED灯, 建议默认方式选择下拉, 这样空闲的时候不会有LED微亮的问题
-
LED状态和事件的配置, LED的配置又分为State LED和Event LED
State LED: BT处于某个状态则响应对应设置的LED行为, 这个优先级低于Event LED, 在app_bt.h文件中可以查看对应的BT状态
这里可能会有个左右耳机的BT状态不同步, 导致左右两边的LED闪烁状态不同步的问题, 需要勾选system选项卡中的syncsys_state勾选框, 这样左右的BT state会保持同步
Event LED: 是BT上报的某个已经设定LED的event则响应对应设置的LED行为,优先级高于 State LED, 即如果LED正在响应状态LED, Event 发生后, State LED被打断, Event LED响应并结束后, 再回退到之前的State LED
State LED和Event LED切换如图所示
-
根据需求选择State LED或Event LED页面, 下拉选择对应的State或Event, 点击"ADD"添加
-
根据实际需求来对LED进行配置, 以下为LED配置的参数说明
注意这里的LOOP是循环次数的意思, 0为无限循环, 其他为循环次数. State LED代表的是目前BT工作的状态, 所以指示灯应该是一直循环的, 所以LOOP只能设置为0无限循环
-
比如下图, 这里配置了2个State LED
当进入手机配对状态的时候, LED0呼吸灯间隔1s亮和1s灭的方式闪烁
当连接状态的时候LED0每隔5s快闪2次
配置2个event led
EVTSYS_BT_POWER_ON事件, LED0亮1s后熄灭
EVTSYS_BT_POWER_OFF事件, LED1亮1s后熄灭
-
选择Export保存所修改的配置, 并导出.json或.wpk文件. 推荐导出json文件放在customer/xxx/prebuild路径下, 这样以后编译出来的wpk就会带上工具上修改的改动了