查看: 1898|回复: 0

野火miniRT1052 试用 (三)呼吸灯

[复制链接]
  • TA的每日心情
    开心
    2019-6-20 14:08
  • 签到天数: 43 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2018-6-25 09:41:35 | 显示全部楼层 |阅读模式
    分享到:
    为了完成这个实验,让我花了近1周半的时间才算搞定,尤其在世界杯期间,备受无法看球的痛苦和实验没有结果的折磨,令我非常备受打击!还好在我快要放弃的时候,总算让我搞定了,非常高兴!闲话少说,直来干货吧!
    1. 硬件支持的论证    一般的开发板都会将具有PWM功能的引脚与LED灯所连接,更不用说RGB灯了,用3个具有PWM功能的引脚驱动RGB灯,可以用来实现彩灯/呼吸灯效果。通过查看野火miniRT1052的原理图,可以知道连接RGB的三个引脚分别为IOMUXC_GPIO_AD_B1_08_GPIO1_IO24(开发板CN4插件上的30引脚)、IOMUXC_GPIO_AD_B1_09_GPIO1_IO25(开发板CN4插件上的35引脚)和IOMUXC_GPIO_AD_B1_10_GPIO1_IO10(开发板CN4插件上的4引脚)。我们可以在fsl_iomuxc.h文件中查到这三个引脚具有的功能组。以IOMUXC_GPIO_AD_B1_08_GPIO1_IO24为例,如下图所示。
    ,由该组引脚说明,可以发现红色标识的该引脚可以复用flexpwm功能(其实也就是pwm功能,查看参考手册可以知道有4个FLEXPWM部件,而每个部件有4个子模块,每一个子模块又可以互补输出A和B通道,瞬时间感觉高大上,进行电机驱动/读取编码器绰绰有余 ),而其他2个引脚也一样,所以由此可以得出结论:RGB灯可以通过PWM1的3通道A、PWM4的0通道A和1通道A来实现呼吸灯/彩灯功能(这个其实在用GPIO方式时,也可以实现,只是那个方法比较low了,需要各种色彩进行枚举了)。
    2. 软件的实现   因为野火的没有提供相关的资料,所以我就以固件库里面pwm的例子来学习,经过分析源码学习后,尝试修改,结果老是失败,上野火论坛咨询,帖子也石沉大海了!最后,总算功夫不负有心人,参考原子哥的例子,总算修改好了,修改步骤如下。
      (1) 需要添加对pwm的fault设定(我也不知道为什么,固件库例子也是这么给出的,参考手册也没有看出来个所以然)
    XBARA1_Signal_Set(kXBARA1_InputLogicHigh,kXBARA1_OutputFlexpwm1Fault0);                   XBARA1_Signal_Set(kXBARA1_InputLogicHigh,kXBARA1_OutputFlexpwm1Fault1);             XBARA1_Signal_Set(kXBARA1_InputLogicHigh,kXBARA1_OutputFlexpwm4Fault0); //这句是根据需要操作PWM4而添加的XBARA1_Signal_Set(kXBARA1_InputLogicHigh,kXBARA1_OutputFlexpwm4Fault1); //这句是根据需要操作PWM4而添加的  XBARA1_Signal_Set(kXBARA1_InputLogicHigh,kXBARA1_OutputFlexpwm1234Fault2);  XBARA1_Signal_Set(kXBARA1_InputLogicHigh,kXBARA1_OutputFlexpwm1234Fault3);  (2)对引脚进行初始化
      //IO引脚设置  IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B1_08_FLEXPWM4_PWMA00,0);    IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B1_09_FLEXPWM4_PWMA01,0);    IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B0_10_FLEXPWM1_PWMA03,0);            //功能设置  IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B1_08_FLEXPWM4_PWMA00,0x10B0);  IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B1_09_FLEXPWM4_PWMA01,0x10B0);  IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B0_10_FLEXPWM1_PWMA03,0x10B0);(3)PWM功能设置PWM_GetDefaultConfig(&pwmXsmX_config);              //先初始化为默认值pwmXsmX_config.clockSource=kPWM_BusClock;           //时钟源IP BUS=IPG_CLK_ROOT=150MHzpwmXsmX_config.prescale=pwm_prescale;               //分频值pwmXsmX_config.reloadLogic=kPWM_ReloadPwmFullCycle; //全周期更新pwmXsmX_config.pairOperation=kPWM_Independent;      //PMWA PWMB独立模式(固件库中有PWMA和PWMB互补输出方式的实现方式)(4)初始化PWM通道
    PWM_Init(PWM4,kPWM_Module_0 | kPWM_Module_1,&pwmXsmX_config)WM_Init(PWM1,kPWM_Module_3,&pwmXsmX_config);sourceclock=CLOCK_GetFreq(kCLOCK_IpgClk);  //PWMApwm_ignal.pwmChannel=kPWM_PwmA;                  //通道Apwm_ignal.level=kPWM_HighTrue;                   //高电平有效pwm_ignal.dutyCyclePercent=duty;                 //占空比PWM_SetupPwm(PWM4,kPWM_Module_0,&pwm_ignal,1,kPWM_SignedCenterAligned,fre,sourceclock)WM_SetPwmLdok(PWM4,kPWM_Control_Module_0,true);    //设置PWM的load ok位PWM_StartTimer(PWM4,kPWM_Control_Module_0);         //启动定时器                PWM_SetupPwm(PWM4,kPWM_Module_1,&pwm_ignal,1,kPWM_SignedCenterAligned,fre,sourceclock)WM_SetPwmLdok(PWM4,kPWM_Control_Module_1,true);    PWM_StartTimer(PWM4,kPWM_Control_Module_1);         //启动定时器<br&gtWM_SetupPwm(PWM1,kPWM_Module_3,&pwm_ignal,1,kPWM_SignedCenterAligned,fre,sourceclock)WM_SetPwmLdok(PWM1,kPWM_Control_Module_3,true);   PWM_StartTimer(PWM1,kPWM_Control_Module_3);        //启动定时器(5)根据自己的需要更改占空比
    PWM_UpdatePwmDutycycle(PWM4,kPWM_Module_0,kPWM_PwmA,kPWM_SignedCenterAligned,duty); // 更新PWM4 0路的A通道 占空比PWM_SetPwmLdok(PWM4,kPWM_Control_Module_0,true);    //设置PWM的load ok位<br&gtWM_UpdatePwmDutycycle(PWM4,kPWM_Module_1,kPWM_PwmA,kPWM_SignedCenterAligned,duty); // 更新PWM4 1路的A通道 占空比PWM_SetPwmLdok(PWM4,kPWM_Control_Module_1,true);    //设置PWM的load ok位PWM_UpdatePwmDutycycle(PWM1,kPWM_Module_3,kPWM_PwmA,kPWM_SignedCenterAligned,duty); // 更新PWM1 3路的A通道 占空比PWM_SetPwmLdok(PWM1,kPWM_Control_Module_3,true);    //设置PWM的load ok位3. 通过示波器可以分别检查到3个引脚的输出正常,效果视频如下(分别为变化慢和变化快)。https://v.youku.com/v_show/id_XMzY4MDcyOTk1Ng==.ht...  
    https://v.youku.com/v_show/id_XMzY4MDcyOTk2MA==.ht...
    回复

    使用道具 举报

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

    本版积分规则

    手机版|小黑屋|与非网

    GMT+8, 2024-4-24 09:40 , Processed in 0.121390 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.