TLE9869是cortex-m3内核的,可以使用keil进行开发,使用的Keil版本为5.21,如果没出现下图所列板子的列表,电机File下面的刷新,点击TLE9869 EvaKit(v1.0),然后安装PACK包,如下图所示。
安装完之后,点击example,找到例子点击COPY,会打开工程,保存好即可。
首先看一下LED的工程,
#include <wdt1.h>//看门狗
#include <scu.h>//时钟
#include <port.h>//io口
#include <eval_board.h>//板载6个LED的定义
int main(void)
{
int i;//定义一个变量,用于计数
SCU_Init();//时钟初始化
PORT_Init();//IO初始化
PORT_ChangePin(LED1, PORT_ACTION_OUTPUT); //设置P0.1为输出模式
i = 0;
while (1)
{
WDT1_Service();
i++;
if (i > 100000)
{
PORT_ChangePin(LED1, PORT_ACTION_TOGGLE);//翻转P0.1引脚电平
i = 0;
}
}
}
再看一下,官网给出的DC电机驱动的例子,是以直流母线电压的1/4施加在DC_MOTOR上,具有短路保护功能,这一点在上一贴中提到了,也可以查看用户手册27.4节。它用LED1来显示电机是否连接到开发板上,用LED3-6来显示不同的短路情况。
#include <tle_device.h>
#include "main.h"
#include <eval_board.h>//原来工程没有添加,添加上就不会报LED1-6没有定义
int main(void)
{
TLE_Init();
/* check open load at the motor contacts */
if (BDRV_Diag_OpenLoad() == true)
{
/* no motor detected */
PORT_ChangePin(LED1, PORT_ACTION_SET);
}
else
{
/* motor found */
/* configure bridge to run PWM on Phase2 - forward */
//BDRV_Set_Bridge(Ch_En, Ch_On, Ch_PWM, Ch_PWM);//电机正传
/* backward */
/* configure bridge to run PWM on Phase1 - backward */
BDRV_Set_Bridge(Ch_PWM, Ch_PWM, Ch_En, Ch_On);//电机反转
/* start PWM generation */
CCU6_StartTmr_T12();
}
while (1)
{
WDT1_Service();
}
}
//保护功能
void Bdrv_Diagnose(void)
{
PORT_ChangePin(LED6, PORT_ACTION_CLEAR);
PORT_ChangePin(LED5, PORT_ACTION_CLEAR);
PORT_ChangePin(LED3, PORT_ACTION_CLEAR);
PORT_ChangePin(LED4, PORT_ACTION_CLEAR);
if (BDRV->CTRL1.bit.LS1_OC_STS == 1)
{
PORT_ChangePin(LED6, PORT_ACTION_SET);
SCUPM->BDRV_ISCLR.bit.LS1_OC_ICLR = 1;
}
if (BDRV->CTRL1.bit.HS1_OC_STS == 1)
{
PORT_ChangePin(LED5, PORT_ACTION_SET);
SCUPM->BDRV_ISCLR.bit.HS1_OC_ICLR = 1;
}
if (BDRV->CTRL1.bit.LS2_OC_STS == 1)
{
PORT_ChangePin(LED4, PORT_ACTION_SET);
SCUPM->BDRV_ISCLR.bit.LS2_OC_ICLR = 1;
}
if (BDRV->CTRL1.bit.HS2_OC_STS == 1)
{
PORT_ChangePin(LED3, PORT_ACTION_SET);
SCUPM->BDRV_ISCLR.bit.HS2_OC_ICLR = 1;
}
if ((BDRV->CTRL1.bit.LS1_DS_STS == 1) && (BDRV->CTRL1.bit.LS1_DCS_EN == 1))
{
PORT_ChangePin(LED6, PORT_ACTION_SET);
SCUPM->BDRV_ISCLR.bit.LS1_DS_ICLR = 1;
}
if ((BDRV->CTRL1.bit.HS1_DS_STS == 1) && (BDRV->CTRL1.bit.HS1_DCS_EN == 1))
{
PORT_ChangePin(LED5, PORT_ACTION_SET);
SCUPM->BDRV_ISCLR.bit.HS1_DS_ICLR = 1;
}
if ((BDRV->CTRL1.bit.LS2_DS_STS == 1) && (BDRV->CTRL1.bit.LS2_DCS_EN == 1))
{
PORT_ChangePin(LED4, PORT_ACTION_SET);
SCUPM->BDRV_ISCLR.bit.LS2_DS_ICLR = 1;
}
if ((BDRV->CTRL1.bit.HS2_DS_STS == 1) && (BDRV->CTRL1.bit.HS2_DCS_EN == 1))
{
PORT_ChangePin(LED3, PORT_ACTION_SET);
SCUPM->BDRV_ISCLR.bit.HS2_DS_ICLR = 1;
}
WDT1_Service();
}
只有注册用户才能在此添加评论。 如果您已经注册,请登录。 如果您还没有注册,请注册并登录。