呼吸灯就是指电子产品上的LED灯的亮度随着工夫由暗到亮逐步加强,再由亮到暗逐步衰减,有节奏感地一起一伏,就像是在呼吸一样,因此被广泛应用于手机、电脑等电子设备的指示灯中。在应用MCU开发相干的利用产品中也能够退出呼吸灯性能,加强用户的体验感,本篇文章灵动微电子一级代理英尚微将介绍如何应用MM32L0系列产品芯片做呼吸灯性能。
在平时利用中能够晓得,MCU的GPIO输入高低电平变动能够实现LED灯的亮、灭两个过程,如果GPIO的电平始终维持高电平或者低电平,LED灯就处于长亮或长灭的状态,呼吸灯就是通过较高频率的电平变动来实现亮灭的切换,因为人的视觉暂留效应,肉眼无奈迅速捕获疾速亮灭变动的过程,所以在视觉中始终呈现始终亮或者灭的状态,通过调整占空比能够管制LED灯的亮度,给人视觉上一种灯光由暗到亮逐步加强,而后又由亮到暗逐步衰减。
失常的成年人的吸气呼气工夫整个过程继续大概3秒工夫,即吸气工夫(LED灯亮度逐步变亮)工夫为1.5S,吸、呼气工夫(LED灯亮度逐步变暗)工夫为1.5S。
亮度随着工夫逐步变强再衰减,能够用两种算数形式实现:半周期的正弦函数曲线和指数回升曲线及对称的降落沿曲线。
指数形式曲线图
要管制LED灯达到呼吸灯的成果,实际上就是要管制LED灯的亮度拟合呼吸个性曲线,在本次试验将采纳指数回升曲线及对称的降落沿曲线形式,用户如果对正弦形式感兴趣也能够进行尝试。在本次试验中,咱们应用MM32L0输入较高频率的PWM信号,通过调制信号的占空比,管制LED灯的亮度。
生成指数形式的曲线图次要因素:
TIMPeriod:定时器的计数周期,它的值必须与PWM表中的极大值相等(利用中赋值须要减1),而PWM表的极大值决定了管制的分辨率。例如极大值为10时,PWM占空比只有10个等级准确到0.1,当极大值为1000时,PWM占空比1000个等级准确到0.001。在本次试验中设置定时器的计数周期值为255+1,即PWM表中的极大值也是256。
TIM_Prescaler:定时器时钟分频因子,它管制定时器计数器CNT计数加1所须要的工夫,它的值太大会导致输入的单个PWM波周期过长,影响管制的动静个性。如管制LED灯时,该值太大会导致LED灯开关时间变长,闪动显著。一般来说该值越小越好。在本次试验中设置定时器时钟分频因子为1757+1,即对时钟1758分频。
PWM表的点数:PWM表的点数即对拟合曲线的采样点数,即把LED灯的亮度分为0-255个等级,采样点越多,能更好地还原拟合曲线,采样点太少,可能会导致失真。在本次试验中设置PWM表的点数为40。
Period_class:周期倍数,即PWM表中每个元素的循环次数,它影响拟合曲线的周期。在本次试验中设置设置周期倍数为8。
本次试验程序间接从MM32L073的定时器PWM输入的例程的根底上批改得来,TIM3配置成向上计数,PWM通道输入也被配置成当计数器CNT的值小于输入比拟存放CCR1的值时,PWM通道输入低电平点亮LED灯。在函数的最初还使能了定时器中断,每当定时器的一个计数周期实现时产生中断,配合中断服务函数,即可切换CCR1比拟寄存器的值。
应用MM32L0系列MCU上述两种形式都能够实现呼吸灯性能,两种办法GPIO别离是PB4和PB5,download到MiniBoard中,能够比照测试两种实现办法的差异性,抉择适合的呼吸灯实现形式。