Exemplo n.º 1
0
//----------------------------------------------------------------------------------------------------
void PWM_Init(void)
{
  //电机
  ftm_init_struct0.FTM_Ftmx = FTM0;	                                        //使能FTM0通道
  ftm_init_struct0.FTM_Mode = FTM_MODE_PWM;	                                //输出PWM模式
  ftm_init_struct0.FTM_PwmFreq = 20000;	                                        //PWM频率18000Hz
  ftm_init_struct0.FTM_PwmDeadtimeCfg=DEADTIME_CH45|DEADTIME_CH67;
  
    //编码器 FTM1:A12 A13    
  ftm_init_struct1.FTM_Ftmx = FTM1;              //只有FTM1和FTM2有正交解码功能
  ftm_init_struct1.FTM_Mode = FTM_MODE_QD;       //正交解码功能
  ftm_init_struct1.FTM_QdMode = QD_MODE_PHAB;    //AB相输入模式
  //编码器 FTM2:A10 A11
  ftm_init_struct2.FTM_Ftmx = FTM2;              //只有FTM1和FTM2有正交解码功能
  ftm_init_struct2.FTM_Mode = FTM_MODE_QD;       //正交解码功能
  ftm_init_struct2.FTM_QdMode = QD_MODE_PHAB;    //AB相输入模式
  
  LPLD_FTM_Init(ftm_init_struct0);
  LPLD_FTM_Init(ftm_init_struct1);
  LPLD_FTM_Init(ftm_init_struct2);

  LPLD_FTM_PWM_Enable(FTM0, FTM_Ch4, 0, PTD4, ALIGN_LEFT);
  LPLD_FTM_PWM_Enable(FTM0, FTM_Ch5, 0, PTD5, ALIGN_LEFT);
  LPLD_FTM_PWM_Enable(FTM0, FTM_Ch6, 0, PTD6, ALIGN_LEFT);
  LPLD_FTM_PWM_Enable(FTM0, FTM_Ch7, 0, PTD7, ALIGN_LEFT);
  
  LPLD_FTM_QD_Enable(FTM1, PTA12, PTA13);//右电机
  LPLD_FTM_QD_Enable(FTM2, PTA10, PTA11);//左电机

}
Exemplo n.º 2
0
/*
 * 初始化FTM的PWM输出功能
 *
 */
void pwm_init(void)
{
#if defined(CPU_MK60DZ10) || defined(CPU_MK60D10)
  ftm_init_struct.FTM_Ftmx = FTM0;	//使能FTM0通道
  ftm_init_struct.FTM_Mode = FTM_MODE_PWM;	//使能PWM模式
  ftm_init_struct.FTM_PwmFreq = 50;	//PWM频率50Hz
  
  LPLD_FTM_Init(ftm_init_struct);
  
  LPLD_FTM_PWM_Enable(FTM0, //使用FTM0
                      FTM_Ch0, //使能Ch0通道
                      angle_to_period(0), //初始化角度0度
                      PTC1, //使用Ch0通道的PTC1引脚
                      ALIGN_LEFT        //脉宽左对齐
                      );  
#elif defined(CPU_MK60F12) || defined(CPU_MK60F15)  
  ftm_init_struct.FTM_Ftmx = FTM2;	//使能FTM0通道
  ftm_init_struct.FTM_Mode = FTM_MODE_PWM;	//使能PWM模式
  ftm_init_struct.FTM_PwmFreq = 50;	//PWM频率50Hz
  
  LPLD_FTM_Init(ftm_init_struct);
  
  LPLD_FTM_PWM_Enable(FTM2, //使用FTM0
                      FTM_Ch0, //使能Ch0通道
                      angle_to_period(0), //初始化角度0度
                      PTD0, //使用Ch0通道的PTD0引脚
                      ALIGN_LEFT        //脉宽左对齐
                      );
#endif
}
Exemplo n.º 3
0
void Motor_Init(void)
{
    ftm_init_struct.FTM_Ftmx = FTM0;	
    ftm_init_struct.FTM_Mode = FTM_MODE_PWM;	
    ftm_init_struct.FTM_PwmFreq = 7500 ;
    LPLD_FTM_Init(ftm_init_struct);
    LPLD_FTM_PWM_Enable(FTM0, 
            FTM_Ch0, 
            0, 
            PTC1, 
            ALIGN_LEFT        
            );    
    LPLD_FTM_PWM_Enable(FTM0, 
            FTM_Ch1, 
            0, 
            PTC2, 
            ALIGN_LEFT        
            );    
    LPLD_FTM_PWM_Enable(FTM0, 
            FTM_Ch2, 
            0, 
            PTC3, 
            ALIGN_LEFT        
            );    
    LPLD_FTM_PWM_Enable(FTM0, 
            FTM_Ch3, 
            0, 
            PTC4, 
            ALIGN_LEFT        
            );    
}
/*
 * 初始化FTM1的正交解码功能
 *
 */
