Pwm使用参考

Version 1.0


1. 概述

demo公板支持4路PWM输出。


2. Dts配置


2.1. Demo板支持的PWM padmux

提供4组PWM,每组都有3种选择(Note:对于每一组,有且只能选择其中一种),具体如下表

表2-1

PWM Group Mode PAD
PWM0 7 PAD_KEY0
8 PAD_KEY10
10 PAD_GPIO1
PWM1 7 PAD_KEY1
8 PAD_KEY11
10 PAD_GPIO2
PWM2 7 PAD_KEY2
8 PAD_KEY12
10 PAD_GPIO3
PWM3 7 PAD_KEY3
8 PAD_KEY13
10 PAD_GPIO4

2.2. 配置pwm节点属性

  1. npwm:4:表示pwm有4组,此项按4配置即可,无需修改

  2. 如下pad-ctrl节点中的设置格式,按序为各个PWM输出的Pad设置。

    pad-ctrl = <PWM0_PAD  PWM1_PAD  PWM2_PAD  PWM3_PAD>;
    

我们以Pwm0-Mode7, Pwm1-Mode8, Pwm2-Mode10和PWM3-Unkonwn(unknown时不输出信号)为例,对于不需要输出PWM信号,可以将对应位置设为PAD_UNKNOWN,具体配置如下截图。

pioneer3 -demo.dtsi:


2.3. Padmux功能配置

对于没有被配置为PWM输出的,需要将其注释掉。

pioneer3-ssc020a-s01a-padmux.dtsi


3. Kernel config

  1. 打开Kernel中对PWM的支持

  2. 打开SStar中PWM驱动配置


4. PWM的参数


4.1. 参数配置说明

目前支持输出的PWM clk为6MHz。

Ex:Set 5000Hz duty 25% pwm waveform

period_value = 1000000000 / 5000 = 200000

duty_value = period_value * 25%  = 50000

4.2. Duty_cycle

占空比。

Echo 50000> duty_cycle 表示占空比是25%。


4.3. Period

Frequency。

Echo 200000> period

表示5KHZ 的frequency 的pwm 波。


4.4. Enable/disable

使能;

echo 1 > enable


4.5. Polarity

极性。

如果是normal。那么duty_cycle=25%,表示高电平占的比例是25%。

如果是inverse,那么就反之。


5. 硬件举例


6. PWM 的架构


7. User mode 对PWM 的控制


7.1. 参数配置说明

目前支持输出的PWM clk为6MHz。

Ex:Set 5000Hz duty 25% pwm waveform

period_value=1000000000/5000=200000

duty_value=period_value * 25% = 50000


7.2. Duty_cycle

  • 占空比

    Echo 50000 > duty_cycle 表示占空比是25%。


7.3. Period

  • 频率

    Echo 200000 > period

    表示5kHz 的frequency 的pwm 波。


7.4. Enable/disable

  • 使能

    echo 1 > enable


7.5. Polarity

  • 极性。

    如果是normal。那么duty_cycle=25%,表示高电平占的比例是25%。

    如果是inverse,那么就反之。

对应user 层代码:

即:

Open 一个节点;

Write 节点;