PWM使用参考
1. PWM的参数¶
1.1. Duty_cycle¶
-
占空比
Echo 25 > duty_cycle 表示占空比是25%。
1.2. Period¶
-
频率
Echo 2000 > period
表示2kHz 的frequency 的pwm 波。
1.3. Enable/disable¶
- 使能
1.4. Polarity¶
-
极性。
如果是normal。那么duty_cycle=25%,表示高电平占的比例是25%。
如果是inverse,那么就反之。
2. Kernel 的配置¶
2.1. dts 的配置¶
图2-1
npwm: 4 —— 表示pwm 有4组;
Pad-ctrl: 配置要做为 PWM的4组 pad,如果不需配置到4组, pad对应的数值可以设为PAD_UNKNOWN。由于是共享gpio 的,当gpio 被当作pwm 使用的时候,driver会自动做切pad 动作。
如Display Demo Board:
infinity2m-ssc011a-s01a-display.dtsi中加入:
pwm { compatible = "sstar,infinity-pwm"; reg = <0x1F003400 0x600>; clocks = <&CLK_xtali_12m>; npwm = <2>; pad-ctrl = <PAD_GPIO4 PAD_GPIO5>; status = "ok"; // no available pads }; PAD_GPIO4->PWM0 PAD_GPIO5->PWM1 nfinity2m-ssc011a-s01a-padmux.dtsi
修改:
<PAD_GPIO4 PINMUX_FOR_PWM0_MODE_3 MDRV_PUSE_PWM0 >, <PAD_GPIO5 PINMUX_FOR_PWM1_MODE_4 MDRV_PUSE_PWM1 >;
Kernel config:
图2-2
3. 硬件举例¶
图3-1
图3-2
通过查看: drivers\sstar\include\infinity2m\gpio.h
所以,只需要再配置好dts 就可以了。
4. PWM的架构¶
图4-1
5. User mode 对PWM 的控制¶
对应user 层代码:
即:
Open 一个节点;
Write 节点。