TMS320F280039系列文章之第一章 新建工程
本文章采用CCS进行DSP(TMS320F280039)系列学习。从零开始,重新学习并记录知识点,同时也是为了方便自身回顾
·
TMS320F280039系列文章目录
第一章 新建工程
文章目录
前言
本文章采用CCS12.1.0(CCS软件版本)及C2000Ware_4_01(SDK-设计资源)进行TMS320F280039(DSP芯片)系列学习
- 萌新入坑,如有不对的地方请大佬多多指教,谢谢!->欢迎评论区留言
- 对于萌新来说,学习无非就是多看博文,但是…0.0大佬们的思维大多都有些跳跃,真的很难理解(当然大佬们估计都是为了记录或者提醒自己的工作及学习例程),所以想通过慢慢学习,把每一步都解释出来(保姆版)
第一章 新建工程
1.工程准备及设置
1.1 准备环境(下载CCS软件及相关SDK)
- 详情请查看:TMS320F280049系列文章之第一章 获取相关组件(CCS软件及C2000Ware SDK)) (建议跟着链接一步一步自己下载相关软件/支持包)
- 我使用的SDK为:C2000Ware-MotorControl-SDK-4-01-00
1.2 打开CCS软件:选择工作空间

- 选择工作空间后打开相关文件,如图

1.3 新建工程文件(空文件)
- 第一步:选择新建CCS项目

- 第二步:配置相关设置

- 第三步:确认ProjectName_Demo(空文件夹)新建完成,文件目录在(1.1中打开CCS工程时选择的那个路径,因为1.2中选择的是默认路径)


2.工程所需文件移植(从SDK文件向工程文件移植)
- 第一步:移植driverlib文件(DSK文件中)C:\ti\c2000\C2000Ware_MotorControl_SDK_4_01_00_00\c2000ware\driverlib\f28003x\driverlib

- 第一步移植结果确认(工程文件中)

- 第二步:移植common和headers文件(DSK文件中)

- 第二步移植结果确认(工程文件中)

- 第三步:工程文件中新建library文件,并从SDK文件中选择需要移植的lib文件
根据自己的需要从DSK安装目录下的c2000ware\libraries中选择
C:\ti\c2000\C2000Ware_MotorControl_SDK_4_01_00_00\c2000ware\libraries

我后续需要用到IQmath,所以我是从
C:\ti\c2000\C2000Ware_MotorControl_SDK_4_01_00_00\c2000ware\libraries\math\IQmath\c28\lib中选择

- 第三步移植结果确认(工程文件中)

- 第四步:编译一下工程,准备删除部分文件(工程文件中)
在工程文件目录中删除以下文件(我这里是觉得用CCS中的工程展示比较方便)
删除common文件中cmd文件下除了红圈的cmd文件
删除common文件中的targetConfigs文件

- 第四步删除结果确认(工程文件中)

3.工程设置及部分文件屏蔽
3.1 工程设置
- 依次添加路径索引(采用工作空间(相对)路径,也可Browse设置绝对路径)
E:\ProjectName_TMS320F280039_Demo\ProjectName_Demo\common\include
E:\ProjectName_TMS320F280039_Demo\ProjectName_Demo\headers\include
E:\ProjectName_TMS320F280039_Demo\ProjectName_Demo\driverlib

- 路径索引确认

3.2 文件屏蔽
- 第一步:屏蔽重复的cmd及lib文件
屏蔽ram_Ink.cmd文件:正常项目都需要板子重新上电仍可以运行程序,所以需要将程序保存到ROM中,故使用flash_Ink.cmd
屏蔽eabi.lib文件:新建工程时采用的是COFF格式,故使用coff.lib,屏蔽eabi.lib(ELF输出格式时才采用这个lib)

- 第二步:屏蔽输出格式为ELF(包含driverlib.lib)的文件
E:\ProjectName_TMS320F280039_Demo\ProjectName_Demo\driverlib\ccs

4.工程编译及仿真运行测试(新建工程完成,但是达不到应用要求)
4.1 工程编译正确

4.2 工程仿真运行正常

