如何控制对应的PWM

描述

  第一:应用层控制PWM基本简介

  与前面LED设备的控制方式类似,PWM同样可以通过使用sysfd方式进程操控,进入到/sys/class/pwm目录下,如图所示:

PWM

  这里举例出了8个以pwmchipX(X 表示数字 0~7)命名的文件夹,这八个文件夹其实就对应了 I.MX6U的 8 个 PWM 控制器,总共有 8 个 PWM 控制器,大家可以通过查询芯片参考手册得知。我们随便以其中一个为例,进入到 pwmchip0 目录下:

PWM

  npwm:这是一个只读属性,读取该文件可以得知该 PWM 控制器下共有几路 PWM 输出

  export:与 GPIO 控制一样,在使用 PWM 之前,也需要将其导出,通过 export 属性进行导出

  第二:如何控制对应的PWM

  通过 export 导出之后,便会生成 pwm0 这个目录,我们进入到该目录下看看:

PWM

  enable:可读可写,写入“0”表示禁止 PWM;写入“1”表示使能 PWM。读取该文件获取 PWM 当前是禁止还是使能状态。

  echo 0 》 enable #禁止 PWM 输出echo 1 》 enable #使能 PWM 输出

  polarity:用于设置极性,可读可写,可写入的值如下:

  echo normal 》 polarity #默认极性echo inversed 》 polarity #极性反转

  period:用于配置 PWM 周期,可读可写;写入一个字符串数字值,以 ns(纳秒)为单位,譬如配置 PWM 周期为 10us(微秒):

  echo 10000 》 period #PWM 周期设置为 10us(10 * 1000ns)

  duty_cycle:用于配置 PWM 的占空比,可读可写;写入一个字符串数字值,同样也是以 ns 为单位,譬如:

  echo 5000 》 duty_cycle #PWM 占空比设置为 5us

  第三:具体代码实现

PWMPWM

  分析:

  main()函数中,首先对传参进行校验,执行该应用程序的时候需要用户传入3个参数,分别是编号(0、 1、2、3 等,分别表示 I.MX6U 的 PWM1、PWM2、PWM3…)、周期(以 ns 为单位)、PWM 占空比(以ns 为单位)

  。/testApp 0 500000 250000

  接下来需要导出 pwm,首先使用 access()函数判断 pwm0 目录是否存在,如果存在表示 pwm 已经导出,如果不存在,则表示未导出,那么就需要通过 export 文件将其导出。导出成功之后,接着配置 PWM 周期、占空比,最后使能 PWM。编译示例代码:

  

PWM

  总结:利用应用层可以实现对底层引脚PWM波形控制,检测对应的引脚可以观察相应的波形。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分