PWM使用sysfs进行控制

和gpio设备一样,pwm也可以通过sysfs进行控制,同样进入/sys/class/pwm目录下。(/sys/class下有着大量的sysfs框架的设备)


使用ls查看当前路径下的文件,发现只有一个pwmchip0的文件夹,进入该文件夹。


里面有这几个文件。


device  export  npwm  power  subsystem  uevent  unexport


我们一般只用关注export npwm unexport三个文件。


npwm文件只读,使用cat npwm,读出数字8,表明,在pwmchi0下有8个pwm。


可以导出控制,export、unexport为将需要使用的pwm导出或取消导出到用户空间,给用户使用(注意在管理员权限下操作)。


现在我们使用pwm0(GPIO46)进行pwm输出使用,这里贴出VF2的引脚定义图方便查看。

forum.jpg


我们可以像GPIO一样,将pwm0导出用户空间给用户使用。输出 echo 0 > export,在当前路径下会生成一个pwm0的文件夹,进入pwm0文件夹后也有几个文件:


capture  duty_cycle  enable  period  polarity  power  uevent


capture:输入捕获,(VF2未实现该功能,应该是硬件不支持)


duty_cycle:配置pwm占空比  n*10ns


period:配置 pwm周期 n*10ns


polarity:极性 (normal 正常、inversed 反转)。


enable:使能pwm (0 关闭,1 打开)。


按这样接线:

forum.jpg


输入:

echo 0 > enable #打开pwm0

echo normal > polarity #设置正常极性

echo 1000000 > period #设置1ms周期

echo 500000 > duty_cycle #设置0.5ms占空比


就会获得一个1ms,占空比为50%的pwm波:

forum.jpg


总结:从gpio和pwm来看,VF2的sysfs是非常完善的,控制也比较准确、迅速、无误。可以仿照之前c语言编程实现一个pwm控制简单应用。