这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 如何控制对应的PWM

共1条 1/1 1 跳转至

如何控制对应的PWM

工程师
2022-07-16 23:45:39     打赏

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

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

pYYBAGK1PouARV9KAAD06Oyn4ro518.png

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

pYYBAGK1Po-AAbeMAAGfi3zY2t0347.png

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

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

第二:如何控制对应的PWM

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

pYYBAGK1PpWAMRi1AAJj6QMc0Cs519.png

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

第三:具体代码实现

pYYBAGK1PsyAdIyEAACoo15u5Jo219.pngpoYBAGK1PtGAbeAqAACk_BMQV9g587.png

分析:

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。编译示例代码:

poYBAGK1PqWAEnyiAAEIV5w_25o265.png

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




共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]