BBB Notebook 3 PWM 实验

2017/11/14

beagleboard black 笔记 <3>

几个基于例程的实验,网络问题的解决

  • 点亮板子上的灯,循环点亮,跑马灯效果。

  • 点亮外部的灯,IO口控制。

  • 基本的按键输入,简单的 Python 状态机。

通过这几个实验可以基本的了解一下 BBB 的 IO 口功能,但是这样并不能让我们完全了解到 BBB 的优势 以及与 类似基本的诸如 51 或是 STM32 不同之处,例如目前始终不能使用的 PWM 波功能。那么接下来才是真正跳入 BBB 的坑的过程吧。

使用PWM波功能

参考

Beaglebone Black开启PWM功能

Beaglebone Black PWM on Ubuntu

beagleboard/bb.org-overlays

开始使用教程最多的 p9_14 pwm io 口

按照教程,发现在 /lib/firmware/ 目录下面只有一个 am33xx_pwm.dtbo 的驱动文件,却没有其他的IO口驱动。 【这里就很明显的体现出了这种跑系统的板子和STM32 的区别,之前一直以为他俩差不多,没有仔细研究过设备树,覆盖层之类的概念。】

编写一个覆盖层

可以自己为IO口编写一个,但是为了尽快看到实验效果,我直接 git 了一个。

 git clone https://github.com/beagleboard/bb.org-overlays/tree/master/src/arm

进入目录,编译,移动驱动。

dtc -O dtb -o BB-PWM1-00A0.dtbo -b 0 -@ BB-PWM1-00A0.dts

mv -i BB-PWM1-00A0.dtbo /lib/firmware

添加到 slots 里面去。

echo am33xx_pwm > /sys/devices/platform/bone_capemgr/slots
echo BB-PWM1 > /sys/devices/platform/bone_capemgr/slots

查看,改变IO口属性?

cd /sys/devices/platform/ocp
config-pin -l P9.14
config-pin P9.14 pwm
cat ocp:P9_14_pinmux/state 查看属性

另外备注:在将cape-universaln插入槽中(slots)后,在 root@beaglebone:/sys/devices/platform/ocp/ocp:P9_14_pinmux 中将P9_14设置为pwm模式(#config-pin P9.14 pwm)后,需要在 /sys/class/pwm/pwmchip2中echo 0 > export, 这里为什么是pwmchip2,因为pwmchip2的地址0x4830_2000对应的是PWM1,echo 0是开启EHRPWM1A,echo 1是开启EHRPWM1B。具体地址映射可参见AM335x参考手册memory map部分。

我在使用时发现如下情况,应该改为 pwm3 后成功使用,其中原因留待解决。

pwm3img

可以使用,在文件夹路径

/sys/devices/platform/ocp/48302000.epwmss/48302200.pwm/pwm/pwmchip3/pwm0

或者

/sys/class/pwm/pwmchip3/pwm0

可以正常使用命令

 echo 500 > duty_cycle 
 echo 10000 > polarity 
 echo 1 > enable

操作PWM用到duty(duty_ns)、period(period_ns)、polarity、run共四个参数,其中period就是频率参数(周期时间),duty为占空比,polarity为使能标志(1为使能,0为禁用),run 是执行命令(1为运行,0为关闭),period和duty的参数单位为纳秒(ns),1s=1000ms=1000000us=1000000000ns,所以period最大的取值范围为0—1000000000,而duty则取值0—period值之间

部分参数改变了,意义一样。

网络问题的解决

有时发现无法连接,打开网络设置发现提示系统与网络兼容,因为启用过锐捷【万恶】,解决方法:

cd /etc/NetworkManager
sudo mv NetworkManager.conf /home/[name]/
sudo NetworkManager //重启

完毕后你会发现网络恢复,正常使用,不要用锐捷了就。

Search

    Post Directory