打印
[技术问题解答]

FTM2 PWM 输出设置

[复制链接]
902|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhangqi123zq|  楼主 | 2016-1-26 13:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zhangqi123zq 于 2016-1-26 15:04 编辑

您好,新人求助,FTM2 PWM输出设置,独立模式,输出相同。
void FTM2_Init(u16 val,u8 interrupt_EN)
{
    FTM_OVERTIME_DISEN_typ interrupt_en;
   
    interrupt_en = (FTM_OVERTIME_DISEN_typ) (interrupt_EN&0x01);
     SIM->SCGC |=0x80;  //¿ªÆôFTM2 ʱÖÓ
  //SIM->SOPT|=4000;   //FTM2 ×Ô¶¯Í¬²½
    //FTM2->POL|=0x20;      //ϵͳʱÖÓ  
     FTM2->SC =0X00;      //Çå³ýÅäÖÃ
     FTM2->MOD=val ;      //×î´ó¼ÆÊýÖµ
      FTM2->CNT = 0;       //Çå³ý¼ÆÊýÆ÷
     FTM2->SC&=~0x20;     //ÏòÉϼÆÊýģʽ
     FTM2->SC &=~ 0x07;   //ʱÖÓ²»·ÖƵ 128
    // FTM2->SC|=0x08;      //ϵͳʱÖÓ   
     FTM2->SC&=~0x80;  //Çå³ýÖжϱê¼Ç
    if(interrupt_en==FTM_OVERTIME_EN)
    {
      FTM2->SC&=~0x80;  //Çå³ýÖжϱê¼Ç
      FTM2->SC |=0x60; //ʹÄÜÒç³öÖжÏ
      NVIC_EnableIRQ(FTM2_IRQn);    //ʹÄÜÖжÏÏß
    }
}
void FTM2_PWM_Init(u8 CHannels,u8 CH_SW,u8 interrupt_EN)
{
        u8 i=0;
        FTM_CH_typ       channels;
        FTM2_PWM_SW_typ  CH_sw;
        FTM_CH_EN_typ    interrupt_en;
        
        channels      = (FTM_CH_typ)      (CHannels&0X3F)     ;
  CH_sw         = (FTM2_PWM_SW_typ) (CH_SW&0X3F)        ;
        interrupt_en  = (FTM_CH_EN_typ)   (interrupt_EN&0X3F) ;
        for(i=0;i<6;i++)
        {
         if((channels&(0x01<<i))>0)
         {
          if(( FTM2->MODE&0x04)==0)   
          {
                 if(FTM2->FMS & 0x40)         
                 {
                   FTM2->MODE |= 0x04;      
                        
                 }
          }
         
        //ɨÃèÒý½ÅÇл»-------------------------------------
                switch(i)
                {
                  case 2:
                                    if(CH_sw&FTM2_PWM_CH2_PTC4)
                                                {
                                                   SIM->PINSEL |=  0x4000;                  
                                                }
                                                else
                                                {
                                                  SIM->PINSEL &=~ 0x4000;  
                                                }
                        break;
                        
            case 3:
                                                if(CH_sw&FTM2_PWM_CH3_PTC5)
                                                {
              SIM->PINSEL |=  0x1000;  //FTM2 ͨµÀ 3  Ó³Éäµ½ PTC5        
                                                }
                                                else
                                                {
                                                  SIM->PINSEL &=~ 0x1000;  //FTM2 ͨµÀ 3  Ó³Éäµ½ PTC3
                                                }               
                        break;        
                }
                //ͨµÀÅäÖÃ---------------------------------------
           FTM2->CONTROLS.CnSC=0;
           FTM2->CONTROLS.CnSC |= 0x20;  //±ßÔµ¶ÔÆë PWM ģʽ
           FTM2->CONTROLS.CnSC |= 0x08;  // ¸ßµçƽÓÐЧ
           FTM2->CONTROLS.CnV =1000 ;   //PWMÕ¼¿Õ±È
               
     FTM2->MODE=0x04;               
                 FTM2->POL|=0x20;
                 FTM2->FMS|=0x60;
               
   //ÖжÏÅäÖÃ----------------------------------------               
                if(interrupt_en&(FTM_CH2_EN<<i))
          {
           FTM2->CONTROLS.CnSC &=~0X80;    //Çå³ýÖжϱê¼Ç
     FTM2->CONTROLS.CnSC |=0X40;     //ÔÊÐíPWM ÖжϠ       
          }
         }
        }
}
void MY_PWM_VAl_SET(FTM_Type *FTMx,u8 CHannels,u16 VAL)
{
      PWM_CH_typ       channels;
     if((FTMx!=FTM0)&&(FTMx!=FTM2))
     {
       return;
     }
     if(FTMx==FTM0)         
     {
        channels  = (PWM_CH_typ) (CHannels);
      FTM0->CONTROLS[channels].CnV=VAL;
     }
     else
     {
         channels  = (PWM_CH_typ) (CHannels);
          //   
    FTM2->CONTROLS[channels].CnV=VAL;
      FTM2->PWMLOAD |= 0x200;  //¿ªÆôͬ²½
         //
     }
}
为什么输出FTM2 CH4 与CH5 始终为互补输出。
运行:COMBINE =0;
CSC4=0xA8;
CSC5=0xA8;
SC =0x88;
MOD=0x54c0;
占空比设置30%,CH5 输出30%,CH4 输出70%,互补,为什么?

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

8

帖子

1

粉丝