差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

zh:pwm [2019/06/23 09:59]
zh:pwm [2019/10/06 23:07] (当前版本)
行 1: 行 1:
 +====认识一下MT7688的PWM====
 +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/​目录 ​
 +<code bash>
 +# cd /​sys/​class/​pwm/​pwmchip0 ​
 +</​code>​
 +2、导出pwm0和pwm1
 +<code bash>
 +# echo 0 > export ​
 +# echo 1 > export ​
 +</​code>​
 +3、再看此目录,会发现pwm0和pwm1目录,拿操作pwm0为例 ​
 +<code bash>
 +# cd pwm0 
 +# ls 
 +duty_cycle enable period polarity uevent ​
 +</​code>​
 +4、duty_cycle是高电平时间,单位ns;period是PWM波形周期,单位ns。例如产生一个20K,50% 占空比波形,操作如下: ​
 +<code bash>
 +# echo 1 > enable ​
 +# echo 50000 > period ​
 +# echo 25000 > duty_cycle ​
 +</​code>​
 +
 +===支持4路硬件PWM的dts更改方法=== ​
 +此修改是OpenWrt源码 \\
 +进入/​target/​linux/​ramips/​dts/​ 打开Widora.dts (根据你的平台选择Widora.dts还是Widora32m.dts)\\
 +在pinctrl段增加uart2方法 ,例如在36行开始增加如下: ​
 +<code bash>
 +uart2 { 
 +ralink,​group = “uart2”; ​
 +ralink,​function = “pwm”; ​
 +}; 
 +</​code>​
 +保存完重新编译即可