来源:互联网 更新时间:2026-06-19 13:44
IOMUX引脚复用,说白了就是通过软件让一根物理引脚能承担多个任务,比如既能当GPIO用,又能切换成UART或I2C功能,这对芯片引脚资源紧张的嵌入式平台来说是个核心技术。不同SoC的配置方法五花八门,没什么统一标准。今天我们以ELF-RK3506开发板为例,通过PWM1_CH3这个复用案例,从硬件确认一直走到软件适配,把整套操作流程梳理一遍。
动手配置之前,得先搞清楚ELF-RK3506开发板的接口布局。这块板子配了两组40Pin排针,其中一组兼容树莓派的40Pin接口,集成了I2C、SPI、UART这些常用通信接口,还有不少GPIO;另一组则是额外引出的IO排针,可以复用为LCD、DSMC等更复杂的功能接口。
引脚选择上有个原则:优先用40Pin排针上的引脚。原因很简单——这些引脚就在标准排针接口上,不用额外焊接,接线最省事。
引脚复用表放在资料包里:ELF-RK3506开发板资料包 → 5-硬件资料 → 5-4 管脚分配表
打开复用表后,看Alt0到Alt8这几列,就能知道每根引脚可选的功能。RK3506B采用了矩阵IO设计,把98个功能信号灵活映射到32个RM_IO引脚上。对于PWM功能,在"RM_IO功能"列表中找到PWM1_CH3信号,然后从支持RM_IO的引脚里选——还是那句话,优先用40Pin排针上的引脚。最终确定把PWM1_CH3映射到RM_IO13,对应连接器引脚号66。
硬件原理图路径:ELF-RK3506开发板资料包 → 5-硬件资料 → 5-0 PDF原理图
从硬件原理图来看,连接器66引脚对应的是开发板上的GPIO0_B5。

核心板的功能引脚是通过连接器传到底板上的,所以还得确认目标引脚在底板上的具体物理接口位置。在原理图中搜索GPIO0_B5这个网络标号,发现它对应的是开发板P9排针的7引脚。

硬件引脚确认之后,就到软件层面了——主要是设备树里的IOMUX配置和设备节点配置。
引脚确定后,需要在设备树里配置IOMUX参数,确保引脚能正确工作在pwm1_ch3模式下。打开文件 kernel/arch/arm/boot/dts/rk3506-pinctrl-rmio.dtsi,找到pwm1_ch3相关定义,能看到rm_io13_pwm1_ch3这个节点描述了GPIO0_B5复用成PWM1_CH3。

在设备树文件 kernel/arch/arm/boot/dts/rk3502.dtsi 中,已经定义好了12路PWM信号的相关节点和使用的引脚。

接着打开 kernel/arch/arm/boot/dts/elf-3506-common.dtsi,添加相关节点,引用rm_io13_pwm1_ch3节点,并把状态设为"okay"。具体代码就是这样的:
&pwm1_8ch_3 { pinctrl-names = "active"; pinctrl-0 = <&rm_io13_pwm1_ch3>; status = "okay"; };

配置完成后,需要重新编译内核,生成包含新配置的镜像文件。执行编译命令:
elf@ubuntu:~/work/ELF-RK3506-linux-source$ ./build.sh kernel
编译完成后,kernel目录下就会生成boot.img内核镜像文件。
内核镜像生成后,下一步就是烧录到开发板上验证效果。把kernel目录下的boot.img烧录进去,开发板启动后会发现新的pwm节点,可以通过下面这条命令来验证:
root@elf3506-buildroot:~# ls /sys/class/pwm/

pwm驱动中生成的节点是依次向下枚举的——pwmchip0对应设备树里的pwm1_8ch_3,pwmchip1对应pwm0_4ch_0,pwmchip2对应pwm0_4ch_1,pwmchip3对应pwm0_4ch_2。
左边是风扇模块引脚,右边是开发板引脚,对应关系如下:
S--------GPIO0_B5(P9的7引脚)
V-------VCC_5V(P9的4引脚,红色座子)
G-------GND(P9的6引脚,黑色座子)

· 导出PWM。
root@elf3506-buildroot:~# echo 0 > /sys/class/pwm/pwmchip0/export
· 设置PWM周期,单位是纳秒。
root@elf3506-buildroot:~# echo 1000000 > /sys/class/pwm/pwmchip0/pwm0/period
· 设置极性。
root@elf3506-buildroot:~# echo normal > /sys/class/pwm/pwmchip0/pwm0/polarity
· 设置PWM占空比为50%。
root@elf3506-buildroot:~# echo 500000 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle
· 使能PWM功能,风扇立即以50%占空比对应的转速转动。
root@elf3506-buildroot:~# echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable
· 失能PWM功能,风扇停止转动。
root@elf3506-buildroot:~# echo 0 > /sys/class/pwm/pwmchip0/pwm0/enable
· 取消导出PWM。
root@elf3506-buildroot:~# echo 0 > /sys/class/pwm/pwmchip0/unexport
按照上面的步骤操作完,RK3506平台上PWM1_CH3的复用配置和功能验证就算全部完成了。
黄金价格不断创新高!黄金稳定币XAU、PAXG市值达11亿美元
新浪机器学习热点小时报丨2026年07月25日18时_今日实时机器学习热点速递
CC币价格预测(2026-2035):Canton币今日价格走势+长期价格预测
新浪互联网热点小时报丨2026年07月26日16时_今日实时互联网热点速递
腾讯ima怎么创建共享知识库?
腾讯ima怎么把微信内容一键导入知识库?
今日比特币暴涨分析:Metaplanet的比特币BTC投资推动股价上涨17%
蚂蚁庄园今日答案7月21日(今日已更新) 蚂蚁庄园今天正确答案是什么呢
区块链OTC交易所有哪几家比较正规?
2026热门直线加速赛车手游推荐:高人气、爽快加速体验的精品榜单
kimi提示词专家使用方法新手指南
Intel喜讯连连:18A工艺良率提升到85%、CPU将涨价15%
原神霜月三处月灵龛具体位置汇总
《幻兽帕鲁》不触发通缉捕捉传说商人方法
Windy卫星云图怎么看?云层变化识别技巧
新浪人工智能热点小时报丨2026年07月30日18时_今日实时人工智能热点速递
为什么推特KOL都在BRC20赚钱 我一冲就亏?
抖音怎么取消申请退货退款?抖音上取消退货怎么操作
一加手机如何设置三指长按屏幕局部截图
合集38个项目筹集5.406亿美元 Figure融资2亿
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc