查看: 2673|回复: 1

[原创] 【经验分享】MIMXRT1010 PWM MCUXpresso CFG模块配置分享

[复制链接]

该用户从未签到

656

主题

6312

帖子

0

超级版主

Rank: 8Rank: 8

积分
20028
最后登录
2024-4-26
发表于 2020-9-11 14:36:34 | 显示全部楼层 |阅读模式

【经验分享】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.jpg

图1

  1. <p>  IOMUXC_SetPinMux(
  2.       IOMUXC_GPIO_AD_06_FLEXPWM1_PWM3_A,   
  3.       0U);</p><p>
  4.   IOMUXC_SetPinConfig(
  5.       IOMUXC_GPIO_AD_06_FLEXPWM1_PWM3_A,
  6.       0x10A1U);
  7. </p>
复制代码


这样,GPIO_AD_06引脚即可配置为PWM引脚功能,配置好好点击update code按钮,将代码更新到整个工程。

步骤二:Clocks时钟系统配置

   PWM的模块时钟源选择为bus clock,也就是ipgclock, 这里配置IPG_CLK_ROOTwei 41.66Mhz,如下

2.jpg

图2.

配置好后,点击update code按钮,将代码更新到整个工程。


步骤三:Peripherals外设模块配置

目标,配置PWM波形为1Khz,占空比为40%的波形,具体配置如下:

3.jpg

图3

4.jpg

图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.jpg

图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.jpg

6.


步骤五: 修改main函数如下

  1. int main(void)
  2. {

  3.     /* Board pin, clock, debug console init */
  4.     BOARD_ConfigMPU();
  5.     BOARD_InitPins();
  6.     BOARD_BootClockRUN();
  7.     BOARD_InitDebugConsole();


  8.     XBARA_Init(XBARA);
  9.     XBARA_SetSignalsConnection(XBARA, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1Fault0);
  10.     XBARA_SetSignalsConnection(XBARA, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1Fault1);
  11.     XBARA_SetSignalsConnection(XBARA, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1Fault2);
  12.     XBARA_SetSignalsConnection(XBARA, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1Fault3);


  13.     BOARD_InitBootPeripherals();
  14.     PWM_SetPwmLdok(BOARD_PWM_BASEADDR, kPWM_Control_Module_3, true);
  15.     PWM_StartTimer(BOARD_PWM_BASEADDR, kPWM_Control_Module_3);

  16.     while (1U)
  17.     {

  18.     }
  19. }
复制代码



到目前为止,所有代码添加完毕,烧录到MIMXRT1010-EVK,测试引脚GPIO_AD_06,即EVK板子的J56_8引脚,波形如下:

7.jpg

7

可见通过CFG工具的配置,可以实现1KHZ40%占空比的PWM波形输出。
evkmimxrt1010_iled_blinky.zip (538.61 KB, 下载次数: 19)

点评

赞  发表于 2020-12-4 19:22
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2024-4-26 23:55 , Processed in 0.115280 second(s), 20 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表