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

📅 2026/7/12 18:39:33
【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%占空比的方波效果还是不错的总结以上就是本文所分享的全部内容欢迎评论区交流指正。