Face-RK3399開(kāi)發(fā)板上引出有 2 路 PWM 輸出,分別為:
-
PWM1 LCD_BL_PWM
-
PWM2 VDDLOG供電
本章主要描述如何配置 PWM。
RK3399的 PWM 驅(qū)動(dòng)為: kernel/drivers/pwm/pwm-rockchip.c
配置 PWM 主要有以下三大步驟:配置 PWM DTS 節(jié)點(diǎn)、配置 PWM 內(nèi)核驅(qū)動(dòng)、控制 PWM 設(shè)備。
在 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 = <1>; min_period = <0>; max_period = <10000>; duty_ns = <5000>; };
-
pwm_id:需要申請(qǐng)的pwm通道數(shù)。
-
min_period:周期時(shí)長(zhǎng)最小值。
-
max_period:周期時(shí)長(zhǎng)最大值。
-
duty_ns:pwm 的占空比激活的時(shí)長(zhǎng),單位 ns。
用戶(hù)可在其它驅(qū)動(dòng)文件中使用以上步驟生成的 PWM 節(jié)點(diǎn)。具體方法如下:
(1)、在要使用 PWM 控制的設(shè)備驅(qū)動(dòng)文件中包含以下頭文件:
#include
該頭文件主要包含 PWM 的函數(shù)接口。
(2)、申請(qǐng) PWM使用
struct pwm_device *pwm_request(int pwm_id, const char *label);
函數(shù)申請(qǐng) 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 函數(shù)
int pwm_enable(struct pwm_device *pwm);
用于使能 PWM,例如:
pwm_enable(pwm0);
(5)控制 PWM 輸出主要使用以下接口函數(shù):
struct pwm_device *pwm_request(int pwm_id, const char *label);
-
功能:用于申請(qǐng) pwm
void pwm_free(struct pwm_device *pwm);
-
功能:用于釋放所申請(qǐng)的 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
通過(guò)內(nèi)核豐富的debug接口查看pwm注冊(cè)狀態(tài),adb shell或者串口進(jìn)入android終端 cat /sys/kernel/debug/pwm —注冊(cè)是否成功,成功則返回接口名和寄存器地址
-
dts配置文件是否打開(kāi)對(duì)應(yīng)的pwm。
-
pwm所在的io口是否被其他資源占用,可以根據(jù)報(bào)錯(cuò)的返回值去查看原因。
-
嵌入式主板
+關(guān)注
關(guān)注
7文章
6085瀏覽量
35295 -
安卓
+關(guān)注
關(guān)注
5文章
2126瀏覽量
57144 -
Firefly
+關(guān)注
關(guān)注
2文章
538瀏覽量
7027
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論