根据BBB_Header_Table.pdf里面的说明,P8.45 <—>P8.19都可以作为PWM2A输出,P8.46<—>P8.13都可以作为PWM2B输出,
但是尝试着使能P8.45,P8.46的PWM输出:
root@beaglebone:~# echo bone_pwm_p8_45 >> $SLOTS
-bash: echo: write error: File exists
root@beaglebone:~#
“File exists”表示与当前的硬件设备冲突,继续查资料,原来是被HDMI占用了,BBB_Header_Table里面红色部分就代表已经被占用:
于是想到卸载HDMI cap,通用硬件的卸载方法是
echo - >> $SLOTS
cap_id表示slots中的cap序号,如下所示
root@beaglebone:~# cat $SLOTS
0: 54:PF---
1: 55:PF---
2: 56:PF---
3: 57:PF---
4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
5: ff:P-O-L Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI
其中0,1,2,3,4,5就表示cap_id,执行
root@beaglebone:~# echo -5 >> $SLOTS
输出一堆信息,然后执行
root@beaglebone:~# cat $SLOTS
命令始终没有返回,重启,HDMI又出来了,于是想到HDMI应该是系统开机自动启动的,应该从开机脚本上禁止加载HDMI cap,具体方法参考
http://blog.csdn.net/bh_binghu/article/details/44986865
开机运行
root@beaglebone:~# echo bone_pwm_p8_45 >> $SLOTS
没有任何输出,再查看SLOTS:
root@beaglebone:~# cat $SLOTS
0: 54:PF---
1: 55:PF---
2: 56:PF---
3: 57:PF---
4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
5: ff:P-O-- Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI
6: ff:P-O-- Bone-Black-HDMIN,00A0,Texas Instrument,BB-BONELT-HDMIN
7: ff:P-O-L Override Board Name,00A0,Override Manuf,bone_pwm_P8_45
root@beaglebone:~#
第5个已经变成ff:P-O–没有字符’L’,表示没有加载,说明卸载成功,同时增加了7,说明驱动加载成功
可以开始使用P8_45作为PWM输出了!P8_46方法一样!