英飞凌TC264之PWM电机控制

本文介绍了一种使用通用定时器模块(GTM)实现PWM信号的方法,并通过一个具体的例子展示了如何通过改变PWM信号的占空比来控制电机的速度。该示例包括了PWM信号的初始化配置、设置占空比和频率等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.PWM是由GTM模块产生
通用定时器模块(GTM)
有4个ATOM子模块,每个子模块有8路可独立配置的通道
有3个TIM子模块,每个子模块有8路可独立配置的通道
有2个TOM子模块,每个子模块有16路可独立配置的通道
2.PWM初始化:

/*
  * @param    pin            :    PWM通道  IfxGtm_PinMap.h中 已经定义了对应的PWM管脚
  * @param    duty           :    占空比 * ATOM_PWM_MAX
  * @param    pwmFreq_Hz     :    频率
*/
void ATOM_PWM_InitConfig(IfxGtm_Atom_ToutMap pin, uint32_t duty, uint32_t pwmFreq_Hz)
{
}

3.设置PWM:

/*
   pin            :PWM通道 IfxGtm_PinMap.h中 已经定义了对应的PWM管脚
   duty           :占空比 * ATOM_PWM_MAX
   pwmFreq_Hz     : PWM频率
*/
void ATOM_PWM_SetDuty(IfxGtm_Atom_ToutMap pin, uint32_t duty, uint32_t pwmFreq_Hz)
{
}

这里面传的参数和初始化中的一样。
4.例程:

void LQ_Atom_Motor_8chPWM(void)
{
	unsigned short duty=5000;
	char txt[16];


	TFTSPI_Init(1);        //LCD初始化  0:横屏  1:竖屏
	TFTSPI_CLS(u16BLUE);   //蓝色屏幕
	TFTSPI_P8X16Str(0, 3, "Test Motor",u16WHITE,u16BLACK);		//字符串显示
	GPIO_KEY_Init();

	ATOM_PWM_InitConfig(ATOMPWM0, 5000, 12500);
	ATOM_PWM_InitConfig(ATOMPWM1, 5000, 12500);
	ATOM_PWM_InitConfig(ATOMPWM2, 5000, 12500);
	ATOM_PWM_InitConfig(ATOMPWM3, 5000, 12500);
	ATOM_PWM_InitConfig(ATOMPWM4, 1000, 12500);
	ATOM_PWM_InitConfig(ATOMPWM5, 1000, 12500);
	ATOM_PWM_InitConfig(ATOMPWM6, 1000, 12500);
	ATOM_PWM_InitConfig(ATOMPWM7, 1000, 12500);

	while(1)
	{
		if(KEY_Read(KEY0)==0)//按下KEY0键,占空比减小
		{
			if(duty>500)
				duty-=500;
		}
		if(KEY_Read(KEY2)==0)//按下KEY2键,占空比加大
		{
			if(duty<ATOM_PWM_MAX)//满占空比为10000
				duty+=500;
		}
		if(KEY_Read(KEY1)==0)//按下KEY1键,占空比中值
		{
			duty=5000;
		}

		ATOM_PWM_SetDuty(ATOMPWM0, duty, 12500);//驱动四个电机
		ATOM_PWM_SetDuty(ATOMPWM1, 5000, 12500);
		ATOM_PWM_SetDuty(ATOMPWM2, duty, 12500);
		ATOM_PWM_SetDuty(ATOMPWM3, 5000, 12500);
		//ATOM_PWM_SetDuty(ATOMPWM4, duty, 12500);
		//ATOM_PWM_SetDuty(ATOMPWM5, duty, 12500);
		//ATOM_PWM_SetDuty(ATOMPWM6, duty, 12500);
		//ATOM_PWM_SetDuty(ATOMPWM7, duty, 12500);

		sprintf(txt, "PWM: %05d;", duty);
		TFTSPI_P8X16Str(0, 5, txt,u16WHITE,u16BLACK);		//字符串显示
		UART_PutStr(UART0,txt);

    	LED_Ctrl(LED0,RVS);        //电平翻转,LED闪烁
		delayms(200);              //延时等待
	}
}

4.1前面几步是初始化彩屏和按键的,初始化ATOM为PWM输出功能,其中PWM通道可以有好多种选择的,比如ATOMPWM0就远远不止这些。
在这里插入图片描述
while里的条件语句就是根据按键来改变PWM的占空比,

ATOM_PWM_SetDuty(ATOMPWM0, duty, 12500);

用这个函数就可以用来驱动电机,因为电机驱动是双桥电路,我们可以来固定一个桥的占空比,再根据调节另一个桥的占空比,形成差值,就可以控制电机的前进,后退。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值