news 2026/7/12 18:39:24

【RK3506】3、通过sysfs控制GPIO与PWM子系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【RK3506】3、通过sysfs控制GPIO与PWM子系统

一、GPIO子系统

GPIO子系统允许开发者在内核空间和用户空间中控制引脚的状态,实现输入和输出功能。

这里我们使用的是GPIO1_B2引脚。由于设备树上配置为了I2C引脚,复用时需要注释掉。
故修改为:

&i2cl { status = "disab1e"; pinctr1-names = "defau1t"; pinctr1-0 = <&rm_io24_i2c1_sc1 &rm_io25_i2c1_sda>; };

修改后重编译内核。
按手册上烧录boot镜像或是重编译update再烧录都是可以的

手册是基于底板编写的,如果开发使用的是核心板,那就需要找到原理图上核心板对应的GPIO1_B2引脚。位于 A 组排针上,从板子顶面观察需要翻转原理图方向:

在该引脚上连接我们的万用表或是示波器。

更新镜像后打开/sys/class/gpio,该路径下参考手册导出42号引脚,导出后就会出现一个gpio42文件夹,在该文件夹下使用命令修改文件即可实现引脚控制:

echo out > direction echo 1 > va1ue

二、PWM子系统

PWM子系统是Linux内核中用于管理PWM信号输出的模块。通过内核提供的接口函数,允许开发者控制硬件设备的PWM信号,通常与定时器硬件模块关联。

3506有两个PWM模块,分别提供了8、4个通道。出厂系统下pwm0中ch0和ch2通道已经被使用,所以将GPIO1_D2复用到ch1通道:

&pwm0_4ch_l { pinctr1-names = "active"; pinctr1-0 = <&rm_io30_pwm0_chl>; status = "okay"; };

参考核心板原理图,连接示波器探头:

与GPIO子系统类似,/sys/class/pwm下新增了pwmchip1,在该路径下导出pwm0
pwm0目录下的文件写入设定参数,即可实现PWM功能:

echo l0000 > period echo 5000 > duty_cyc1e echo 1 > enab1e

参考手册配置输出100kHz 50%占空比的方波如下图:

再测试一下1MHz 50%占空比的方波,效果还是不错的:


总结

以上就是本文所分享的全部内容,欢迎评论区交流指正。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/12 18:37:56

从HIS到PACS:积水潭贵州医院全业务国产化适配SpringBoot实战

摘要&#xff1a;医疗信息化国产化已从试点探索走向全院全栈落地&#xff0c;多院区协同、医疗数据高可用、诊疗业务不间断是大型三甲医院信创改造的核心难题。本文以北京积水潭医院贵州医院&#xff08;贵州省首家国家区域医疗中心&#xff09;双院区全栈国产化项目为核心案例…

作者头像 李华
网站建设 2026/7/12 18:35:57

Android Gradle 多模块重构:移动目录后 2 种 settings.gradle 配置修复方案对比

Android Gradle 多模块工程目录重构实战指南当我们在进行Android多模块工程重构时&#xff0c;经常会遇到需要调整模块目录结构的情况。本文将深入探讨移动模块目录后如何正确配置settings.gradle文件&#xff0c;以及两种主流解决方案的详细对比和实战应用。1. 多模块工程目录…

作者头像 李华
网站建设 2026/7/12 18:35:53

STM32F407寄存器点灯

一.创建keil 工程二.代码1.观察原理图&#xff0c;发现led的gpio引脚为PF9和PF101.先使能GPIOF2.查看F407芯片手册&#xff0c;设置寄存器&#xff0c;查看到GPIOF的基地址是0x4002 3800又查看到AHB1模式寄存器的偏移地址为0x30&#xff0c;也就是&#xff08;0x4002 38000x30&…

作者头像 李华