0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Firefly-RK3399--PWM介绍

firefly 来源:firefly 作者:firefly 2019-11-22 10:08 次阅读
PWM 使用
前言

Firefly-RK3399 开发板上有 4 路 PWM 输出,分别为 PWM0 ~ PWM3,4路 PWM 分别使用在eDP背光、MIPI背光、VDDLOG供电红外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 = <1>; min_period = <0>; max_period = <10000>; duty_ns = <5000>; };
  • 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口是否被其他资源占用,可以根据报错的返回值去查看原因。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6064

    浏览量

    34616
  • 安卓
    +关注

    关注

    5

    文章

    2081

    浏览量

    54579
  • 可制造性设计

    关注

    10

    文章

    2063

    浏览量

    15306
  • Firefly
    +关注

    关注

    2

    文章

    534

    浏览量

    6757
  • 华秋DFM
    +关注

    关注

    20

    文章

    3483

    浏览量

    3910
收藏 人收藏

    评论

    相关推荐

    Firefly RK3399试用体验】+linux环境下给RK3399烧入linux

    `首先感谢论坛给我这个使用的机会,去年这块板子刚出来的时候就被他强大的性能所吸引,刚好在开发双目视觉的项目,需要一个快能直接开启两个摄像头的板子,firefly的这块RK3399无疑是最适合不过的了
    发表于 08-26 11:06

    RK3399PWM3如果用成普通的PWM功能改如何修改呢

    FireflyRK3399系列,我们选择AIO-3399C(AI) 机器,有一路PWM3是用做红外遥控的功能,但是如果用成普通的PWM
    发表于 04-08 16:49

    firefly RK3399上没有pwm输出端口是哪个?

    问题描述及复现步骤:firefly RK3399 上没有pwm输出端口是哪个?说是有四路,但没有标识,如何确定pwm输出端口,急!
    发表于 03-29 13:43

    RK3399-firefly开发板原理图

    RK3399-firefly开发板原理图
    发表于 09-16 09:35 287次下载

    Firefly-RK3399--接口介绍

    Firefly-RK3399 提供了丰富的接口,主要包括:电源接口,
    的头像 发表于 11-19 15:25 3293次阅读
    <b class='flag-5'>Firefly-RK3399</b>--接口<b class='flag-5'>介绍</b>

    Firefly-RK3399--FAQs简介

    Firefly-RK3399 的 HDMI 能自动识别显示的分辨率。
    的头像 发表于 11-19 15:27 2739次阅读
    <b class='flag-5'>Firefly-RK3399</b>--FAQs简介

    Firefly-RK3399开发板

    Firefly-RK3399 开发板分别带有两个MIPI,一个DVP摄像头接口,MIPI支持最高4K拍照,并支持 1080P 30fps以上视频录制。此外,开发板还支持 USB 摄像头。
    的头像 发表于 11-23 09:34 4297次阅读
    <b class='flag-5'>Firefly-RK3399</b>开发板

    Firefly-RK3399--LED 介绍

    标准的 Linux 专门为 LED 设备定义了 LED 子系统。 在 Firefly-RK3399 开发板中的两个 LED 均以设备的形式被定义。
    的头像 发表于 11-22 10:13 3142次阅读
    <b class='flag-5'>Firefly-RK3399</b>--LED <b class='flag-5'>介绍</b>

    Firefly-RK3399--LCD介绍

    Firefly-RK3399开发板外置了两个LCD屏接口,一个是EDP,一个是MIPI
    的头像 发表于 11-22 10:17 5902次阅读
    <b class='flag-5'>Firefly-RK3399</b>--LCD<b class='flag-5'>介绍</b>

    Firefly-RK3399--IR程序 使用

    Firefly-RK3399 开发板上使用红外收发传感器 IR (在 mic 接口和喇叭接口之间)实现遥控功能,在IR接口处接上红外接收器。本文主要描述在开发板上如何配置红外遥控器。
    的头像 发表于 11-22 10:24 1673次阅读
    <b class='flag-5'>Firefly-RK3399</b>--IR程序 使用

    Firefly-RK3399--I2C开发板介绍

    Firefly-RK3399开发板上有 9 个片上 I2C 控制器,各个 I2C 的使用情况
    的头像 发表于 11-22 10:43 2180次阅读
    <b class='flag-5'>Firefly-RK3399</b>--I2C开发板<b class='flag-5'>介绍</b>

    Firefly-RK3399--ADC开发板介绍

    Firefly-RK3399开发板上的 AD 接口有两种,分别为:温度传感器 (Temperature Sensor)、逐次逼近ADC (Successive Approximation Register)。
    的头像 发表于 11-22 10:34 1851次阅读
    <b class='flag-5'>Firefly-RK3399</b>--ADC开发板<b class='flag-5'>介绍</b>

    Firefly-RK3399开发板介绍

    Firefly-RK3399有灵活的启动方式。一般情况下,除非硬件损坏,Firefly-RK3399开发板是不会变砖的。
    的头像 发表于 11-23 11:30 2980次阅读
    <b class='flag-5'>Firefly-RK3399</b>开发板<b class='flag-5'>介绍</b>

    fireflyFace-RK3399主板PWM输出介绍

    Face-RK3399开发板上引出有 2 路 PWM 输出,
    的头像 发表于 12-04 09:35 4046次阅读

    如何对RK3399开发板做一些基础的配置

    最近在小黄鱼入手了一个RK3399的开发板,RK的芯片我也是第一次使用。FireFly配套提供了完善的教程,可以在他们的WIKI上找到。上面有的内容就不在本文叙述了,大家可以参考教程https://wiki.t-
    的头像 发表于 10-10 14:58 1494次阅读