Bootstrap

零基础DSP实战TMS320F28035:第一节,开发环境与新建工程

TMS320F28035第一节,开发环境与新建工程

第一节,开发环境与新建工程模板


一、DSP TMS320F28035介绍

TMS320F28035是TI C2000系列DSP之一,它具有很高的性价比和出色的DSP控制性能。单电源供电,主频适中(60MHZ),附带一个CLA浮点运算核。同样具有增强型eCAN、SPI,SCI等通信接口,增强型eQEP正交编码接口、增强型ePWM接口,eCAP接口等。TMS320F28035封装有三种,分别是QFN56/QFP64/QFP80,芯片内存空间flash有128k、RAM空间10k,大家常见的开发板为80引脚封装的开发板。
国产器件对应DSP厂家的有湖南进芯电子、中科昊芯、毂梁微等。

二、开发工具

1.软件工具

软件开发工具一般使用TI官网的CCS软件,我当前使用的是CCS10.30版本,去官网或者一些软件下载网站基本都可以正常获取,其他的还包括C2000Ware、conrtolSUITE、C2Prog、uniflash,我一般常用的是C2Prog烧录工具,版本1.7版本,在生产过程中量产烧录固件使用。

2.硬件工具

硬件工具我用的是XDS100V3,有很多第三方烧录工具选择,没有必要花大价钱使用XDS510。

三、环境配置

1.CCS安装

网上有很多中安装教程这里就不详细阐述了,需要说明的一点是,在安装时若进行选配安装时不知如何选择,就直接全部选取安装即可,安装路径建议不要放在C盘下。

2.工程创建

1、获取一份例程,并将其中的工程依赖的.c、.h、.cmd配置文件拷贝下来。
2、新建文件夹DSP28035Project,并在文件夹中创建4个子文件夹APP、cmd、include、source,将第一步获取到的.c、.h、.cmd分别拷贝到对应文件夹中,各文件夹下文件实例如下:

为了后期使用CLA运算库我将对应的数学库一并复制到工程中,后边我们自己开发的应用文件都放在APP文件夹中即可
在这里插入图片描述

其中也包含了CLA的cmd配置文件在这里插入图片描述
将.h文件放置在inlcude中
在这里插入图片描述将依赖的.c文件放在source中在这里插入图片描述
至此,工程所需的文件就齐全了。

3.CCS创建项目

1、打开CCS10,双击打开,并选择一个工作空间
在这里插入图片描述
在这里插入图片描述2、新建工程,创建一个新的空工程,芯片选择等配置如图所示,将工程取名为DSP28035demo,根据各自习惯取名。

在这里插入图片描述3、创建成功后删除28035_RAM_lnk.c和main,将之前创建的4个子文件夹复制到建立的项目路径下
在这里插入图片描述4、在CCS窗口下可以看到4个文件夹,其中主程序main和includes是我们自己创建的,将以下代码复制到inlucdes.h中
inlucdes.h


#ifndef APP_INCLUDES_H_
#define APP_INCLUDES_H_


#include "DSP28x_Project.h"
#include "DSP2803x_DefaultISR.h"
#include "DSP2803x_Cla_defines.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)
	{
	   ;
	}
}

5、工程配置
按照图示进行工程配置
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述点击apply and close

以下两个图 将工程中相关文件exclude from build
在这里插入图片描述
在这里插入图片描述

到此为止,工程建立成功,rebuile project,编译通过。
在这里插入图片描述

四、点亮一个灯

1、将指示灯引脚在includes.h进行宏定义

代码如下(示例):

//D400 低电平亮;(也是PWM7B的引脚)
#define D400GPIO        GPIO41
#define D400MUX         GpioCtrlRegs.GPBMUX1.bit.D400GPIO
#define D400DIR         GpioCtrlRegs.GPBDIR.bit.D400GPIO
#define D400TOGGLE()    GpioDataRegs.GPBTOGGLE.bit.D400GPIO = 1
#define D400ON()        GpioDataRegs.GPBCLEAR.bit.D400GPIO =1
#define D400LOW()       GpioDataRegs.GPBSET.bit.D400GPIO =1

//D401 低电平亮;
#define D401GPIO        GPIO34
#define D401MUX         GpioCtrlRegs.GPBMUX1.bit.D401GPIO
#define D401DIR         GpioCtrlRegs.GPBDIR.bit.D401GPIO
#define D401TOGGLE()    GpioDataRegs.GPBTOGGLE.bit.D401GPIO = 1
#define D401ON()        GpioDataRegs.GPBCLEAR.bit.D401GPIO =1
#define D401LOW()       GpioDataRegs.GPBSET.bit.D401GPIO =1

//D402 低电平亮;
#define D402GPIO        GPIO43
#define D402MUX         GpioCtrlRegs.GPBMUX1.bit.D402GPIO
#define D402DIR         GpioCtrlRegs.GPBDIR.bit.D402GPIO
#define D402TOGGLE()    GpioDataRegs.GPBTOGGLE.bit.D402GPIO = 1
#define D402ON()        GpioDataRegs.GPBCLEAR.bit.D402GPIO =1
#define D402LOW()       GpioDataRegs.GPBSET.bit.D402GPIO =1

在主程序main中实现点亮指示灯和灯闪烁功能

代码如下(示例):



#include "includes.h"

/********************************************************
函数名称:main
函数功能:主程序
入口参数:
出口参数:
修    改:
********************************************************/

static unsigned long delaycnt  = 0;

void main(void)
{
    InitSysCtrl();

    DINT;
    InitPieCtrl();
    IER = 0x0000;
    IFR = 0x0000;
    InitPieVectTable();
    // Copy time critical code and Flash setup code to RAM
    // The  RamfuncsLoadStart, RamfuncsLoadSize, and RamfuncsRunStart
    // symbols are created by the linker. Refer to the F28035v1.cmd file.
    //实现在RAM中运行代码的搬运,例如使用官方的DELAY_US
    MemCopy(&RamfuncsLoadStart,&RamfuncsLoadEnd, &RamfuncsRunStart);

    //memcpy(&Cla1funcsRunStart, &Cla1funcsLoadStart, (Uint32)&RamfuncsLoadSize);
    InitFlash();

    /*灯初始化*****************************************************/
    EALLOW;
    //3个普通LED
    D400MUX = 0;//GPIO功能
    D400DIR = 1;//输出
    D401MUX = 0;
    D401DIR = 1;
    D402MUX = 0;
    D402DIR = 1;
    EDIS;

    D400ON();
    D401ON();
    D402ON();

    /************************************************************/

    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;

//
	while(1)
	{
	    //闪烁灯
/*	    D400ON();
	    D401ON();
	    D402ON();
	    for(delaycnt = 0;delaycnt<1000000;delaycnt++)
	    {
	        ;
	    }
	    D400LOW();
	    D401LOW();
	    D402LOW();
        for(delaycnt = 0;delaycnt<1000000;delaycnt++)
        {
            ;
        }
*/
	    //另外一种闪烁灯
        D400TOGGLE();
        D401TOGGLE();
        D402TOGGLE();
        for(delaycnt = 0;delaycnt<1000000;delaycnt++)
        {
            ;
        }
	}
}

3、编译完成build project,连接XDS100V3调试器与目标板子,可在此处进行调试器连接验证,点击verify
在这里插入图片描述在这里插入图片描述4、关闭验证窗口,点击“七星瓢虫图标”(调试按钮)进行烧录,完成后关闭调试功能,,点击板子的RST按键或者重新上电,程序自动跑起来,可以观察到3个指示灯进行闪烁。

五、工程移植

1、新建文件夹workspace_v10_(切记不要使用中文路径),将刚完成的工程文件夹,或者附件的工程复制到workspace_v10_文件夹下
在这里插入图片描述

2、重新打开CCS10.3软件,选择刚创建的工作空间,点击launch。
在这里插入图片描述
选择导入工程project->Import CCS project,选择刚复制进来的文件夹,并点击finish

在这里插入图片描述在这里插入图片描述完成以上操作默认点击下图中的finish
在这里插入图片描述
3、rebuild工程,烧录测试,结果正常,至此工程建立与移植成功

总结

1、以上内容适合有一定CCS使用基础的同学,或者参照CCS使用文档进行操作;
2、工程中具备FLASH烧录配置,计算库,cla库等内容,后期制作时,围绕相关内容展开介绍

;