公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob

【试用2】TLE9869开发环境搭建与例程分析

【试用2】TLE9869开发环境搭建与例程分析

努力的人
Level 1
Level 1

    TLE9869是cortex-m3内核的,可以使用keil进行开发,使用的Keil版本为5.21,如果没出现下图所列板子的列表,电机File下面的刷新,点击TLE9869 EvaKit(v1.0),然后安装PACK包,如下图所示。

1.png

    安装完之后,点击example,找到例子点击COPY,会打开工程,保存好即可。

2.png

首先看一下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();

}


0 点赞
2449 次查看
5 评论