1 硬件基础

在我们的开发板上集成了一颗RGB灯组,引脚连接着主控的三路PWM输出,因此我们可以通过三路PWM输出进行调色的功能,硬件原理图如下:

嵌入式linux系统RGB调色灯三路PWM驱动

2 内核设备树

我们把设备树补丁文件放在目录:~/share/patchs/pwm-dts

嵌入式linux系统RGB调色灯三路PWM驱动

板载的RGB灯珠连接的是主控的三路PWM(PWM1,PWM2,PWM3);这三路PWM的设备树节点在rk3308.dtsi中;默认情况下是disabled的状态,我们只需要将disabled改成okay即可,补丁文件其实就是做了这个事情,可以通过patchloader.sh进行补丁。

嵌入式linux系统RGB调色灯三路PWM驱动

打补丁后再编译内核即可,要求rk3308.dtsi是原生未改动的,因为补丁也会调用之前有对rk3308.dtsi修改的补丁。

嵌入式linux系统RGB调色灯三路PWM驱动

3 应用

烧录内核后,我们可以在板子上看到PWM的设备节点:

嵌入式linux系统RGB调色灯三路PWM驱动

说明一下:pwmchip0实际上是原厂评估板的LCD背光灯驱动,我们可以在设备树中将其关调,这里忽略pwmchip0;其他的对应我们的三路PWM,

导出三路PWMecho 0 > pwmchipx/export

嵌入式linux系统RGB调色灯三路PWM驱动

设置周期(单位是ns):echo ns > pwmchipx/pwm0/period

1s = 1000ms = 1000000us = 1000000000ns

嵌入式linux系统RGB调色灯三路PWM驱动

设置占空比:echo ns > pwmchipx/pwm0/duty_cycle

周期1秒,占空比0.5秒,也就是50%

嵌入式linux系统RGB调色灯三路PWM驱动

使能PWMecho 1 > pwmchipx/pwm0/enable

嵌入式linux系统RGB调色灯三路PWM驱动

使能PWM的时候,可以看到RGB灯珠的被正常驱动的过程:

嵌入式linux系统RGB调色灯三路PWM驱动

效果是RGB灯闪烁,大家可以尝试修改占空比看效果。

 

===================================================================================================================================================================

如果觉得对您有帮助并想进一步深入学习交流可以扫描以下微信二维码或加入QQ群:928840648

欢迎共同学习成长,有一群爱学习的小伙伴一起勉励!!一起加油!!也可点击

嵌入式linux系统RGB调色灯三路PWM驱动

 

笔者基于嵌入式系统框架内容如下整理编辑:

嵌入式linux系统RGB调色灯三路PWM驱动

 

相关文章: