目录
1、从哪下载CCS?
https://www.ti.com/tool/download/CCSTUDIO
安装要点:两种方式任选其一(在线包、离线包)、两个条件必不可少(非中文路径、防火墙&杀毒软件关闭)。
2、从哪下载官方例程?
https://www.ti.com/licreg/docs/swlicresults.tsp?countryName=China+%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29&eeq=Civil&Certify=YES&submitsubmit=Submit
3、如何快速拥有一个自己的project?
新建一个project,然后将例程中CMD,INCLUDE,SRC文件夹复制过来即可。
具体如下:
CCS软件安装说明和基本使用
- DSP调试软件的基本使用
通常采用CCS来对TMS320F28335进行程序编写调试,本节简要介绍工程导入和程序固化的方法。
- DSP的工程导入
建立CCS的工程有新建工程和导入工程两种方式,通常在刚开始学习时可以通过在官方例程的基础上进行修改来缩短学习研发时间。
Ti 公司官方提供Controlsuite及其自带的官方例程库
购买的成品DSP控制板会有配套的例程(会包含输出口定义的一些设定,利用效率更高)
将已有工程导入到CCS工作目录下,具体流程如下:
1. 打开CCS
2. 依次点击菜单栏“Project”>“Import CCS Project”
3. 点击“Browse”选择程序所在目录
选定目录之后可以看到,CCS已经列出了所选目录下扫描到的程序。这里要注意,勾选“Copy projects into workspace”可将程序拷贝到CCS目录下而不影响源文件,这样做的好处就是后续的更改不会导致原文件的改变。
4. 点击“Finish”将文件添加到CCS。
5. 检查文件完整性并打开主函数。
主函数为void main() {}函数所在文件,名称通常为main.c,部分例程中主函数文件名与工程文件名一致。
工程中通常包括以下文件
•CMD文件:
1.F28335.CMD是Flash版本的程序需要添加的cmd文件,主要是分配编译的代码段和数据段的地址。 2.28335_RAM_lnk.cmd 是RAM版本的程序需要添加的cmd文件,作用同上。 以上两个根据具体的工程来添加 3. DSP2833x_Headers _nonBIOS. cmd 分配硬件寄存器映射地址的段。 •DEBUG文件: 编译和调试过程中产生的文件,可忽略 •INCLUDE文件及SRC文件: 28335官方头文件 28335官方库函数 •ccxml文件: 设置下载器种类(不同下载器支持的CCS版本不同,目前实验室是CCS6配套XDS100V3) •Example_2833xEPWM……:主函数 |
建立工程
- File > New >Project
- 输入工程名称,选择路径,设置编译器版本(默认)
- 确定
- 复制CMD,INCLUDE,SRC文件夹到自己的工程文件夹下新建工程:
- File > New > NewTargetConfiguration.ccxml ;设置名称和路径;选择Connection和Device; Save!!!
注意在Connection中选择实际使用的仿真器。
设定后,可以通过仿真器与正常供电的DSP芯片链接,点击“test connection”进行连接测试。
- 在workspace中右击工程选择Properties
- 选择Build > C2000 Compiler > include options
- 添加INCLUDE文件夹路径或其他
- 在线程序烧写
目的:调试程序,排除运行故障,检查中间变量的输出是否符合需求
局限性:在线调试程序,电脑与DSP间无隔离,带主电路运行时有一定的风险
1. 编译工程文件。右击工程,选择“Build Project”或者“Rebuild Project”
等待编译完成。此处可勾选“Always run in background”,这样下次就会直接在后台运行而没有弹窗。
编译通过的话“Console”会显示“****BuildFinished****”。
2. 下载程序到DSP。点击小瓢虫图标“Debug(工程名)”,CCS会自动跳转到Debug界面并进行程序下载。
至此程序下载完成。
- DSP的程序固化
程序在RAM中调试完成后,一般就需要将其固化到FLASH中,使其在不连接仿真器的情况下依然能够独立运行。程序固化到FLASH中后运行速度会比RAM中慢,为了解决这个问题,就需要运行时将FLASH中的程序拷贝到RAM中运行,下面以TMS320F28335为例介绍具体的方法。
首先,需要将适合RAM运行环境的CMD文件移出工程,替换成文件夹内的F28335.cmd,然后将文件夹内的另一个文件DSP2833x_CodeStartBranch.asm添加到工程中,如果工程内本来就有这个文件,就不用再添加了。
接下来,需要在工程中添加如下的代码:
在DSP28_SysCtrl.c文件中添加如下代码,如果工程里已有InitFlash函数,则不用再添加,检查下函数内容就行:
#pragma CODE_SECTION(InitFlash, "RamFuncs"); void InitFlash(void) { EALLOW; //Enable Flash Pipeline mode to improve performance //of code executed from Flash. FlashRegs.FOPT.bit.ENPIPE = 1; // CAUTION //Minimum waitstates required for the flash operating //at a given CPU rate must be characterized by TI. //Refer to the datasheet for the latest information. //Set the Paged Waitstate for the Flash FlashRegs.FBANKWAIT.bit.PAGEWAIT = 5; //Set the Random Waitstate for the Flash FlashRegs.FBANKWAIT.bit.RANDWAIT = 5; //Set the Waitstate for the OTP FlashRegs.FOTPWAIT.bit.OTPWAIT = 8; // CAUTION //ONLY THE DEFAULT VALUE FOR THESE 2 REGISTERS SHOULD BE USED FlashRegs.FSTDBYWAIT.bit.STDBYWAIT = 0x01FF; FlashRegs.FACTIVEWAIT.bit.ACTIVEWAIT = 0x01FF; EDIS; //Force a pipeline flush to ensure that the write to //the last register configured occurs before returning. asm(" RPT #7 || NOP"); } |
在main函数所在的源文件中,添加下面所示的代码,位置可以放在main函数之前。
extern Uint16 RamFuncs_loadstart; extern Uint16 RamFuncs_loadend; extern Uint16 RamFuncs_runstart; |
在main函数中添加如下的代码:
/*初始化系统*/ InitSysCtrl(); memcpy(&RamFuncs_runstart,&RamFuncs_loadstart,&RamFuncs_loadend - &RamFuncs_loadstart); asm(" RPT #8 || NOP"); /*FLASH 初始化 */ InitFlash(); /*关中断*/ DINT; IER = 0x0000; IFR = 0x0000; |
在头文件DSP2833x_GlobalPrototypes.h中添加FLASH初始化函数的声明,如果已经声明,就不用再添加:
extern void InitFlash(void); |
完成上面的修改后,重新编译工程,没有问题的话就生成了适合FLASH烧写的.out文件,而且运行时,会把FLASH里面的程序拷贝到RAM中运行。
点击小瓢虫图标“Debug(工程名)”,CCS会自动跳转到Debug界面并进行程序下载。看到“Erase/Program/Verify Operation succeeded”说明烧写成功。然后断开CCS和DSP的连接,拔掉仿真器,重新给DSP上电,DSP中的程序就可以脱离仿真器独立运行了。