参考资料:i.MX 6Dual/6Quad Applications Processor Reference Manual,可在我的资源中下载到。
imx6q有PWM·1~4,本文以PWM4为例,阐述如何设置PWM。
1、设置 PWM4管脚功能(PWM4_OUT=ALT2)
文档搜索“PWM4_OUT”,会看到
Signal | Pad (Mode) | Mux/Input Select Registers |
PWM4_OUT | SD1_CMD (ALT2) | IOMUXC_SW_MUX_CTL_PAD_SD1_CMD |
2、设置 PWM Control Register (PWMx_PWMCR)
a、选择时钟源(CLKSRC=11)
文档Chapter 51 Pulse Width Modulation (PWM)
有三种时钟可供选择
01 | ipg_clk | 66MHZ |
10 | ipg_clk_highfreq | |
11 | ipg_clk_32k | 3.2MHZ |
b、设置分频(PRESCALER=0x000)
PCLK=CLKSRC/(PRESCALER+1)
c、设置PWM输出 (POUTC=00)
00 | CMP状态输出0 |
01 | CMP状态输出1 |
d、设置PWM使能 (PWM disabled = 0)
PWM使能端在设置之初,状态必需是disabled
0 | PWM disabled |
1 | PWM enabled |
3、设置 PWM Period Register (PWMx_PWMPR)
PWMO (Hz) = PCLK(Hz) / (period +2)
4、设置 PWM Sample Register (PWMx_PWMSAR)
sample设置条件:(sample<period)
5、设置 PWM Control Register (PWMx_PWMCR)
其它参数不变的情况下:
d、设置PWM使能(PWM enabled = 1)
设置PWM enable=1之后,pwm管脚已经有输出了!\(^o^)/~
备注:调试过程中,可以读取寄存器,以检验参数是否设置成功。