LLC数字控制TMS320F28034 1-工程创建
1 概述
1.1 项目概述
该项目基于TMS320F28034数字信号控制器,旨在实现LLC谐振拓扑的数字化控制方案。通过该方案,可以提高系统效率、稳定性和响应速度,同时减少电磁干扰和功率损耗。项目将利用TMS320F28034的强大控制功能和灵活性,结合LLC拓扑的特点,实现优化的数字控制算法和保护机制。该项目将为LLC拓扑的应用提供一种高效、可靠的数字控制解决方案,推动其在电源领域的发展和应用。
1.2 TMS320F28034简介
TMS320F28034是德州仪器(Texas Instruments)推出的一款基于C2000系列的数字信号控制器。该控制器具有强大的数字信号处理能力和丰富的外设功能,适用于各种实时控制和数字信号处理应用。TMS320F28034采用高性能的C28x核心,集成了多个模拟到数字转换器(ADC)、PWM模块、通信接口等关键功能模块,以支持复杂控制算法和系统集成。该型号的控制器在工业控制、电源管理、电机驱动等领域具有广泛的应用,为工程师提供了强大的工具和平台,以实现高效、精确的控制和处理任务。
2 开发环境
2.1 软件工具
对于软件开发工具,通常使用TI官网提供的CCS软件。我目前使用的是CCS 10.30版本,可以在TI官网或其他软件下载网站上正常获取。其他常用工具还包括C2000Ware、controlSUITE、C2Prog和UniFlash。我经常使用的是C2Prog烧录工具,版本为1.7,在生产过程中用于批量烧录固件。
2.2 硬件工具
我使用的硬件工具是XDS100V3,虽然有许多第三方烧录工具可供选择,但没有必要花费大笔费用购买XDS510。
2.3 CCS安装
有许多安装教程可在网上找到,因此这里不做详细阐述。需要注意的一点是,在安装时如果不确定如何选择选配安装,可以直接选择全部安装。同时,建议将安装路径设置在非C盘下。
3 工程创建
3.1 工程文件包
(1)在workspace文件夹下新建一个文件夹CSS024D_F28034
(2)在文件夹下创建几个子文件夹,创建4个子文件夹APP、cmd、include、source,将标准库或者例程中获取到的.c、.h、.cmd分别拷贝到对应文件夹中
在APP文件夹中:
Cmd文件家中存放cmd文件,我们建好工程后可以移动进来:
将.h文件放置在inlcude文件夹中
将依赖的.C文件放置在source文件夹中
至此,工程所需的文件就齐全了。
3.2 工程建立
(1)打开CCS10,双击打开,并选择刚建文件夹的工作空间
(2)选择新建项目
即可创建出一个空的工程:
(3)Cmd文件配置
(4)工程文件整理及引用文件的路径整理
现将main.c和cmd文件移动到APP和cmd文件夹中:
(5)我们自己创建includes,将以下代码复制到inlucdes.h中
//inlucdes.h
#ifndef APP_INCLUDES_H_
#define APP_INCLUDES_H_
#include "DSP28x_Project.h"
#include "DSP2803x_DefaultISR.h"
#include "DSP2803x_Adc.h"
#include "CLAmath.h"
//------------------------------------------
void MemCopy(Uint16 *SourceAddr, Uint16* SourceEndAddr, Uint16* DestAddr);
#endif
//Main.c文件中
#include "includes.h"
/********************************************************
函数名称:main
函数功能:主程序
入口参数:
出口参数:
修 改:
********************************************************/
void main(void)
{
//
while(1)
{
;
}
}
(6)工程配置
按照图示进行设置:
点击apply and close
以下两个图 将工程中相关文件exclude from build
工程文件修改:
到此为止,工程建立成功,rebuile project,编译通过。
4 实现一个点亮LED程序
原理图中所示:
实现简单代码:
宏定义引脚GPIO寄存器
#define LEDRGPIO GPIO20
#define LEDRMUX GpioCtrlRegs.GPAMUX2.bit.LEDRGPIO
#define LEDRDIR GpioCtrlRegs.GPADIR.bit.LEDRGPIO
#define LEDRTOGGLE() GpioDataRegs.GPATOGGLE.bit.LEDRGPIO = 1
#define LEDRON() GpioDataRegs.GPASET.bit.LEDRGPIO =1
#define LEDRLOW() GpioDataRegs.GPACLEAR.bit.LEDRGPIO =1
#define LEDYGPIO GPIO21
#define LEDYMUX GpioCtrlRegs.GPAMUX2.bit.LEDYGPIO
#define LEDYDIR GpioCtrlRegs.GPADIR.bit.LEDYGPIO
#define LEDYTOGGLE() GpioDataRegs.GPATOGGLE.bit.LEDYGPIO = 1
#define LEDYON() GpioDataRegs.GPASET.bit.LEDYGPIO =1
#define LEDYLOW() GpioDataRegs.GPACLEAR.bit.LEDYGPIO =1
#define LEDGGPIO GPIO24
#define LEDGMUX GpioCtrlRegs.GPAMUX2.bit.LEDGGPIO
#define LEDGDIR GpioCtrlRegs.GPADIR.bit.LEDGGPIO
#define LEDGTOGGLE() GpioDataRegs.GPATOGGLE.bit.LEDGGPIO = 1
#define LEDGON() GpioDataRegs.GPASET.bit.LEDGGPIO =1
#define LEDGLOW() GpioDataRegs.GPACLEAR.bit.LEDGGPIO =1
实现三个灯点亮:
//Main.c文件中
#include "includes.h"
/********************************************************
* 函数名称:Init_system
* 功 能: 系统初始化
* 入口参数:
* 出口参数:
* 修 改:
********************************************************/
void Init_system(void)
{
InitSysCtrl();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EALLOW;
Flash_CPUScaleFactor = SCALE_FACTOR;
Flash_CallbackPtr=NULL;
EDIS;
MemCopy(&RamfuncsLoadStart,&RamfuncsLoadEnd, &RamfuncsRunStart);
InitFlash();
}
/********************************************************
* 函数名称:void Init_system_end(void)
* 功 能: 系统初始化结束
* 入口参数:
* 出口参数:
* 修 改:
********************************************************/
void Init_system_end(void)
{
EALLOW; // This is needed to write to EALLOW protected registers
PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block
EDIS; // This is needed to disable write to EALLOW protected registers
//================================================================================
EINT;
ERTM;
}
/********************************************************
函数名称:main
函数功能:主程序
入口参数:
出口参数:
修 改:
********************************************************/
void main(void)
{
Init_system();
GpioDataRegs.GPADAT.all = 0ul;
//GPIO初始化
EALLOW;
LEDRMUX = 0; //GPIO功能
LEDRDIR = 1; //GPIO输出型
LEDYMUX = 0; //GPIO功能
LEDYDIR = 1; //GPIO输出型
LEDGMUX = 0; //GPIO功能
LEDGDIR = 1; //GPIO输出型
EDIS;
LEDRLOW();
LEDYLOW();
LEDGLOW();
LEDRON();
LEDYON();
LEDGON();
Init_system_end();
//
while(1)
{
LEDRON();
LEDYON();
LEDGON();
}
}
5 TMS320F28034点亮LED总结
完整的开发环境及工程代码下:
在使用TMS320F28034控制器点亮LED时,通常需要以下步骤
- 引脚配置:确定将要连接LED的引脚以及引脚的工作模式(输入或输出)。
- 编程:使用适当的开发工具(如CCS)编写C语言程序,配置相应的引脚为输出模式,并设置适当的输出电平以点亮LED。
- 编译:将编写的程序进行编译,生成可在TMS320F28034控制器上运行的机器码。
- 烧录:使用烧录工具(如C2Prog)将编译后的程序烧录到TMS320F28034控制器中。
- 调试:连接硬件工具(如XDS100V3)进行调试,确保程序正常运行并LED能够点亮。
- 测试:在确认程序正常运行后,进行LED的功能测试,确保LED按预期亮起。
通过以上步骤,可以成功利用TMS320F28034控制器点亮LED,展示控制器的基本功能和操作能力。