BeagleBone Black(v4.14)的PWM芯片与引脚映射配置问询
刚好我对BeagleBone Black的PWM在新版内核下的配置有不少实践经验,结合你已经掌握的信息,给你梳理下完整的芯片与引脚映射确认方法:
已确认的PWM信号-引脚对应
根据官方Cape扩展头文档,你提到的这些对应是准确的:
- EHRPWM0A → P9_22
- EHRPWM0B → P9_21
- EHRPWM1A → P9_14
- EHRPWM1B → P9_16
- EHRPWM2A → P8_19
- EHRPWM2B → P8_13
- ECAP0 → P9_42
通过sysfs与设备树确认完整映射
在新版Linux内核中,旧资料可能过时,直接通过系统的sysfs接口和设备树信息是最可靠的方式:
1. 查看系统注册的PWM芯片
首先执行命令列出所有已注册的PWM控制器:
ls -lh /sys/class/pwm/
输出会是类似pwmchip0 pwmchip1 pwmchip2的条目,每个pwmchipX对应一个硬件PWM控制器(通常EHRPWM0对应pwmchip0,EHRPWM1对应pwmchip1,以此类推,具体编号可能随内核版本微调)。
2. 深入查看单芯片的通道与引脚映射
以pwmchip0(对应EHRPWM0)为例,进入目录查看细节:
cd /sys/class/pwm/pwmchip0 # 查看该芯片支持的通道数 cat npwm # 导出通道0(对应EHRPWM0A) echo 0 > export cd pwm0 # 查看引脚关联信息(部分内核版本会在of_node下保留设备树引脚配置) cat of_node/pinmux
如果你的内核支持直接查看引脚属性,也可以尝试cat pin(部分版本可能没有这个文件)。
3. 通过设备树解析确认全局映射
如果想一次性获取所有PWM的引脚绑定,可以用dtc工具解析当前运行的设备树:
# 先安装dtc(如果没装的话) sudo apt install device-tree-compiler # 导出当前设备树为dts文件 dtc -I fs /proc/device-tree > bb-black-pwm.dts
然后在生成的bb-black-pwm.dts文件中搜索ehrpwm或ecap关键词,找到对应的节点,就能看到pinmux属性里绑定的具体引脚。
4. 验证引脚功能状态
配置好PWM后,还可以用gpioinfo工具(需要安装libgpiod)验证引脚是否处于PWM模式:
sudo apt install gpiod gpioinfo | grep -E "P9_22|P9_21"
如果引脚已正确配置为PWM功能,输出会显示该引脚的功能为pwm。
另外要注意:新版内核中部分PWM引脚默认是禁用的,需要加载对应的设备树重叠(overlay)才能启用,如果你已经完成了PWM芯片的交互配置,这一步应该已经处理好了,但如果遇到引脚无输出,记得检查overlay是否正确加载。
内容的提问来源于stack exchange,提问作者dgund

