首页 > 其他分享 >RK3588平台开发系列讲解(PWM开发篇)

RK3588平台开发系列讲解(PWM开发篇)

时间:2024-04-02 18:33:09浏览次数:23  
标签:kernel PWM RK3588 配置 Boot 开发 参数 pwm

目录

前⾔

驱动文件

DTS 节点配置

PWM 流程

PWM 使⽤

常⻅问题

PWM 在 U-Boot 与 kernel 之间的衔接问题

PWM Regulator 时 PWM pin 脚上下拉配置问题


前⾔

脉宽调制( PWM , Pulse Width Modulation )功能在嵌⼊式系统中是⾮常常⻅的,它是利⽤微处理器的数 字输出来对模拟电路进⾏控制的⼀种⾮常有效的技术,⼴泛应⽤在从测量、通信到功率控制与变换的许 多领域中。 Rockchip PWM ⽀持三种模式 : Continuous mode 、 One-shot mode 和 Capture mode, 4 通道 built-in

驱动文件

驱动⽂件所在位置: drivers/pwm/pwm-rockchip.c

3.10 和 4.4 及以上版本内核下驱动⽂件名字是同⼀个, pwm-rockchip.c 可以⽀持 Continuous mode 和 One shot mode ,但是⾥⾯的代码有些差别。 4.4 及以上内核版本将 pwm_config() , pwm_enable() 和 pwm_disable() 包装在 pwm_apply_state() 函数⾥⾯,这样做的好处是可以⼀次改变⼏个 PWM 参数, 3.10 内核的 PWM 驱动还是原来的接口。

DTS 节点配置

内核 3.10 版本和 4.4 及以上版本的 DTS 节点,略有不

bl: backlight {
 pwms = <&pwm 0 25000 PWM_POLARITY_INVERTED>;
 pwm-names = "backlight";
 };

同的地⽅在配置的参数个数上,内核 3.10 版本配 置的参数数⽬为 2 ,内核 4.4 及以上版本配置的参数数⽬为 2 或者 3 ;参数数⽬与 PWM 节点中的 “pwm cells” 对应,如果 “pwm-cells” 配置是 3 ,则需要配置可选的极性;如果是 2 ,就不需要配置极性。 DTS 配置参考⽂档 Documentation/devicetree/bindings/pwm/pwm.txt ,主要⼏个参数说明下 : 参数 1 ,表⽰ index (per-chip index of the PWM to request) ,⼀般是 0 ,因为我们 Rockchip PWM 每个 chip 只有⼀个。 参数 2 ,表⽰ PWM 输出波形的时间周期,单位是 ns ;例如下⾯配置的 25000 就是表⽰想要得到的 PWM 输出周期是 40K 赫兹。 参数 3 ,表⽰极性,为可选参数;下⾯例⼦中的配置为负极性。

PWM 流程

PWM 驱动流程在不同内核版本上⼤致是⼀样的,

PWM 使⽤

对于 PWM 的 kernel 和 user space 使⽤说明在 Documentation/pwm.txt 有说明,下⾯重点提下 user space 部 分。就像 pwm.txt ⽂档⾥⾯说的, PWM 提供了⽤⼾层的接口,在 /sys/class/pwm/ 节点下⾯, PWM 驱动 加载成功后,会在 /sys/class/pwm/ ⽬录下产⽣ pwmchip0 ⽬录;向 export ⽂件写⼊ 0 ,就是打开 pwm 定 时器 0 ,会产⽣⼀个 pwm0 ⽬录,相反的往 unexport 写⼊ 0 就会关闭 pwm 定时器了,同时 pwm0 ⽬录会 被删除 , 该⽬录下有以下⼏个⽂件:

enable :写⼊ 1 使能 pwm ,写⼊ 0 关闭 pwm ;

polarity :有 normal 或 inversed 两个参数选择,表⽰输出引脚电平翻转;

duty_cycle :在 normal 模式下,表⽰⼀个周期内⾼电平持续的时间(单位:纳秒),在 reversed 模 式下,表⽰⼀个周期中低电平持续的时间(单位:纳秒 ) ;

period :表⽰ pwm 波的周期 ( 单位:纳秒 ) ;

oneshot_count :表⽰ one-shot 模式的 pwm 波形个数,数值不能超过 255 ;

常⻅问题

PWM 在 U-Boot 与 kernel 之间的衔接问题

U-Boot 如果有⽤ PWM 调压功能,到了 kernel 阶段,此时 PWM 仍然是⼯作状态, 需要根据当前 PWM 的硬件状态,将 PWM clock count 调整与当前 PWM 状态⼀致。否则可能会出现 clock 架构发 现⽆⼈使⽤的 PWM clock ,将其关闭后,导致 PWM ⽆法⼯作,出现类似 PWM 调压电压不够导致 的死机问题等。以上的补丁已经修正,确保 PWM 驱动 : drivers/pwm/pwm-rockchip.c ,更新到下⾯的 提交点 : 1. kernel-4.4: commit e6f2796ef5b660a70102c02d6c15f65ff8701d76 2. kernel-3.10: commit 5a3d9257d5e379391eb02457ccd70f28a8fb188b U-Boot 与 kernel PWM 所⽤的时钟源的频率不同,也会导致中间出现切换 , 可能会导致 PWM 占空⽐ 发⽣变化,出现类似 PWM 调压电压不够导致的死机问题等,所以要保持 U-Boot 与 kernel 的时钟 源或时钟源的频率⼀致。确保 U-Boot 的 GPLL 频率与 kernel 保持⼀致,因为 PWM 的时钟现在都 是挂在 GPLL 下⾯; U-Boot 的 GPLL 频率通过 U-Boot 的开机打印 log 可以看到, kernel 的频率通过 查看 clock tree, cat /sys/kernel/debug/clock/clock_tree | grep gpll 。 U-Boot 与 kernel 所配置的极性和周期不⼀致,也会导致中间出现切换,可能会导致 PWM 占空⽐发 ⽣变化,出现类似 PWM 调压电压不够导致的死机问题等,所以要保持 U-Boot 与 kernel 的极性和 周期⼀致。

