PWM使用参考

version 1.0


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 节点。