5.main函数修改及工程设置
5.1 main函数修改
- main函数中的App_xxx只是举个例子,替换成自己的相关初始化函数及逻辑函数即可
//#############################################################################
//
// FILE: main.c
//
// TITLE: ProjectName Demo Example
//
//! \addtogroup bitfield_example_list
//! <h1> ProjectName Demo </h1>
//!
//! This example configures Temple Demo for other Project.
//!
//! \b External \b Connections \n
//! - None.
//!
//! \b Watch \b Variables \n
//! - None.
//!
//
//#############################################################################
//
// $Copyright:
// Copyright (C) 2022 Texas Instruments Incorporated - http://www.ti.com/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
//
// Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//
// Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the
// distribution.
//
// Neither the name of Texas Instruments Incorporated nor the names of
// its contributors may be used to endorse or promote products derived
// from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// $
//#############################################################################
//
// Included Files
//
#include "F28x_project.h"
#include "device.h"
//
// Function
//
void AppGpioInit(void);
void AppInit(void);
void AppDeal(void);
/**
* main.c
*/
int main(void)
{
//
// Initialize device clock and peripherals.
//
InitSysCtrl();
//
// Initialize GPIO and configure the GPIO pin as a Output or Input mode.
//
InitGpio();
AppGpioInit(); // AppGpioInit
//
// Disable CPU interrupts.
//
DINT;
//
// Initialize the PIE control registers to their default state.
// The default state is all PIE interrupts disabled and flags are cleared.
//
InitPieCtrl();
//
// Disable CPU interrupts and clear all CPU interrupt flags.
//
IER = 0x0000;
IFR = 0x0000;
//
// Initialize the PIE vector table with pointers to the shell Interrupt Service Routines (ISR).
//
InitPieVectTable();
AppInit(); // AppInit
//
// Enable global Interrupts (INTM) and higher priority real-time debug events (DBGM).
//
EINT;
ERTM;
//
// IDLE loop. Just sit and loop forever (optional).
//
while(1)
{
AppDeal();
}
}
void AppGpioInit(void)
{
// AppGpioInit
}
void AppInit(void)
{
// AppInit
}
void AppDeal(void)
{
// AppDeal
}
//
// End of File
//
5.2 工程设置(修改main函数后编译正确,但是仿真运行时会异常,需要进行以下修改)
- 第一步:增加_FLASH宏定义

- 第二步:修改cmd文件

- 第三步:修改main函数中的InitSysCtrl函数(初始化设备时钟和外围设备)

// 我这里采用的是30M的外部晶振,因为280039的时钟需要配置为120MHz,故进行如下设置
// PLLSYSCLK = (30MHz) * (IMULT_32) /(REFDIV_2) * (ODIV_4) * (PLLCLK_BY_1) = 120MHz
InitSysPll(XTAL_OSC_SE, IMULT_32, REFDIV_2, ODIV_4, PLLCLK_BY_1, SYSCTL_DCC_BASE0);
5.3 修改main函数后仿真正常运行(已经具备基本工程应用水准,将App_xxx改为自己的初始化及逻辑程序即可)

6.关于工程设置优化
6.1 堆栈设置为0x300(仅针对TMS320F280039)
- 280049及其他芯片貌似还是0x200,具体不明,忘记在哪个大佬的博文中看到过(280049移植到280039程序?)

6.2 打开生成Hex文件设置
- 第一步:打开生成Hex的设置

- 第二步:修改相关设置


- 生成的Hex文件确认


6.3 生成Bin文件设置

在工程设置Build->Steps->Post-build steps中添加以下代码
"${CCE_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin" "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" "${CG_TOOL_ROOT}/bin/ofd2000" "${CG_TOOL_ROOT}/bin/hex2000" "${CCE_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin" & "${CG_TOOL_HEX}" -i "${BuildArtifactFileName}" -o "${BuildArtifactFileBaseName}.hex" -order MS -romwidth 32 & "${CG_TOOL_HEX}" --ti_txt "${BuildArtifactFileName}" -o "${BuildArtifactFileBaseName}.txt" -order MS -romwidth 32
- 生成的Bin文件确认


7.新建工程展示
- 下载后直接从CCS找到相关目录打开即可(比如我的目录是E:\ProjectName_TMS320F280039_Demo):TMS320F280039新建工程
总结
本章为TMS320F280039学习系列文章 第一章:新建工程
更多推荐



所有评论(0)