英飞凌TLD4020-3STD_KIT评估板专为汽车内部RGB LED照明打造,以TLD4020-3ET驱动芯片为核心,集成32位ARM Cortex-M23内核与三路独立低侧电流源,每通道支持0-51.5mA输出,可精准调控红、绿、蓝三色LED亮度,实现丰富色彩效果。
评估板采用子母板结构,主板TLD4020-3STD_EVAL与扩展板TLD4020-3DB通过接插件稳固连接,便于灵活扩展。
开发环境搭建便捷,基于Keil MDK,搭配Infineon MCU配置工具与LITIX MCU SDK,提供如“BLINKY_SIMPLE_EXAMPLE”等示例代码,用户可直接编译下载至板卡,快速实现RGB灯色彩转换。安装时,先下载并安装Keil软件,过程简单,按提示操作即可。随后安装PACK头文件,为编译做准备。最后,在软件中设置Select Software Packs,勾选3.00-plus版本,即可顺利编译,就可以进行下开测试了。
在进行编译前要先安装好PACK。
下图是安装好的界面。

程序代码编写完成后,仅通过USB线(MICRO-USB)连接到电脑,但KEIL MDK的调试器无法识别到MCU的核心ID,导致无法进行烧录或调试。
正确操作步骤:
连接调试器USB线, 使用MICRO-USB线将开发板的调试/烧录接口与电脑连接。为板载的调试器芯片供电,并建立电脑与调试器之间的通信通道。
电脑可能识别到新的USB设备,但KEIL中仍无法看到MCU ID。这是因为调试器有了电,但MCU主芯片还没有电。
为MCU主系统供电,将12V直流电源适配器连接到开发板的DC供电接口。为板上的MCU(微控制器单元)、外设传感器、接口等主要电路供电。开发板上的电源指示灯应被点亮。此时,调试器才能通过SWD/JTAG接口与MCU建立通信。
在KEIL中识别与操作, 完成以上两步后,再次点击KEIL MDK中的LOAD或DEBUG按钮。
这个时候就可以看到调试器能够成功识别到MCU的ID,并开始擦除、编程、验证Flash存储器。

连接电脑,与供电

原理图

LED在开发板的位置

代码
/* 包含设备头文件 */
#include "device.h"
/**
* @brief 主函数
* @retval sint32 程序执行状态码
*/
sint32 main(void)
{
uint8_t u8_return_code; // 函数返回值
sint32 s32_counter; // 循环计数器
sint8 s8_ledIndex; // LED索引(当前代码未使用)
sint8 s8_onState; // LED状态标志:0=熄灭,1=点亮
/* 看门狗服务:复位看门狗计数器,防止系统复位 */
(void)PMU_serviceWatchdog();
/* 基于Config Wizard配置初始化硬件模块(如GPIO、PWM等) */
u8_return_code = Device_init();
/* 检查设备初始化是否成功 */
if (u8_return_code != ERR_LOG_SUCCESS)
{
/* 初始化失败处理:程序挂起 */
for (;;)
; // 死循环,系统停止运行
}
/*****************************************************************************
** 用户应用代码区域 **
****************************************************************************/
/* 定义PWM亮度参数 */
#define MAX_BRIGHTNESS 0x0FFF // 最大亮度值(12位PWM,4095)
#define MIN_BRIGHTNESS 0x0000 // 最小亮度值(熄灭)
#define MAX_COUNTER 100000 // 最大计数值(未使用)
/* 定义LED通道映射 */
#define RED_LED 0 // 红色LED连接到PWM通道0
#define BLUE_LED 1 // 蓝色LED连接到PWM通道1
#define GREEN_LED 2 // 绿色LED连接到PWM通道2
/* 定义时间参数:1秒的计时滴答数(基于主循环执行速度) */
#define ONE_SECOND_TICK 100000
/* 变量初始化 */
s32_counter = 0; // 循环计数器清零
s8_ledIndex = 0; // LED索引(未使用)
s8_onState = 0; // LED状态初始为熄灭
/*****************************************************************************
** 主程序无限循环 **
****************************************************************************/
for (;;)
{
/* 每次循环都服务看门狗,防止复位 */
(void)PMU_serviceWatchdog();
/* 循环计数器递增,并检查是否达到1秒延时 */
if (++s32_counter >= ONE_SECOND_TICK)
{
/* 根据当前LED状态执行切换操作 */
if (s8_onState == 0)
{
/* 点亮所有LED:设置PWM占空比为最大值 */
LDRV->PWM_DC_CFG0.reg = MAX_BRIGHTNESS; // 红色LED全亮
LDRV->PWM_DC_CFG1.reg = MAX_BRIGHTNESS; // 蓝色LED全亮
LDRV->PWM_DC_CFG2.reg = MAX_BRIGHTNESS; // 绿色LED全亮
s8_onState = 1; // 更新状态为"点亮"
}
else
{
/* 熄灭所有LED:设置PWM占空比为最小值 */
LDRV->PWM_DC_CFG0.reg = MIN_BRIGHTNESS; // 红色LED熄灭
LDRV->PWM_DC_CFG1.reg = MIN_BRIGHTNESS; // 蓝色LED熄灭
LDRV->PWM_DC_CFG2.reg = MIN_BRIGHTNESS; // 绿色LED熄灭
s8_onState = 0; // 更新状态为"熄灭"
}
s32_counter = 0; // 重置循环计数器,开始新的计时周期
}
}
}实际驱动效果

我要赚赏金
