[分享] MIMXRT1010 PWM MCUXpresso CFG模块配置分享
575 查看
1 回复
 楼主 | 发布于 2020-09-21 | 只看楼主
分享到:
    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

  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.

配置好后,点击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函数如下

  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

可见通过CFG工具的配置,可以实现1KHZ40%占空比的PWM波形输出。

本帖有更多资源,需 登录 才可以下载,没有帐号?立即 注册

(0 ) (0 )
回复 举报

回复于 2020-09-25 沙发

(0 )
评论 (0) 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    • 广告垃圾
    • 违规内容
    • 恶意灌水
    • 重复发帖

    全部板块

    返回顶部