Widora默认提供了2路硬件PWM,与GPIO模拟成的PWM相比最大区别就是运行时不占用CPU,可输出高频率、高精度PWM。最多可提供4路(另外两路与UART2复用IO,启用的话需要修改DTS)。
最高频率 | 调节精度 |
---|---|
40MHz | 1-bit |
20MHz | 2-bit |
10MHz | 3-bit |
5MHz | 4-bit |
2.5MHz | 5-bit |
1.25MHz | 6-bit |
625Khz | 7-bit |
用户空间操作方法如下:
1、进入/sys/class/pwm/pwmchip0/目录
# cd /sys/class/pwm/pwmchip0
2、导出pwm0和pwm1
# echo 0 > export # echo 1 > export
3、再看此目录,会发现pwm0和pwm1目录,拿操作pwm0为例
# cd pwm0 # ls duty_cycle enable period polarity uevent
4、duty_cycle是高电平时间,单位ns;period是PWM波形周期,单位ns。例如产生一个20K,50% 占空比波形,操作如下:
# echo 1 > enable # echo 50000 > period # echo 25000 > duty_cycle
此修改是OpenWrt源码
进入/target/linux/ramips/dts/ 打开Widora.dts (根据你的平台选择Widora.dts还是Widora32m.dts)
在pinctrl段增加uart2方法 ,例如在36行开始增加如下:
uart2 { ralink,group = “uart2”; ralink,function = “pwm”; };
保存完重新编译即可