PWM Regulator 时 PWM pin 脚上下拉配置问题

由于在做 reboot 的时候,很多情况是不复位 GRF ⾥⾯的寄存器,而 PWM 控制器会发⽣复位,这就会在 reboot 起来后改变 PWM Regulator 的默认电压,所以要在 kernel 中配置 PWM pin 脚上下拉与默认的上下 拉⼀致,不能配置为 none 。该问题只针对 PWM 作为调压时才需要修改,作为其他功能可以不需要关 注。 通过硬件原理图确认该 PWM pin 的默认上下拉。例如 RK3399 挖掘机板⼦ PWM2 作为调压功能, 在原理图上找到 PWM2 pin 脚 : GPIO1_C3/PWM2_d ,其中的 "d" 表⽰ down 为默认下拉;如果 是 "u" 表⽰ up 默认上拉。

标签:kernel,PWM,RK3588,配置,Boot,开发,参数,pwm
From: https://blog.csdn.net/whm128/article/details/137246220

相关文章

  • Flutter应用发布流程详解:从开发到上架一站式指南
     引言Flutter是一款由Google推出的跨平台移动应用开发框架,其强大的性能和流畅的用户体验使其备受开发者青睐。然而,开发一款应用只是第一步,将其成功上架到苹果商店才是实现商业目标的关键一步。本文将详细介绍如何使用Flutter将应用程序上架到苹果商店,让您的应用更快地触达用户,......
  • IOS开发使用Xcode上传构建版本报错 Distribution failed with errors:Asset validatio
    报错信息:SDKversionissue.ThisappwasbuiltwiththeiOS16.0SDK.AlliOSandiPadOSappsmustbebuiltwiththeiOS16.1SDKorlater,includedinXcode14.1orlater,inordertobeuploadedtoAppStoreConnectorsubmittedfordistribution.Startin......
  • 米尔MYD-LHI3093开发板配置网络连接
    米尔MYD-LHI3093配置网络连接1前言最近用米尔MYD-LHI3093做实验,开发板预装openEulerEmbedded22.03LTS-SP2支线(qemu-aarch64),默认缺少如下命令(commandnotfound):缺少nmcli,无法通过该指令连接到网络;缺少sudo,虽然系统默认root账户;缺少yum,无法用yum源安装依赖及应用。......
  • 电子积木方案开发商
    东莞市酷得智能科技有限公司电子积木方案开发商提供消费电子解决方案、提供IC技术支持,全国线上线下服务积木小车底层驱动开发过程主要涉及到以下几个方面:首先,需要对小车底盘结构、硬件、模块等有深入的了解。底盘承载着机器人定位、导航、移动、避障等多种功能,是机器人必......
  • k8s + springcloud 微服务开发调试工具kt Connect的使用
    概览KtConnect(全称KubernetesToolkitConnect)是一款基于Kubernetes环境用于提高本地测试联调效率的小工具。通过这个工具,可以不在本地启动所有服务,只需启动当前开发的服务即可,其它服务使用的是部署在k8s集群的实例,如下图:Reference官方文档:https://github.com/alibaba/......
  • COMP S380F Web应用程序的设计与开发
    COMPS380F集团项目(2024)COMPS380FWeb应用程序的设计与开发集团项目(15%)您需要组成一个最多由4名成员组成的小组,每个成员都应分担类似的工作量。主题:您需要为在线书店实现web应用程序。基本特征(占项目的60%):1.您的web应用程序应满足以下关于网页和功能的基本要求:a.使用讲座和实验室......
  • 智慧开发平台免!费!申请试用
    原创 F学社 F学社 2024-04-0117:13 江苏扫描二维码即可申请试用01智慧开发平台简介F1WIFI智慧教育平台是可支持线上线下联动的基于FPGA的口袋式数字系统学习平台。其采用了AMD、Altera、安路、高云等国外国内主流公司的FPGA进行数字系统方向的教学实验设计,可覆盖从......
  • IOS开发xcode14签名报错——No signing certificate "iOS Distribution" found,
    异常描述:证书签名都导入了,Signing&Capabilities——状态一直报错,模拟器模式下status是黄色警告图标(可以运行调试),真机、Anyiosdeveice都是红色错误图标(不可以运行调试)。Nosigningcertificate"iOSDistribution"found,No"i0SDistribution"signingcertificatematching......
  • 【包远程安装运行】:SpringBoot+Mysql在线课程学习教育系统源码+运行视频教程+开发文档
    今天发布的是由【猿来入此】的优秀学员独立做的一个基于springboot脚手架的在线课程学习平台系统,该系统除脚手架功能外又添加了一个前台,具体的功能如下:用户(未认证):学习课程、提交课程试题、上传分享资料、下载其他人的资料、收藏课程、个人中心、课程评价、资料讨论等。作......
  • 【包远程安装运行】:SpringBoot+Mysql学生在线考核考勤管理系统源码+运行教程+开发文档
    今天发布的是由【猿来入此】的优秀学员独立做的一个基于springboot脚手架的学生在线考核签到管理系统,除了脚手架功能外功能如下:一共有管理员教师学生三个角色管理员实现的功能有教师管理,学生管理,课表管理,课程管理,班级管理,排课管理等教师实现的功能有学生请假审批管......