Pwm使用参考
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节点属性¶
-
npwm:4:表示pwm有4组,此项按4配置即可,无需修改
-
如下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¶
-
打开Kernel中对PWM的支持
-
打开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 节点;