LEDs
本文是关于开发者 qinyunti 基于BL606P-DVK开发板实战开发的系列文章中的一篇,主要介绍了PWM测试,后面还会持续更新该开发者的测评内容,敬请期待!
01 前言
这一篇我们继续接口测试,测试PWM的输出,测试其频率和占空比的设置,以及使用PWM控制LED实现呼吸灯的效果。
02 过程
2.1 引脚
使用GPIO16
对应PWM0的输出GPIO16_PWM0_CH0P
2.2 代码
包含头文件
#include 《aos/hal/pwm.h》
引脚配置
csi_pin_set_mux(GPIO_PIN_16, GPIO16_PWM0_CH0P);
PWM配置
pwm_dev_t pwm;
pwm.port = 0;
pwm.config.freq = 5000;
pwm.config.duty_cycle = 0.2f;
hal_pwm_init(&pwm);
启动
hal_pwm_start(&pwm);
2.3 测试
输出不同频率不同占空比的值,使用逻辑分析仪测试。
pwm.config.freq = 1000;
pwm.config.duty_cycle = 0.5f;
pwm.config.freq = 5000;
pwm.config.duty_cycle = 0.2f;
2.4 呼吸灯
while(1)
{
for(int i=0;i《=100;i++)
{
pwm_cfg.duty_cycle = i/100.0;
hal_pwm_para_chg(&pwm, pwm_cfg);
aos_msleep(20);
}
for(int i=100;i》=0;i--)
{
pwm_cfg.duty_cycle = i/100.0;
hal_pwm_para_chg(&pwm, pwm_cfg);
aos_msleep(20);
}
}
可以看到占空比从0~100变化。
下图是99~100~99的过程。
将GPIO16接到JP8的GPIO19_LED_B,用GPIO16的占空比控制蓝色LED的亮灭。
可以看到呼吸灯的效果。实际灯的亮度并不是跟电压呈线性关系的,所以占空比和亮度也不是线性的,所以要按照实际LED的特性进行优化,按照查表得到不同亮度和占空比的对应关系,这样输出才会是均匀变化。
03 总结
以上完成了PWM的测试,使用逻辑分析仪测试了占空比和频率的设置的正确性。同时用PWM控制LED实现了呼吸灯的效果。
编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !