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

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

3天内不再提示

微雪电子AIO-3128C主板PWM使用介绍

firefly 来源:微雪电子 作者:微雪电子 2019-12-23 16:15 次阅读

PWM 使用

前言

AIO-3128C 开发板上有 4 路 PWM 输出,分别为 PWM0 ~ PWM3,其中:

PWM0/GPIO0_D2: 在扩展口中引出

PWM1/GPIO0_D3: 内部用作 AUX_DET 信号

PWM2/GPIO0_D4: 内部用作 RTC_INT 信号

本章主要描述如何配置 PWM。 AIO-3128C 的 PWM 驱动为:

kernel/drivers/pwm/pwm-rockchip.c

配置步骤

配置 PWM 主要有以下三大步骤:配置 PWM DTS 节点、配置 PWM 内核驱动、控制 PWM 设备。

配置 PWM DTS节点

在 kernel/arch/arm/boot/dts/rk312x.dtsi 定义了以下 PWM 节点,如下所示:

pwm0: pwm@20050000 {compatible = "rockchip,rk-pwm";reg = <0x20050000 0x10>;#pwm-cells = <2>;pinctrl-names = "default";pinctrl-0 = <&pwm0_pin>;clocks = <&clk_gates7 10>;clock-names = "pclk_pwm";status = "disabled";}; pwm1: pwm@20050010 {compatible = "rockchip,rk-pwm";reg = <0x20050010 0x10>;#pwm-cells = <2>;pinctrl-names = "default";pinctrl-0 = <&pwm1_pin>;clocks = <&clk_gates7 10>;clock-names = "pclk_pwm";status = "disabled";}; pwm2: pwm@20050020 {compatible = "rockchip,rk-pwm";reg = <0x20050020 0x10>;#pwm-cells = <2>;pinctrl-names = "default";pinctrl-0 = <&pwm2_pin>;clocks = <&clk_gates7 10>;clock-names = "pclk_pwm";status = "disabled";}; pwm3: pwm@20050030 {compatible = "rockchip,rk-pwm";reg = <0x20050030 0x10>;#pwm-cells = <2>;pinctrl-names = "default";pinctrl-0 = <&pwm3_pin>;clocks = <&clk_gates7 10>;clock-names = "pclk_pwm";status = "disabled";}; remotectl: pwm@20050030 {compatible = "rockchip,remotectl-pwm";reg = <0x20050030 0x10>;#pwm-cells = <2>;pinctrl-names = "default";pinctrl-0 = <&pwm3_pin>;clocks = <&clk_gates7 10>;clock-names = "pclk_pwm";remote_pwm_id = <3>;interrupts = ;status = "okay";};

要使用 pwm0, 只需在 kernel/arch/arm/boot/dts/aio-3128c.dts 加入:

&pwm0 { status = "okay"; };

配置 PWM 内核驱动

PWM 驱动位于文件 kernel/drivers/pwm/pwm-rockchip.c。

控制 PWM 设备

用户可在其它驱动文件中使用以上步骤生成的 PWM 节点。具体方法如下:

(1)、在要使用 PWM 控制的设备驱动文件中包含以下头文件:

#include

该头文件主要包含 PWM 的函数接口。

(2)、申请 PWM

使用

struct pwm_device *pwm_request(int pwm_id, const char *label);

函数申请 PWM。例如:

struct pwm_device * pwm0 = NULL;pwm0 = pwm_request(0, “backlight-pwm”);

参数 pwm_id 表示要申请 PWM 的通道,label 为该 PWM 所取的标签

(3)、配置 PWM

使用

int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns);

配置 PWM 的占空比,例如:

pwm_config(pwm0, 500000, 1000000);

参数 pwm 为前一步骤申请的 pwm_device。duty_ns 为占空比激活的时长,单位为 ns。period_ns 为 PWM 周期,单位为 ns。

(4)、使能PWM

函数

int pwm_enable(struct pwm_device *pwm);

用于使能 PWM,例如:

pwm_enable(pwm0);

参数 pwm 为要使能的 pwm_device。

控制 PWM 输出主要使用以下接口函数:

struct pwm_device *pwm_request(int pwm_id, const char *label);

功能:用于申请 pwm

参数:

pwm_id:要申请的 pwm 通道。

label: 为该申请的 pwm 所取的标签。

void pwm_free(struct pwm_device *pwm);

功能:用于释放所申请的 pwm

参数:

pwm:所要释放的 pwm 结构体

int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns);

功能:用于配置 pwm 的占空比

参数:

pwm: 所要配置的 pwm

duty_ns:pwm 的占空比激活的时长,单位 ns

period_ns:pwm 占空比周期,单位 ns

int pwm_enable(struct pwm_device *pwm);

功能:使能 pwm

参数:

pwm:要使能的 pwm

void pwm_disable(struct pwm_device *pwm);

功能:禁止 pwm

参数:

pwm:要禁止的 pwm

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

    关注

    87

    文章

    10990

    浏览量

    206738
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6064

    浏览量

    34614
  • Firefly
    +关注

    关注

    2

    文章

    534

    浏览量

    6757
