使用CCS 6新建TMS320F28335工程
本例程以CCS 6.0下新建TMS320F28335工程为例。
用CCS 5,或者新建TI的其它处理器工程的区别也不大,参考本例即可。
所建工程能够实现完全的可移植,即任意拷贝到其他位置或其他电脑都能够直接编译运行,非常方便。
一、CCS 6.0安装
一路Next即可,在处理器支持页面,选择C2000系列即可。
根据需要选择。
仿真器也是根据实际选择,XDS100是TI官方的,便宜又实在。
跳出是否安装的页面,均选择安装。
安装完成后,CCS5的大学版的license能够继续用。
将其复制到C:\ti\ccsv6\ccs_base\DebugServer\license 即可。
打开软件后,会跳出页面要求设置Workspace路径,注意不能有中文。
Workspace路径也可以更改,如下即可:
二、新建TMS320F28335工程
1)在Workspace文件下,建立Project format for CCS6文件夹,这个文件夹就是我们接下来要建立的工程模板文件夹,需要移植或者拷贝程序,拷贝该文件夹即可。
在Project format for CCS6文件夹下,新建Project文件夹,该文件夹用于存放我们的工程文件。
拷贝以下四个文件夹到Project format for CCS6文件夹下。
DSP2833x_common
DSP2833x_headers
FPUfastRTS
IQmath
注:这四个文件夹可以从TI官方文件得到,需要安装 controlSUITE,TI官网可免费下载。
安装好controlSUITE之后,可以在
C:\ti\controlSUITE\libs\math\
C:\ti\controlSUITE\device_support\f2833x\v141\
中找到上面的四个文件夹。
(v141为版本号,实际不一定是这个版本,可能有更新)
2)新建工程
点击Project New CCS Project
以工程名Test为例。
注意路径Location选择到刚建立的Project文件夹。
点击Finish。
得到的工程如下:
3)从DSP2833x_headers\cmd中拷贝DSP2833x_Headers_nonBIOS.cmd到Project文件夹。
并在Project文件夹下,新建一个 src文件夹,该文件夹将用于存放我们需要用到的源文件。
现在Project文件夹中的文件如下:
4)设置头文件索引路径。
右键点击工程名,选择Properties
选择C2000 Compiler下的Include Options
添加
"${PROJECT_ROOT}\..\DSP2833x_common\include"
"${PROJECT_ROOT}\..\DSP2833x_headers\include"
"${PROJECT_ROOT}\..\FPUfastRTS\V100\include"
"${PROJECT_ROOT}\..\IQmath\v160\include"
添加后如下图所示:
注:V100和V160是版本号,大家根据自己得到的文件夹修正即可。
点击 OK。
我们可以看到Includes栏中,有我们所添加的索引路径,而且不是灰色的,说明添加正确。
5)配置仿真器
右键点击工程名,选择New Target Configuration File
输入名字,这边取为 xml。
点击Finish。
出现以下页面:
选择仿真器型号,这边选的是XDS100V3,器件型号选择28335,点击右侧的Save。
当所选为TI的仿真器,可以点击Test Connection,测试下仿真器是否成功连接。
到现在为止,工程列表如下:
6)添加源文件
这个和CCS 3.3差不多。
将我们需要的 .c文件、.asm文件,复制到src文件夹中。
(源文件用链接的方式导入也可以,但这边选择在src文件夹下拷贝源文件,是为了良好的可移植性考虑的,这样我们整个工程重要文件都在Project文件夹下。
)
源文件是根据自己的需要添加的,但是一般DSP2833x_common\source中的
DSP2833x_CodeStartBranch.asm
DSP2833x_DefaultIsr.c
DSP2833x_SysCtrl.c
DSP2833x_Gpio.c
以及DSP2833x_headers\source中的DSP2833x_GlobalVariableDefs.c 都是需要用到的。
如果用的ADC,则需添加:
DSP2833x_ADC_cal.asm
DSP2833x_usDelay.asm
DSP2833x_Adc.c
用到中断,需添加:
DSP2833x_PieCtrl.c
DSP2833x_PieVect.c
这边给出我添加的文件示例,如下图所示:
复制到src的文件会显示在工程列表中,如下:
7)如果程序里有三角函数或者开根号等运算,推荐用fastRTS库或者IQmath库来计算。
需要配置如下:
选择C2000 Linker下的File Search Path
在C2000 Linker->File Search Path右边的Include library file or command file中,添加 "rts2800_fpu32.lib"
"rts2800_fpu32_fast_supplement.lib"
在Add <dir> to library search parh中添加索引路径:
"${PROJECT_ROOT}\..\FPUfastRTS\V100\lib"
"${PROJECT_ROOT}\..\IQmath\v160\lib"
然后将最下面的 Disable automatic RTS selection 选中。
添加后如下图所示:
点击Build,在Link Order中,添加两个库文件,并将rts2800_fpu32_fast_supplement.lib 移动到前面,这样该库将被优先索引。
在main.c文件前面,需要添加头文件
#include "math.h"
#include "C28x_FPU_FastRTS.h"
这样,就能使用fastRTS库了。
如果需要用到IQmath库,思路类似,大家自己添加相应的库文件和cmd文件即可。
8)注:要打开我们建立的Test工程, 需要选择到Project文件夹,这是我们工程所在文件夹,上层目录的DSP2833x_common等4个文件夹是为了完全的可移植行准备的。
8)其他说明
cmd文件的选择则根据运行模式选择:
在线仿真模式:添加28335_RAM_lnk.cmd
Flash烧写模式:添加 F28335.cmd
在main.c文件开头,需要引用头文件:
#include "DSP28x_Project.h" //包含所有的外设头文件及宏定义 如果运行在烧写模式,即将程序烧进Flash里,程序里需要包含以下部分:
//重要函数需要在RAM里运行
#pragma CODE_SECTION(函数名1, "ramfuncs");
#pragma CODE_SECTION(函数名2, "ramfuncs");
……
#define RunInFlash //程序烧写标志
在InitPieVectTable(); 后面加入
#ifdef RunInFlash
MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);
#endif
若编译时若提示内存分配不足,则需根据提示在cmd文件中修改相应内存分配。
通过修改CMD文件能够将整个程序在上电时从Flash拷贝到RAM里运行,这样和在线仿真的运行工况可以说完全一致。
也就无需再写#pragma CODE_SECTION(函数名, "ramfuncs")了,这边就先不展开,大家可以自行百度,我以后有时间再写吧。
By felly77
2016.7.04。