Ejemplo 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);//左电机

}
/*
 * 初始化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);
}
Ejemplo n.º 3
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);
}