收藏 人收藏

    评论

    相关推荐

    AVR单片机例程-电子

    AVR单片机例程-电子
    发表于 06-13 10:40

    超高性价比AIO-3128C开源主板

    `Firefly AIO-3128C开源主板拥有超高性价比处理核心四核ARM Cortex-A7,全面低于市面主流A7处理器的价格。主频高达1.3GHz,集成Mali-400 MP2图形处理器,内嵌2D加速器,拥有强大的图形与视频处理能力。丰富的外部扩展接口,可以直接应用
    发表于 05-16 16:27

    AIO-3128C一体板的特点及其功能分别有哪些呢

    AIO-3128C一体板的特点及其功能分别有哪些呢?
    发表于 01-14 06:28

    AIO-3288C四核高性能主板怎么样?

    AIO-3288C四核高性能主板怎么样?
    发表于 03-02 10:28

    firefly RK3128开发板 AIO-3128C介绍

    采用了基于Cortex-A7构架的四核处理器RK3128,集成Mali-400 MP2图形处理器,支持OpenGL ES1.1/2.0,可以实现1080P、H.265硬件解码和1080P、H.264视频编码。AIO-3128C引出全面的开发接口,可快速应用于各种行业产品中
    的头像 发表于 11-13 14:25 2101次阅读
    firefly RK<b class='flag-5'>3128</b>开发板 <b class='flag-5'>AIO-3128C</b><b class='flag-5'>介绍</b>

    Firefly-RK3128主板PWM输出介绍

    Firefly-RK3128 开发板上有 4 路 PWM 输出,分别为 PWM0 ~ PWM3
    的头像 发表于 11-28 16:56 1991次阅读
    Firefly-RK<b class='flag-5'>3128</b><b class='flag-5'>主板</b><b class='flag-5'>PWM</b>输出<b class='flag-5'>介绍</b>

    FireflyRK3128主板外壳介绍

    外壳 Firefly-RK3128 CAD图 核心板 底板 Firefly-RK3128 外壳亚克力CAD图
    的头像 发表于 11-29 09:19 957次阅读
    FireflyRK<b class='flag-5'>3128</b><b class='flag-5'>主板</b>外壳<b class='flag-5'>介绍</b>

    微雪电子AIO-3128C主板U-Boot使用介绍

    RK U-Boot 基于开源的 U-Boot 进行开发,工作模式有启动加载模式和下载模式。
    的头像 发表于 12-23 16:08 1115次阅读
    微雪<b class='flag-5'>电子</b><b class='flag-5'>AIO-3128C</b><b class='flag-5'>主板</b>U-Boot使用<b class='flag-5'>介绍</b>

    微雪电子AIO-3128C主板UART使用介绍

    AIO-3128C 开发板内置 3 路 UART,分别为 uart0,uart1,uart2。
    的头像 发表于 12-23 16:10 1702次阅读
    微雪<b class='flag-5'>电子</b><b class='flag-5'>AIO-3128C</b><b class='flag-5'>主板</b>UART使用<b class='flag-5'>介绍</b>

    微雪电子AIO-3128C主板SPI使用介绍

    SPI是一种高速的,全双工,同步串行通信接口,用于连接微控制器、传感器、存储设备等,本文以指纹识别模块为例简单介绍SPI使用。
    的头像 发表于 12-23 16:14 1259次阅读
    微雪<b class='flag-5'>电子</b><b class='flag-5'>AIO-3128C</b><b class='flag-5'>主板</b>SPI使用<b class='flag-5'>介绍</b>

    微雪电子AIO-3128C主板MIPI DSI使用介绍

    MIPI DSI 使用 Config配置
    的头像 发表于 12-23 16:16 9025次阅读
    微雪<b class='flag-5'>电子</b><b class='flag-5'>AIO-3128C</b><b class='flag-5'>主板</b>MIPI DSI使用<b class='flag-5'>介绍</b>

    微雪电子AIO-3128C主板LED使用简介

    AIO-3128C 开发板上有 2 个 LED 灯
    的头像 发表于 12-23 16:17 2482次阅读
    微雪<b class='flag-5'>电子</b><b class='flag-5'>AIO-3128C</b><b class='flag-5'>主板</b>LED使用简介

    fireflyAIO-3128C主板启动模式介绍

    AIO-3128C 有灵活的启动方式。一般情况下,除非硬件损坏,AIO-3128C 开发板是不会变砖的。
    的头像 发表于 12-24 09:44 669次阅读

    fireflyAIO-3128C主板串口调试介绍

    AIO-3128C 开发板的调试串口与 TF 卡接口有信号引脚复用,因此无法同时使用,即: 使用调试串口时必须拔掉 TF 卡,而使用 TF 卡时不要连接调试串口。
    的头像 发表于 12-24 09:50 1203次阅读
    fireflyAIO-<b class='flag-5'>3128</b>C<b class='flag-5'>主板</b>串口调试<b class='flag-5'>介绍</b>

    AIO-3128C 开发板防雷防静电明细

    AIO-3128C 开发板防雷防静电明细 AIO-3128C 开发板防雷防静电明细 1. 产品概述 AIO-3128C 一体板采用了瑞芯微(Rockchip)四核处理器 RK3128
    发表于 03-16 14:55 900次阅读