1、查看BDRV_Set_Bridge()函数的参数的相关配置
右键点击BDRV_Set_Bridge()函数的参数Ch_LS_PWM,然后选中”Go To Definition Of ‘Ch_LS_PWM’”,进行跳转
可以看到H桥的LS桥臂有四种设置状态,H桥的HS桥臂也有一样的四个状态
Ch_LS_Off = 0u, /*桥臂非使能 */
Ch_LS_En = 1u, /*桥臂使能 */
Ch_LS_PWM = 3u, /*桥臂使用PWM(CCU6生成)驱动*/
Ch_LS_On = 5u /*桥臂使能并且静态打开*/
用PWM驱动H桥桥臂,BDRV_Set_Bridge()函数的四个参数分别设置为:
Ch_LS_PWM, Ch_PWM, Ch_LS_PWM, Ch_PWM
现在想要直接打通H桥,而不再使用PWM,则四个参数要进行调整,修改要打通的H桥桥臂的参数为:Ch_LS_On或Ch_On
2、根据BDRV_Set_Bridge()函数参数的相关配置进行修改程序
查看BDRV_Set_Bridge()函数定义
可以看到BDRV_Set_Bridge()函数四个参数分别控制LS1、HS1、LS2、HS2四个桥臂,现在想要打通HS2、LS1,关断HS1、LS2则需要将BDRV_Set_Bridge()函数修改为:
BDRV_Set_Bridge(Ch_LS_On, Ch_En, Ch_LS_En, Ch_On);
3、完整的修改后的main.c程序为:
#include "tle_device.h"
int main(void)
{
/*****************************************************************************
** initialization of the hardware modules based on the configuration done **
** by using the IFXConfigWizard **
*****************************************************************************/
TLE_Init();
BDRV_Set_Bridge(Ch_LS_On, Ch_En, Ch_LS_En, Ch_On); //将LS1、HS2设置为ON,即打开LS1、HS2,将LS2、HS1设置为EN,不能将LS2、HS1分别设置为Ch_LS_Off、Ch_Off,这样会导致H桥无法正常工作。
for (;;)
{
(void)WDT1_Service(); //看门狗
}
}
4、此时GH2、GL1常通、GH1、GL2常闭
各引脚电压为:
V(gh1) = 0V, V(gh2) = 24V, V(gl1) = 10V, V(gl2) = 0V
V(sh1) = 0V, V(sh2) = 12V, V(sl) = 0V
各引脚的电压波形为:
GH2:
SH2:
GL2:
SL:
GL1:
SH1:
。
GH1:
5、分析测试结果,可以看出
使用直接控制H桥桥臂打开的方式,相较于使用PWM的方式代码简洁了许多,而且GH1、SH1端点的电压在GH2、GL1导通时保持为0,。
但是GL1端的电压从5V变成了10V,并且电机一直以最大速度运行,没有办法调节电机的转速,所以相较于PWM控制,无法调速是一个很大的劣势。