当前位置: 首页 > news >正文

RK3568 PWM驱动基础知识

文章目录

  • RK3568 PWM 驱动基础知识
    • 一、PWM 基础原理
    • 二、RK3568 的 PWM 驱动支持
    • 三、设备树节点讲解
    • 四、PWM 的使用流程
    • 五、总结

RK3568 PWM 驱动基础知识

在嵌入式系统中,PWM(Pulse Width Modulation,脉冲宽度调制)是一种常用的外设功能,广泛应用于 LED 调光、电机调速、蜂鸣器驱动、背光控制 等场景。对于 RK3568 这类 SoC,其内核驱动和设备树配置提供了灵活的 PWM 使用方式。本文将从 PWM 基础原理、RK3568 驱动支持以及设备树节点配置三方面进行讲解。


一、PWM 基础原理

PWM 的核心思想是通过 固定周期 的方波信号,在每个周期内调节高电平时间(占空比,Duty Cycle),以实现对平均电压或能量的控制。关键参数包括:

  1. 频率 (Frequency):每秒钟 PWM 波形重复的次数,通常决定了控制响应速度或音调。
  2. 占空比 (Duty Cycle):高电平持续时间占整个周期的比例,决定了功率输出。
  3. 相位 (Phase):不同通道的同步或偏移,通常在多路控制时使用。

二、RK3568 的 PWM 驱动支持

RK3568 SoC 内置多路 PWM 控制器,每一路都可以独立输出不同频率和占空比的 PWM 信号。Linux 内核为其提供了统一的 pwm-rockchip 驱动,结合设备树描述,实现了从内核到用户空间的灵活使用。

用户空间常见操作路径:

  • 内核 PWM 子系统:通过 pwmchipX 暴露给 sysfs 或 pwm framework。
  • 驱动绑定设备:背光、风扇、电机等外设驱动可以直接消费 PWM 信号。

三、设备树节点讲解

打开rk3568.dtsi文件:

以下为 RK3568 的 PWM15 节点示例:

pwm15: pwm@fe700030 {compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm";reg = <0x0 0xfe700030 0x0 0x10>;interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,<GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;#pwm-cells = <3>;pinctrl-names = "active";pinctrl-0 = <&pwm15m0_pins>;clocks = <&cru CLK_PWM3>, <&cru PCLK_PWM3>;clock-names = "pwm", "pclk";status = "disabled";
};

逐项解析如下:

  1. 节点名与地址

    • pwm15: pwm@fe700030
      表示这是 PWM 控制器 15,基地址为 0xfe700030,对应 RK3568 的寄存器映射。
  2. compatible

    • "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"
      匹配的驱动类型,保证驱动程序可以支持多个 SoC 的 PWM 控制器。
  3. reg

    • <0x0 0xfe700030 0x0 0x10>
      描述 PWM15 寄存器的物理地址和长度(0x10 字节)。
  4. interrupts

    • <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>
      定义 PWM 中断号,用于事件处理(如溢出或计数完成)。
  5. #pwm-cells = <3>

    • 表示此 PWM 控制器的调用参数数量为 3,格式一般为:
      <channel period_ns duty_ns>,分别对应通道、周期和占空比。
  6. pinctrl-names / pinctrl-0

    • 指定 PWM 输出所使用的管脚复用配置,&pwm15m0_pinspinctrl 子系统中定义,决定信号输出的具体引脚。
  7. clocks / clock-names

    • <&cru CLK_PWM3>, <&cru PCLK_PWM3>
      定义此 PWM 的工作时钟和 APB 接口时钟来源,保证其正常运行。
  8. status

    • "disabled" 表示默认关闭。若要启用,需要改为 "okay"

四、PWM 的使用流程

  1. 设备树配置:启用对应 PWM 节点。
  2. 内核加载驱动:pwm-rockchip 驱动注册。
  3. 用户空间调用:通过 sysfs 或者消费者驱动(如背光驱动)使用。

