RGB呼吸灯
操作原理
通过逐渐增大和减小PWM信号的占空比,使得被驱动的LED的亮度也逐渐增大和减少,实现呼吸效果。
实现方法
SPV1x的PWM自带呼吸模式,整个呼吸过程可以不需要软件参与。
在PWM的呼吸模式下,PWM模块以256个输入时钟为一个PWM周期。整个呼吸周期由4个阶段组成:
![]()
熄灭阶段
熄灭阶段的时间由PWMn_CTL.LNUM决定,实际时间为(PWMn_CTL.LNUM+1)*PWM周期。
上升阶段
上升阶段的时间由PWMn_CTL.QNUM决定,实际时间为(PWMn_CTL. QNUM+1)*32*PWM周期。
最大亮度阶段
最大亮度阶段的时间由PWMn_CTL.HNUM来定,实际时间为(PWMn_CTL.HNUM+1)*PWM周期。
下降阶段
下降阶段时间与上升阶段共用一组参数。
PWM的呼吸模式配置较为简单,主要步骤如下:
在CMU_PWMnCLK寄存器中配置PWM模块使用的时钟源和分频值。
在PWMn_CTL寄存器中配置HNUM,LNUM,QNUM,PWM模式选择呼吸模式,使能PWM_OE和EN。
如果需要使用中断(完成一次呼吸周期后,可以触发呼吸中断),则在PWM_IE中配置对应的BTH_END中断。
注意事项
如果呼吸的速度过快,尝试增大HNUM,LNUM,QNUM的值,如仍不能满足,则需要在CMU_PWMnCLK中增加时钟分频值。
PWM0~3都支持呼吸模式,可以各自同时运行不同的呼吸参数,根据实际需要选取。
通过灵活地配置引脚复用,可以让1个PWM模块的输出信号从不同的引脚输出,甚至同时从多个引脚输出。