F28379D新建工程

 TMS320F28379D是德州仪器公司C2000系列中双核系列高性能微处理器。本文简述如何为CPU1与CPU2分别新建一个工程。随着学习的深入,本文将不断更新优化。

开发环境

 本文中开发环境如下:

  • 操作系统:Windows 10 Home x64
  • Code Composer Studio : 7.1.0.00016
  • controlSUITE : 3.4.7
  • 开发板:LAUNCHXL-F28379D

CPU1程序

 新建工程的步骤与新建一个C2000工程类似,这里将介绍主要步骤。

新建一个空项目

 如图所示,在CCS中新建一个F28379D空项目。

增加头文件

 在工程中新建include文件夹,将controlSuite中下列文件复制到该文件夹下:

  • controlSUITE\device_support\F2837xD\v210\F2837xD_headers\include
  • controlSUITE\device_support\F2837xD\v210\F2837xD_common\include

增加源文件

 在工程中新建source文件夹,将controlSuite中下列文件复制到该文件夹下:

  • controlSUITE\device_support\F2837xD\v210\F2837xD_common\source

增加位域结构体支持源文件

 将如下文件复制到工程根目录下:

  • controlSUITE\device_support\F2837xD\v210\F2837xD_headers\source\F2837xD_GlobalVariableDefs.c
  • controlSUITE\device_support\F2837xD\v210\F2837xD_headers\cmd\F2837xD_Headers_nonBIOS_cpu1.cmd

设置RAM_lnk文件

 在学习过程中建议控制程序在RAM中运行,有助于提高烧写速率并保护器件。将如下文件复制到工程根目录下,同时exclude原有2837x_FLASH_lnk_cpu1.cmd文件:

  • controlSUITE\device_support\F2837xD\v210\F2837xD_common\cmd\2837xD_RAM_lnk_cpu1.cmd

设置包含选项

 将include文件夹添加到包含路径。

设置Predefined Symbols

 TI的库文件中使用宏定义形式设置一些初始化参数以及CPU指定,需要增加如下预定义:

使用新工程进行LED闪烁实验

 新建项目中main为空函数。为了检验创建的工程是否可以正常使用,这里进行简单的测试。
 在这里,将main.c文件内容替换为如下内容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "F28x_Project.h"
int main_loop = 0;
void main(void)
{
InitSysCtrl();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EALLOW;
GpioCtrlRegs.GPBGMUX1.bit.GPIO34 = 0;
GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0;
GpioCtrlRegs.GPBDIR.bit.GPIO34 = 1;
GpioCtrlRegs.GPBCSEL1.bit.GPIO34 = 0; //CPU1 selected
GpioCtrlRegs.GPAGMUX2.bit.GPIO31 = 0;
GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO31 = 1;
GpioCtrlRegs.GPACSEL4.bit.GPIO31 = 2; //CPU2 selected
EDIS;
EINT;
ERTM;
for(;;)
{
GpioDataRegs.GPBTOGGLE.bit.GPIO34 = 1;
DELAY_US(500000);
main_loop++;
}
}

 编译程序,选择CPU1进行烧写,运行程序。可以看到板子上GPIO34控制的RED LED开始闪烁,闪烁频率约为1Hz

CPU2程序

 将CPU1的程序复制,在此基础上改为CPU2程序。

更新RAM_lnk文件

 删除原有2837xD_RAM_lnk_cpu1.cmd文件,更换为:

  • controlSUITE\device_support\F2837xD\v210\F2837xD_common\cmd\2837xD_RAM_lnk_cpu2.cmd

更新F2837xD_Headers_nonBIOS_cpu2文件

 删除F2837xD_Headers_nonBIOS_cpu1.cmd,将如下文件复制到工程根目录下:

  • controlSUITE\device_support\F2837xD\v210\F2837xD_headers\cmd\F2837xD_Headers_nonBIOS_cpu2.cmd

更新Predefined Symbols

 将Predefined Symbols中CPU1改为CPU2

删除部分不支持源文件

 此时编译程序,会发现source中部分源文件报错。这是因为部分外设仅支持CPU1控制需要删除的源文件包括:

  • F2837xD_ECap.c
  • F2837xD_EPwm.c
  • F2837xD_EQep.c
  • F2837xD_Spi.c
  • F2837xD_TempSensorConv.c
  • F2837xD_Upp.c

使用新工程进行LED闪烁实验

 在这里,将main.c文件内容替换为如下内容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include "F28x_Project.h"
int main_loop = 0;
void main(void)
{
InitSysCtrl();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EINT;
ERTM;
for(;;)
{
GpioDataRegs.GPATOGGLE.bit.GPIO31 = 1;
DELAY_US(50000);
main_loop++;
}
}

编译程序,选择CPU2进行烧写,运行程序。可以看到板子上GPIO31控制的BLUE LED开始闪烁,闪烁频率约为10Hz

注意F28379D烧写程序必须按照CPU1先进行,CPU2后进行的顺序。

特别鸣谢JOJO同学在本实验中的大力帮助。😄

文章目录
  1. 1. 开发环境
  2. 2. CPU1程序
    1. 2.1. 新建一个空项目
    2. 2.2. 增加头文件
    3. 2.3. 增加源文件
    4. 2.4. 增加位域结构体支持源文件
    5. 2.5. 设置RAM_lnk文件
    6. 2.6. 设置包含选项
    7. 2.7. 设置Predefined Symbols
    8. 2.8. 使用新工程进行LED闪烁实验
  3. 3. CPU2程序
    1. 3.1. 更新RAM_lnk文件
    2. 3.2. 更新F2837xD_Headers_nonBIOS_cpu2文件
    3. 3.3. 更新Predefined Symbols
    4. 3.4. 删除部分不支持源文件
    5. 3.5. 使用新工程进行LED闪烁实验
|