pwm 使用
前言
aio-3399c开发板上引出有 3 路 pwm 输出,分别为:
pwm0 屏背光
pwm2 vddlog供电
pwm3 红外ir
本章主要描述如何配置 pwm。
rk3399的 pwm 驱动为: kernel/drivers/pwm/pwm-rockchip.c
dts配置
配置 pwm 主要有以下三大步骤:配置 pwm dts 节点、配置 pwm 内核驱动、控制 pwm 设备。
配置 pwm dts节点
在 dts 源文件kernel/arch/arm64/boot/dts/rockchip/rk3399-firefly-demo.dtsi 添加 pwm dts 配置,如下所示:
pwm_demo: pwm_demo { status = okay; compatible = firefly,rk3399-pwm; pwm_id = ; min_period = ; max_period = ; duty_ns = ; };
pwm_id:需要申请的pwm通道数。
min_period:周期时长最小值。
max_period:周期时长最大值。
duty_ns:pwm 的占空比激活的时长,单位 ns。
接口说明
用户可在其它驱动文件中使用以上步骤生成的 pwm 节点。具体方法如下:
(1)、在要使用 pwm 控制的设备驱动文件中包含以下头文件:
#include
该头文件主要包含 pwm 的函数接口。
(2)、申请 pwm使用
struct pwm_device *pwm_request(int pwm_id, const char *label);
函数申请 pwm。 例如:
struct pwm_device * pwm1 = null;pwm0 = pwm_request(1, “firefly-pwm”);
(3)、配置 pwm使用
int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns);
配置 pwm 的占空比, 例如:
pwm_config(pwm0, 500000, 1000000);
(4)、使能pwm 函数
int pwm_enable(struct pwm_device *pwm);
用于使能 pwm,例如:
pwm_enable(pwm0);
(5)控制 pwm 输出主要使用以下接口函数:
struct pwm_device *pwm_request(int pwm_id, const char *label);
功能:用于申请 pwm
void pwm_free(struct pwm_device *pwm);
功能:用于释放所申请的 pwm
int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns);
功能:用于配置 pwm 的占空比
int pwm_enable(struct pwm_device *pwm);
功能:使能 pwm
void pwm_disable(struct pwm_device *pwm);
功能:禁止 pwm
参考demo:kernel/drivers/pwm/pwm-firefly.c
调试方法
通过内核丰富的debug接口查看pwm注册状态,adb shell或者串口进入android终端 cat /sys/kernel/debug/pwm —注册是否成功,成功则返回接口名和寄存器地址
faqs
pwm无法注册成功:
dts配置文件是否打开对应的pwm。
pwm所在的io口是否被其他资源占用,可以根据报错的返回值去查看原因。
2000-3000元手机排行榜_最受欢迎热门手机排行 你绝对想不到都出现了
健康与智能的结合,医疗电子产品面面观
影响焊膏黏度的因素有哪些
!E5515C E5515C E5515C频谱分析仪 小兵/
优化上料组合、提高生产率
fireflyAIO-3399C主板PWM介绍
EnOcean与SensorDynamics可提供首款有能量收集功能的无线传感器IC
织物耳带电子织物拉力机的详细介绍
航顺BLDC控制器新品“解密”:HK32M060和HK32M050
为何特斯拉产品都能够颠覆对传统汽车的印象? 皮卡曝光,续航800公里
显示器上的色域是什么 是不是越高越好
5G倒计时!三大运营商均表态在在2019年进行5g预商用
如何从模拟电路菜鸟变大牛 三位前辈如是说
逆变器的作用、分类及常见问题
入耳隐形蓝牙耳机推荐,隐形蓝牙耳机推荐
AISpeech Inside军团之“征路者”又发新品,内置思必驰AIOS3.0版本
内蒙风电场35KV电缆分接箱一进二出铜排连接厂家
广和通现身世界5G大会,做产业跨界融合使能器
显卡的基本结构和主要器件详细介绍
安达发APS|生产计划部门如何提升产量?