例如在 sysfs 下,可能路径为:

/sys/class/pwm/pwmchipX

可通过 echo 写入方式配置周期和占空比,实现 LED 调光或电机控制。


五、总结

RK3568 提供了灵活的 PWM 外设资源,结合 Linux PWM 子系统,开发者可以快速实现对外设的精确控制。设备树中的 PWM 节点主要完成硬件资源描述,包括 寄存器地址、中断号、时钟、管脚复用 等信息。理解这些配置有助于开发者在调试和定制化开发时快速定位问题。



文章转载自:

http://L4jQcXqW.thwhn.cn
http://EOS9ozrp.thwhn.cn
http://6e8QY6wN.thwhn.cn
http://ZmMxTcDV.thwhn.cn
http://Rhil3CnI.thwhn.cn
http://DHecGape.thwhn.cn
http://kRyKXxjX.thwhn.cn
http://637qSzt1.thwhn.cn
http://oUNZwxzP.thwhn.cn
http://8ai6ztnv.thwhn.cn
http://wqj1DOzI.thwhn.cn
http://vARikVz4.thwhn.cn
http://smQX1bHu.thwhn.cn
http://J2hnBzQa.thwhn.cn
http://G4dsbZiU.thwhn.cn
http://CAqm98M3.thwhn.cn
http://wXBp8qZt.thwhn.cn
http://U6iVTAgH.thwhn.cn
http://JVXEpoPV.thwhn.cn
http://0W2U7BSw.thwhn.cn
http://IXUht4ep.thwhn.cn
http://jFvgcuZH.thwhn.cn
http://FTpzXch5.thwhn.cn
http://96yPCTfY.thwhn.cn
http://N7QYDEnH.thwhn.cn
http://gEwuCuuv.thwhn.cn
http://OygTppE5.thwhn.cn
http://WZmm6Nxc.thwhn.cn
http://kgCRKga0.thwhn.cn
http://9kyiwlMA.thwhn.cn
http://www.dtcms.com/a/383105.html

相关文章:

  • 贪心算法应用:钢铁连铸优化问题详解
  • 9. LangChain4j + 整合 Spring Boot
  • 返利app的消息队列架构:基于RabbitMQ的异步通信与解耦实践
  • React Native架构革命:从Bridge到JSI性能飞跃
  • Qt---描述网络请求QNetworkRequest
  • XLua教程之Lua调用C#
  • 第七章:AI进阶之------条件语句(if-elif-else)(一)
  • 从希格斯玻色子到QPU:C++在高能物理与量子计算领域的跨界征程与深度融合
  • 二、vue3后台项目系列——安装相关依赖、项目常用辅助开发工具
  • Knockout.js 备忘录模块详解
  • VS2022下载+海康SDK环境配置实现实时预览
  • 前端基础 —— C / JavaScript基础语法
  • 手搓一个 DELL EMC Unity存储系统健康检查清单
  • 字节M3-Agent:如何实现一个支持多模态长期记忆与推理的Agent
  • TCL华星计划投建第8.6代印刷OLED产线
  • Qt学习:moc生成的元对象信息
  • Java—JDBC 和数据库连接池
  • 软件工程实践四:MyBatis-Plus 教程(连接、分页、查询)
  • 用 Go 快速上手 Protocol Buffers
  • Java Stream 流学习笔记
  • Linux线程id与简易封装线程实现
  • 公链分析报告 - Secret Network
  • JavaScript 简单链表题目试析
  • 【ZYNQ开发篇】Petalinux和电脑端的静态ip地址配置
  • 电商AI导购系统的模型部署架构:TensorFlow Serving在实时推荐中的实践
  • 光射三缝实验
  • K8s部署 Redis 主从集群
  • Android点击桌面图库应用启动流程trace分析
  • 【抗量子安全】全球视角下 PQC 与 QKD 技术洞察:政策引领与产业演进
  • 代码随想录学习摘抄day9(回溯1-11)