void qd_init(void)
{
  //配置正交解码功能参数
  ftm_init_struct.FTM_Ftmx = FTM1;              //只有FTM1和FTM2有正交解码功能
  ftm_init_struct.FTM_Mode = FTM_MODE_QD;       //正交解码功能
  ftm_init_struct.FTM_QdMode = QD_MODE_PHAB;    //AB相输入模式
  //初始化FTM
  LPLD_FTM_Init(ftm_init_struct);
  //使能AB相输入通道
  //PTB0引脚接A相输入、PTB1引脚接B相输入
  LPLD_FTM_QD_Enable(FTM1, PTB0, PTB1);
}
Exemplo n.º 5
0
void init_all_pulse_counter()
{
    GPIO_InitTypeDef gpio_init_struct={0};
    gpio_init_struct.GPIO_PTx = PTA;
    gpio_init_struct.GPIO_Pins = GPIO_Pin12 | GPIO_Pin13;
    gpio_init_struct.GPIO_Dir = DIR_INPUT;
    gpio_init_struct.GPIO_PinControl = INPUT_PULL_UP | INPUT_PF_EN;
    LPLD_GPIO_Init(gpio_init_struct);
    
    //配置正交解码功能参数
    FTM_InitTypeDef ftm_init_struct={0};
    ftm_init_struct.FTM_Ftmx = FTM1;              //只有FTM1和FTM2有正交解码功能
    ftm_init_struct.FTM_Mode = FTM_MODE_QD;       //正交解码功能
    ftm_init_struct.FTM_QdMode = QD_MODE_PHAB;    //AB相输入模式
    //初始化FTM
    LPLD_FTM_Init(ftm_init_struct);
    //使能AB相输入通道
    //PTB0引脚接A相输入、PTB1引脚接B相输入
    LPLD_FTM_QD_Enable(FTM1, PTA12, PTA13);
    
    gpio_init_struct.GPIO_PTx = PTB;
    gpio_init_struct.GPIO_Pins = GPIO_Pin18 | GPIO_Pin19;
    gpio_init_struct.GPIO_Dir = DIR_INPUT;
    gpio_init_struct.GPIO_PinControl = INPUT_PULL_UP | INPUT_PF_EN;
    LPLD_GPIO_Init(gpio_init_struct);
    
    //配置正交解码功能参数
    ftm_init_struct.FTM_Ftmx = FTM2;              //只有FTM1和FTM2有正交解码功能
    ftm_init_struct.FTM_Mode = FTM_MODE_QD;       //正交解码功能
    ftm_init_struct.FTM_QdMode = QD_MODE_PHAB;    //AB相输入模式
    //初始化FTM
    LPLD_FTM_Init(ftm_init_struct);
    //使能AB相输入通道
    //PTB0引脚接A相输入、PTB1引脚接B相输入
    LPLD_FTM_QD_Enable(FTM2, PTB18, PTB19);
}
Exemplo n.º 6
0
void pwm_init()
{
    FTM_InitTypeDef ftm_init_struct={0};
    ftm_init_struct.FTM_Ftmx = FTM0;	//使能FTM0通道
    ftm_init_struct.FTM_Mode = FTM_MODE_PWM;	//使能PWM模式
    ftm_init_struct.FTM_PwmFreq = 15000;  
    
    LPLD_FTM_Init(ftm_init_struct);
    
    //FTM0 ch4右前 ch5右后 ch6左后 ch7左前
    LPLD_FTM_PWM_Enable(FTM0,FTM_Ch4,0, PTD4,ALIGN_LEFT);
    LPLD_FTM_PWM_Enable(FTM0,FTM_Ch5,0, PTD5,ALIGN_LEFT);
    LPLD_FTM_PWM_Enable(FTM0,FTM_Ch6,0, PTD6,ALIGN_LEFT);
    LPLD_FTM_PWM_Enable(FTM0,FTM_Ch7,0, PTD7,ALIGN_LEFT);
}
Exemplo n.º 7
0
void Motor_Init(void)
{
	/* Initial motor pwm */

	FTM_InitTypeDef motorInitStruct;

    motorInitStruct.FTM_Ftmx = FTM0;
    motorInitStruct.FTM_Mode = FTM_MODE_PWM;
    motorInitStruct.FTM_PwmFreq = MOTOR_FRE;
    motorInitStruct.FTM_PwmDeadtimeCfg = DEADTIME_CH01;
    motorInitStruct.FTM_PwmDeadtimeDiv = DEADTIME_DIV1;
    motorInitStruct.FTM_PwmDeadtimeVal = 0;


    LPLD_FTM_Init(motorInitStruct);
/*----------left motor backward initial--------*/
    LPLD_FTM_PWM_Enable(FTM0,
                        FTM_Ch1,
                        0,
                        MOTOR_LEFT_BACKWARD,  //PTA4
                        ALIGN_LEFT
                        );
/*----------left motor forward initial--------*/
    LPLD_FTM_PWM_Enable(FTM0,
                        FTM_Ch2,
                        PWM_Expect,
                        MOTOR_LEFT_FORWARD,  //PTA5
                        ALIGN_LEFT
                        );
/*----------right motor backward initial--------*/
    LPLD_FTM_PWM_Enable(FTM0,
                        FTM_Ch3,
                        0,
                        MOTOR_RIGHT_BACKWARD,  //PTA6
                        ALIGN_LEFT
                        );
/*----------righ motor forward initial--------*/
    LPLD_FTM_PWM_Enable(FTM0,
                        FTM_Ch4,
                        PWM_Expect,
                        MOTOR_RIGHT_FORWARD,  //PTA7
                        ALIGN_LEFT
                        );
}
Exemplo n.º 8
0
status ftm_pwm_init(mypwm *pwm, uint32 FTM_PwmFreq, uint32 duty)
{
	pwm_init_struct.FTM_Ftmx = pwm->FTM_Ftmx; //使能FTM1通道
	pwm_init_struct.FTM_Mode = FTM_MODE_PWM; //使能PWM模式
	pwm_init_struct.FTM_PwmFreq = FTM_PwmFreq; //PWM频率100Hz
	pwm_init_struct.FTM_PwmDeadtimeCfg = DEADTIME_CH01;
	pwm_init_struct.FTM_PwmDeadtimeDiv = DEADTIME_DIV16;
	pwm_init_struct.FTM_PwmDeadtimeVal = 63;
	if( LPLD_FTM_Init(pwm_init_struct) && \
		LPLD_FTM_PWM_Enable(pwm->FTM_Ftmx, //使用FTM1
						  pwm->chn, //使能Ch1通道
						  duty, //初始化角度30度
						  pwm->pin, //使用Ch1通道的PTD1引脚
						  ALIGN_LEFT        //脉宽左对齐
						  ) )
	{
		return SUCCESS;
	}
	else
	{
		return ERROR;
	}
}