【经验分享】MIMXRT1010PWM MCUXpresso CFG模块配置分享 MCUXpressoCFG工具是NXP官方推出的一款集成配置工具,可以通过配置工具界面选项,快速配置并生成引脚,时钟和外设相关的初始化代码。最近有客户在做RT1010 PWM波输出的时候,想使用CFG工具配置,并遇到了些问题,所以这里分享关于RT1010 PWM MCXUpresso CFG工具配置PWM module 3, 并在GPIO_AD_06引脚输出一个1Khz,占空比为40%的PWM波形,测试平台是NXP 官方MIMXRT1010-EVK 开发板。
要想实现PWM波形的代码输出以及相关代码,涉及MCUXPress CFG的工具有:
Pins:配置PWM相关引脚的代码
Clocks:配置PWM模块的时钟源时钟
Peripherals: 配置PWM模块的具体情况,并生成初始化代码
本次测试是以SDK_2.8.2_EVK-MIMXRT1010 SDK的iled_blinky工程作为平台, SDK下载链接:
使用MCUXPresso IDE导入iled_blinky工程。
步骤一:pins 引脚配置
选择PWM1,A,3选择GPIO_AD_06引脚,配置引脚相关选项,会发现code preview区域生成PWM1相关代码:
图1
- <p> IOMUXC_SetPinMux(
- IOMUXC_GPIO_AD_06_FLEXPWM1_PWM3_A,
- 0U);</p><p>
- IOMUXC_SetPinConfig(
- IOMUXC_GPIO_AD_06_FLEXPWM1_PWM3_A,
- 0x10A1U);
- </p>
复制代码
这样,GPIO_AD_06引脚即可配置为PWM引脚功能,配置好好点击update code按钮,将代码更新到整个工程。
步骤二:Clocks时钟系统配置
PWM的模块时钟源选择为bus clock,也就是ipgclock, 这里配置IPG_CLK_ROOTwei 41.66Mhz,如下
图2.
配置好后,点击update code按钮,将代码更新到整个工程。
步骤三:Peripherals外设模块配置
目标,配置PWM波形为1Khz,占空比为40%的波形,具体配置如下:
图3
图4
这里需要注意一个bug,在选择了set LDOK in initialization和start counter in initialization之后,会在PWM1_init函数中生成代码:
PWM_SetPwmLdok(PWM1_PERIPHERAL,(kPWM_Control_Module_0), true);
PWM_StartTimer(PWM1_PERIPHERAL, (kPWM_Control_Module_0));
图5
需要注意的是,因为我们使用的是submodule3,所以这里需要kPWM_Control_Module_3,所以实际配置,可以不勾选这两项,然后在main的代码中添加。
PWM_SetPwmLdok(BOARD_PWM_BASEADDR, kPWM_Control_Module_3, true);
PWM_StartTimer(BOARD_PWM_BASEADDR, kPWM_Control_Module_3);
配置好模块之后,点击update code按钮,将代码更新到整个工程。
步骤四:添加相关SDK代码驱动
在使用PWM模块的时候,还需要添加PWM相关的驱动代码,回到工程代码界面,点击manage SDK components,添加pwm 还有XBARA相关代码,xbara用于fault引脚控制。
图6.
步骤五: 修改main函数如下
- int main(void)
- {
- /* Board pin, clock, debug console init */
- BOARD_ConfigMPU();
- BOARD_InitPins();
- BOARD_BootClockRUN();
- BOARD_InitDebugConsole();
- XBARA_Init(XBARA);
- XBARA_SetSignalsConnection(XBARA, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1Fault0);
- XBARA_SetSignalsConnection(XBARA, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1Fault1);
- XBARA_SetSignalsConnection(XBARA, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1Fault2);
- XBARA_SetSignalsConnection(XBARA, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1Fault3);
- BOARD_InitBootPeripherals();
- PWM_SetPwmLdok(BOARD_PWM_BASEADDR, kPWM_Control_Module_3, true);
- PWM_StartTimer(BOARD_PWM_BASEADDR, kPWM_Control_Module_3);
- while (1U)
- {
- }
- }
复制代码
到目前为止,所有代码添加完毕,烧录到MIMXRT1010-EVK,测试引脚GPIO_AD_06,即EVK板子的J56_8引脚,波形如下:
图7
可见通过CFG工具的配置,可以实现1KHZ,40%占空比的PWM波形输出。 |