This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Code Composer Studio
我正在开始使用 TMS320F2808对处理器板进行编程。
我使用的是 Code Composer Studio 8 和仿真器 XDS200。 硬件与 CCS 的通信似乎正常。
我想从 从 http://www.ti.com/tool/SPRC191下载的示例开始
我想根据相关文档 "DSP280x_HeaderFiles_QuickStart_Readme.pdf"进行操作
我位于文档的第6页、我尝试执行步骤 A。 我想从文件菜单执行加载 GEL 命令。
该命令在“文件”菜单中不存在。 我执行步骤 B 和 C 打开文件。 我想继续执行步骤 D
我找不到包含命令 Load_and_build_Project 的下拉菜单。
由于 Code Composer Studio 的运行方式与描述的不符、我完全不能开始使用。
请告诉我文档 "DSP280x_HeaderFiles_QuickStart_Readme.pdf"中的错误是什么、或者我犯了什么错误
请告诉我如何单击"分步运行"集合中的示例、例如 GPIO 引脚振荡的 GPIO 程序?
我的电子邮件地址如下
您所参考的文档是为 CCSv3.x 编写的 与3.x 相比、您使用的 CCS 版本(v8)有很大差异 不再支持 CCS3.x。 作为我们产品系列中相对较旧的器件、F2808在 C2000ware 上不受支持。 您有两个选项:
1.迁移到较新的器件、以便您可以在 C2000ware 中获得无缝支持的优势。 这意味着、您可以使用 C2000ware 中提供的示例快速上手。
2.您仍然可以运行 DSP 头文件中提供的示例。 但是,您不能使用自述文件中概述的过程。 必须使用 Project->Import Legacy CCS3.3项目选项。 这允许您从 CCS3.x 项目导入.PJT 文件。
亲爱的朋友,哈雷什先生,
您建议我在 CCS 8中使用命令 Project => Import Legcy CCSv3.3 Projects。
导入.pjt"文件并单击"下一步=>完成"后、
我收到以下错误消息
迁移时遇到了可能需要您注意的问题
项目。 有关详细信息、请参阅每个项目根目录中的'project.log'文件。
日志文件包含(已检查! 请不要使用无法帮助我的言语):
!配置:'com.ti.ccstudio.buildDefinitions.c2000.Release.1114035985'[Thu Jan 24 17:47:11 CET 2019年]
!工具:'com.ti.ccstudio.buildDefinitions.C2000_18.1.exe.compilerRelease.1623379253'
!warning:unresolved option:com.ti.ccstudio.buildDefinitions.C2000_18.1.exe.compilerRelease.1623379253::!--symdebug:dwarf
Peter、
我不知道您尝试切换哪些 GPIO 引脚,但您尝试切换的 GPIO 引脚是否可以与 SPI 功能多路复用? (有关多路复用选项、请查看 SPRS230N 的表4-16)。
您是否在 C:\tidcs\c28\DSP280x\V160\DSP280x_examples\GPIO_toggle 目录中尝试过 example_280xGpioToggle。 这是一个经测试的代码、应该"按原样"工作。 否则、您可以使用附加的代码、这只是几行代码。
您使用的是什么硬件? 它是您自己的电路板吗?
TeamViewer 被我们的网络阻止;我无法使用它。
#include "DSP280x_Device.h" main () { asm (" EALLOW "); //禁用看门狗* SysCtrlRegs.WDCR = 0x006F; //配置 GPIO 引脚*/ GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0; GpioCtrlRegs.GPADIR.bit.GPIO0 = 1; //切换 GPIO 引脚*/ while (1) { GpioDataRegs.GPATOGGLE.BIO0 = 1; }
亲爱的朋友,哈雷什先生,
我尝试运行由您发送的代码。 有两个问题。
编译工程时、编译器找不到头文件。
我已经安装了从互联网下载的 SPRC191文件中的头文件。
安装程序根据正式文档创建了头文件结构
"DSP280x_HeaderFiles_QuickStart_Readme.pdf"、它们位于"C:\tidcs"目录中。
但是、Code Compose Studio 无法找到头文件。
我已将"DSP280x_Device.h"复制到工作空间中的项目目录中。
编译器无法找到"DSP280x_Device.h"中包含的其他头文件。
如果我将所有必需的头文件复制到我的项目目录中、编译器仍然是
无法编译工程、因为重要结构被定义为外部结构:
extern volatile struct SYS_CTRL_regs SysCtrlRegs;
extern volatile struct GPIO_CTRL_regs GpioCtrlRegs;
extern volatile 结构 gpio_data_regs GpioDataRegs;
我可以更正删除"extern "一词的错误、并且可以编译工程。
由于许多问题、我创建了我自己的单头文件"GPIO_example.h"
仅从所有头文件中提取有用的定义。 您可以在下面的末尾看到它
我用非标准的方法解决了这个问题。 请告诉我犯了什么错误
Code Composer Studio 无法找到头文件和编译器
说明未定义结构、我必须更正头文件中的错误。
第二个问题是我无法解决的真正问题。
我必须对您发送的代码进行更改、我替换了"DSP280x_Device.h"
"GPIO_example.h"创建的。
我可以构建项目、将其加载到 RAM 存储器中并运行它。
我发现在运行该程序后、处理器会跳转到 SPI 引导模式。
此行为完全不依赖于"main.c"文件中的程序代码。
通过示波器、我可以在 SPIA 接口的四个引脚上看到典型行为
与 SPI 引导模式完全对应的时钟、数据和控制信号。
我有一个专业的处理器板、它来自用于感应电机的频率转换器
具有用于仿真器的连接器。
我有一个完全禁止发布的电路板方案、很明显、所有启动模式都是如此
引脚具有上拉电阻器、从而产生111引导模式(引导至闪存)。
我无法理解处理器跳转到 SPI 引导模式的原因
无论我编写什么程序。
我认为你找不到这个问题的答案。
我要求您至少将我的头文件问题1的答案发送给我。
这是我自己的头文件代码
typedef unsigned int uint16;
typedef unsigned long uint32;
struct GPACTRL_bits{ // bits description
UINT16 QUALPRD0:8; // 7:0 四周期
uint16 QUALPRD1:8; // 15:8 四周期
uint16 QUALPRD2:8; // 23:16 四周期
uint16 QUALPRD3:8; // 31:24 四个周期
};
UNION GPACTRL_REG{
uint32 all;
结构 GPACTRL_BITS 位;
};
struct GPBCTRL_bits{ // bits description
UINT16 QUALPRD0:8; // 7:0 四周期
uint16 rsvd1:8; //保留15:8
uint16 rsvd2:16; // 31:16 保留
};
UNION GPBCTRL_REG{
uint32 all;
结构 GPBCTRL_BITS 位;
};
struct GPA1_bits{ // bits description
UINT16 GPIO0:2; // 1:0 GPIO0
UINT16 GPIO1:2; // 3:2 GPIO1
uint16 GPIO2:2; // 5:4 GPIO2
UINT16 GPIO3:2; // 7:6 GPIO3
UINT16 GPIO4:2; // 9:8 GPIO4
UINT16 GPIO5:2; // 11:10 GPIO5
UINT16 GPIO6:2; // 13:12 GPIO6
UINT16 GPIO7:2; // 15:14 GPIO7
UINT16 GPIO8:2; // 17:16 GPIO8
UINT16 GPIO9:2; // 19:18 GPIO9
UINT16 GPIO10:2; // 21:20 GPIO10
UINT16 GPIO11:2; // 23:22 GPIO11
UINT16 GPIO12:2; // 25:24 GPIO12
UINT16 GPIO13:2; // 27:26 GPIO13
UINT16 GPIO14:2; // 29:28 GPIO14
UINT16 GPIO15:2; // 31:30 GPIO15
};
struct GPA2_bits{ // bits description
UINT16 GPIO16:2; // 1:0 GPIO16
UINT16 GPIO17:2; // 3:2 GPIO17
UINT16 GPIO18:2; // 5:4 GPIO18
UINT16 GPIO19:2; // 7:6 GPIO19
UINT16 GPIO20:2; // 9:8 GPIO20
UINT16 GPIO21:2; // 11:10 GPIO21
UINT16 GPIO22:2; // 13:12 GPIO22
UINT16 GPIO23:2; // 15:14 GPIO23
UINT16 GPIO24:2; // 17:16 GPIO24
UINT16 GPIO25:2; // 19:18 GPIO25
UINT16 GPIO26:2; // 21:20 GPIO26
UINT16 GPIO27:2; // 23:22 GPIO27
UINT16 GPIO28:2; // 25:24 GPIO28
UINT16 GPIO29:2; // 27:26 GPIO29
UINT16 GPIO30:2; // 29:28 GPIO30
UINT16 GPIO31:2; // 31:30 GPIO31
};
struct GPB1_bits{ // bits description
UINT16 GPIO32:2; // 1:0 GPIO32
UINT16 GPIO33:2; // 3:2 GPIO33
UINT16 GPIO34:2; // 5:4 GPIO34
uint16 rsvd1:2; // 7:6 保留
uint16 rsvd2:8; //保留15:8
uint16 rsvd3:16; // 31:16 保留
};
struct gpb2_bits { // bits description
uint16 rsvd1:16; //保留15:0
uint16 rsvd2:16; // 31:16 保留
};
UNION GPA1_REG{
uint32 all;
struct GPA1_BITS ;
};
UNION GPA2_REG{
uint32 all;
struct GPA2_BITS 位;
};
UNION GPB1_REG{
uint32 all;
struct GPB1_bits 位;
};
UNION GPB2_REG{
uint32 all;
struct GPB2_bits 位;
};
struct GPADAT_Bits{ //位 描述
UINT16 GPIO0:1; // 0 GPIO0
UINT16 GPIO1:1; // 1 GPIO1
uint16 GPIO2:1; // 2 GPIO2
UINT16 GPIO3:1; // 3 GPIO3
UINT16 GPIO4:1; // 4 GPIO4
UINT16 GPIO5:1; // 5 GPIO5
UINT16 GPIO6:1; // 6 GPIO6
UINT16 GPIO7:1; // 7 GPIO7
UINT16 GPIO8:1; // 8 GPIO8
UINT16 GPIO9:1; // 9 GPIO9
UINT16 GPIO10:1; // 10 GPIO10
UINT16 GPIO11:1; // 11 GPIO11
UINT16 GPIO12:1; // 12 GPIO12
UINT16 GPIO13:1; // 13 GPIO13
UINT16 GPIO14:1; // 14 GPIO14
UINT16 GPIO15:1; // 15 GPIO15
UINT16 GPIO16:1; // 16 GPIO16
UINT16 GPIO17:1; // 17 GPIO17
UINT16 GPIO18:1; // 18 GPIO18
UINT16 GPIO19:1; // 19 GPIO19
UINT16 GPIO20:1; // 20 GPIO20
UINT16 GPIO21:1; // 21 GPIO21
UINT16 GPIO22:1; // 22 GPIO22
UINT16 GPIO23:1; // 23 GPIO23
UINT16 GPIO24:1; // 24 GPIO24
UINT16 GPIO25:1; // 25 GPIO25
UINT16 GPIO26:1; // 26 GPIO26
UINT16 GPIO27:1; // 27 GPIO27
UINT16 GPIO28:1; // 28 GPIO28
UINT16 GPIO29:1; // 29 GPIO29
UINT16 GPIO30:1; // 30 GPIO30
UINT16 GPIO31:1; // 31 GPIO31
};
struct GPBDAT_bits{ // bits description
UINT16 GPIO32:1; // 0 GPIO32
UINT16 GPIO33:1; // 1 GPIO33
UINT16 GPIO34:1; // 2 GPIO34
uint16 rsvd1:13; //保留15:3
uint16 rsvd2:16; // 31:16 保留
};
UNION GPADD_REG{
uint32 all;
struct GPADD_BITS 位;
};
UNION GPBDAT_REG{
uint32 all;
结构 GPBDAT_Bits 位;
};
struct GPBPUD_BITS{ //位 描述
UINT16 GPIO32:1; // 0 GPIO32
UINT16 GPIO33:1; // 1 GPIO33
UINT16 GPIO34:1; // 2 GPIO34
UINT16 GPIO35:1; // 3 GPIO35
uint16 rsvd1:12; //保留15:4
uint16 rsvd2:16; // 31:16 保留
};
UNION GPBPUD_REG{
uint32 all;
结构 GPBPUD_BITS 位;
};
struct gpioXINT_bits{ // bits description
UINT16 GPIOSEL:5; // 4:0 选择 GPIO 中断输入源
uint16 rsvd1:11; //保留15:5
};
UNION GPIOXINT_REG{
uint16 全部;
结构 GPIOXINT_BITS 位;
};
结构 GPIO_CTRL_regs{
UNION GPACTRL_REG GPACTRL; // GPIO A 控制寄存器(GPIO0至31)
UNION GPA1_REG GPAQSEL1; // GPIO A 限定器选择1寄存器(GPIO0至15)
UNION GPA2_REG GPAQSEL2; // GPIO A 限定器选择2寄存器(GPIO16至31)
UNION GPA1_REG GPAMUX1; // GPIO A Mux 1寄存器(GPIO0至15)
UNION GPA2_REG GPAMUX2; // GPIO A Mux 2寄存器(GPIO16至31)
UNION GPADD_REG GPADIR; // GPIO A 方向寄存器(GPIO0至31)
UNION GPADD_REG GPAPUD; // GPIO A 上拉禁用寄存器(GPIO0至31)
uint32 rsvd1;
UNION GPBCTRL_REG GPBCTRL; // GPIO B 控制寄存器(GPIO32至63)
UNION GPB1_REG GPBQSEL1; // GPIO B 限定器选择1寄存器(GPIO32至47)
UNION GPB2_REG GPBQSEL2; // GPIO B 限定器选择2寄存器(GPIO48至63)
UNION GPB1_REG GPBMUX1; // GPIO B 多路复用器1寄存器(GPIO32至47)
UNION GPB2_REG GPBMUX2; // GPIO B 多路复用器2寄存器(GPIO48至63)
UNION GPBDAT_REG GPBDIR; // GPIO B 方向寄存器(GPIO32至63)
UNION GPBPUD_REG GPBPUD; // GPIO B 上拉禁用寄存器(GPIO32至63)
uint16 rsvd2[33];
};
结构 GPIO_DATA_regs{
UNION GPADD_REG GPADAT; // GPIO 数据寄存器(GPIO0至31)
UNION GPADD_REG GPASET; // GPIO 数据设置寄存器(GPIO0至31)
UNION GPADD_REG GPACLEAR; // GPIO 数据清除寄存器(GPIO0至31)
UNION GPADD_REG GPATOGGLE; // GPIO 数据切换寄存器(GPIO0至31)
UNION GPBPUD_REG GPBDAT; // GPIO 数据寄存器(GPIO32至63)
UNION GPBDAT_REG GPBSET; // GPIO 数据设置寄存器(GPIO32至63)
UNION GPBDAT_REG GPBCLEAR; // GPIO 数据清除寄存器(GPIO32至63)
UNION GPBDAT_REG GPBTOGGLE; // GPIO 数据切换寄存器(GPIO32至63)
uint16 rsvd1[16];
};
结构 GPIO_INT_regs{
UNION GPIOXINT_REG GPIOXINT1SEL;// XINT1 GPIO 输入选择
UNION GPIOXINT_REG GPIOXINT2SEL;// XINT2 GPIO 输入选择
UNION GPIOXINT_REG GPIOXNMISEL; // XNMI_XINT13 GPIO 输入选择
uint16 rsvd2[5];
UNION GPADD_REG GPIOLPMSEL; //低功耗模式 GP I/O 输入选择
};
struct XCLK_bits { // bits description
UINT16 XCLKOUTDIV:2;// 1:0 XCLKOUT 分频比
UINT16 XCLKOUTDAT:1;// 2 保留仅供 TI 使用
UINT16 X1DAT:1; // 3 保留仅供 TI 使用
UINT16 XCLKINDAT:1; // 4 保留仅供 TI 使用
uint16 rsvd1:3; // 7:5 保留
UINT16 X1CNT:4; // 11:8 保留仅供 TI 使用
UINT16 XCLKINCNT:4; // 15:12保留仅供 TI 使用
};
UNION XCLK_REG{
uint16 全部;
struct XCLK_bits 位;
};
struct PLLSTS_bits { // bits description
UINT16 PLLLOCKS:1; // 0 PLL 锁定状态
uint16 CLKINDIV:1; // 1 CLKIN div x 2
UINT16 PLLOFF:1; // 2 PLL OFF 位
UINT16 MCLKSTS:1; // 3 缺少时钟状态位
UINT16 MCLKCLR:1; // 4 缺少时钟清零位
UINT16 OSCOFF:1; // 5 振荡器时钟关闭
UINT16 MCLKOFF:1; // 6 缺少时钟检测
uint16 rsvd2:9; //保留15:7
};
UNION PLLSTS_REG{
uint16 全部;
结构 PLLSTS_BITS 位;
};
struct HISPPC_bits { // bits description
UINT16 HSPCLK:3; //相对于 SYSCLKOUT 的2:0速率
uint16 rsvd1:13; //保留15:3
};
UNION HISPP_REG{
uint16 全部;
struct HISPPC_BITS 位;
};
struct LOSPPC_bits { // bits description
UINT16 LSPCLK:3; //相对于 SYSCLKOUT 的2:0速率
uint16 rsvd1:13; //保留15:3
};
UNION LOSPPC_REG{
uint16 全部;
结构 LOSPPC_BITS 位;
};
struct PCLKCR0_bits { // bits description
uint16 rsvd1:2; //保留1:0
UINT16 TBCLKSYNC:1; // 2 EWPM 模块 TBCLK 使能/同步
UINT16 ADCENCLK:1; // 3 启用到 ADC 的高速时钟
UINT16 I2CAENCLK:1; // 4 使能 SYSCLKOUT 至 I2C-A
uint16 rsvd2:1; //保留5
UINT16 SPICENCLK:1; // 6 启用到 SPI-C 的低速时钟
UINT16 SPIDENCLK:1; // 7 启用到 SPI-D 的低速时钟
UINT16 SPIANCLK:1; // 8 启用到 SPI-A 的低速时钟
UINT16 SPIBENCLK:1; // 9 启用到 SPI-B 的低速时钟
UINT16 SCIAENCLK:1; // 10 使能低速时钟到 SCI-A
UINT16 SCIBENCLK:1; // 11 启用到 SCI-B 的低速时钟
uint16 rsvd3:2; // 13:12保留
UINT16 ECANAENCLK:1;// 14 使能系统时钟到 eCAN-A
UINT16 ECANBENCLK:1;// 15 使能系统时钟到 eCAN-B
};
UNION PCLKCR0_REG{
uint16 全部;
struct PCLKCR0_bits 位;
};
struct PCLKCR1_bits { // bits description
UINT16 EPWM1ENCLK:1; // 0 使能 SYSCLKOUT 到 EPWM1
UINT16 EPWM2ENCLK:1; // 1 使能 SYSCLKOUT 到 EPWM2
UINT16 EPWM3ENCLK:1; // 2 启用到 EPWM3的 SYSCLKOUT
UINT16 EPWM4ENCLK:1; // 3 启用到 EPWM4的 SYSCLKOUT
UINT16 EPWM5ENCLK:1; // 4 使能 SYSCLKOUT 到 EPWM5
UINT16 EPWM6ENCLK:1; // 5 使能 SYSCLKOUT 到 EPWM6
uint16 rsvd1:2; // 7:6 保留
UINT16 ECAP1ENCLK:1; // 8 使能 SYSCLKOUT 至 ECAP1
UINT16 ECAP2ENCLK:1; // 9 启用到 ECAP2的 SYSCLKOUT
UINT16 ECAP3ENCLK:1; // 10 使能 SYSCLKOUT 至 ECAP3
UINT16 ECAP4ENCLK:1; // 11 使能 SYSCLKOUT 到 ECAP4
uint16 rsvd2:2; // 13:12保留
UINT16 EQEP1ENCLK:1; // 11 启用到 EQEP1的 SYSCLKOUT
UINT16 EQEP2ENCLK:1; // 11 启用到 EQEP2的 SYSCLKOUT
};
UNION PCLKCR1_REG{
uint16 全部;
struct PCLKCR1_BITS;
};
struct PLLCR_Bits{ // bits description
uint16 DIV:4; // 3:0 设置 PLL 的时钟比率
uint16 rsvd1:12; //保留15:4
};
UNION PLLCR_REG{
uint16 全部;
结构 PLLCR_Bits 位;
};
struct LPMCR0_bits{ // bits description
uint16 LPM:2; // 1:0 设置低功耗模式
UINT16 QUALSTDBY:6; // 7:2 鉴定
uint16 rsvd1:7; // 14:8 保留
UINT16 WDINTE:1; // 15 使 WD 从 STANDBY 唤醒器件
};
UNION LPMCR0_REG{
uint16 全部;
struct LPMCR0_bits 位;
};
结构 SYS_CTRL_regs{
UNION XCLK_REG XCLK; // 0
UNION PLLSTS_REG PLLSTS; // 1.
uint16 rsvd1[8]; // 2-9.
UNION HISPP_REG HISPCP; // 10:高速外设时钟预分频器
UNION LOSPPC_REG LOSPCP; // 11:低速外设时钟预分频器
UNION PCLKCR0_REG PCLKCR0; // 12:外设时钟控制寄存器
UNION PCLKCR1_REG PCLKCR1; // 13:外设时钟控制寄存器
UNION LPMCR0_REG LPMCR0; // 14:低功耗模式控制寄存器0
uint16 rsvd2; // 15:保留
uint16 rsvd3; // 16:保留
UNION PLLCR_REG PLLCR; // 17:PLL 控制寄存器
UINT16 SCSR; // 18:系统控制和状态寄存器
uint16 WDCNTR; // 19:WD 计数器寄存器
uint16 rsvd4; // 20
UINT16 WDKEY; // 21:WD RESET KEY 寄存器
uint16 rsvd5[3]; // 22-24
uint16 WDCR; // 25:WD 定时器控制寄存器
uint16 rsvd6[6]; // 26-31
};
volatile struct GPIO_CTRL_regs GpioCtrlRegs;
volatile struct GPIO_DATA_regs GpioDataRegs;
volatile struct SYS_CTRL_regs SysCtrlRegs;
#define DINT asm (" SETC INTM")
#define EALLOW asm (" EALLOW ")
#define EDIS asm (" EDIS")
cregister volatile unsigned int IFR;
cregister volatile unsigned int IER;