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.

[参考译文] TMS320F28075:定制 TMS320F28075板上的调试问题–未观察到 GPIO 输出

Guru**** 2224720 points
Other Parts Discussed in Thread: TMS320F28075, TMS320F28379D, C2000WARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1467865/tms320f28075-debugging-issue-on-custom-tms320f28075-board-gpio-output-not-observed

器件型号:TMS320F28075
主题中讨论的其他器件: TMS320F28379DC2000WARE

工具与软件:

大家好、团队成员:

我正在从事 TMS320F28075 IC 并设计了一个定制的微控制器卡、以确保 IC 正常工作所需的所有必要连接均符合数据表要求。

之前、我成功在上运行了代码 C2000 LaunchPad (TMS320F28379D) . 不过、现在我要使用在定制板上调试相同的代码 JTAG TMS320-XDS100-V2 . 所有 JTAG 连接已经按照数据表建立、并且当在中进行测试时 CCS 时、目标状态将显示无错误并正确连接。

观察结果:

  • 代码行为:

    • 代码 构建和调试 、但未观察到预期输出。
    • 例如、设置时 GPIO20高电平 、则引脚上没有变化。
    • 我测试了多个 GPIO、遇到相同的问题。
  • 功耗:

    • 空闲状态(未刷写代码): 30mA
    • 在通过 JTAG 刷写期间: 尖峰达到120mA
    • 闪烁后: 最大值 70mA
    • C2000 LaunchPad ,其中输入电流在闪烁后进一步增加,这不是在我的定制板上发生。

所需帮助:

  • 请帮助我理解 可能会出现什么问题 和什么 调试步骤 该怎么办?
  • 因为这是一个 独立板 根据 TMS320F28075 (100引脚) 是否需要添加任何内容 其他初始化 以确保调试后正确执行和代码保留?

下面是我的代码的相关部分:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "driverlib.h"
#include "device.h"
void main(void)
{
//
// Initialize device clock and peripherals
//
Device_init();
Device_initGPIO(); // Initialize GPIOs
//
// Configure GPIO20 as a GPIO output
//
GPIO_setPinConfig(GPIO_20_GPIO20); // Ensure GPIO20 is in GPIO mode
GPIO_setPadConfig(20, GPIO_PIN_TYPE_STD); // Standard push-pull
GPIO_setDirectionMode(20, GPIO_DIR_MODE_OUT); // Set as output
//
// Set GPIO20 High
//
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

此致、

Tasmiya

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Tasmiya:

    您能否检查 Xrsn 是否保持为高电平(3.3V)?

    然后检查 GPIO 配置、当您向引脚20写入1时、您可以检查 GPIO 数据寄存器是否确实 设置了它?

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    是的、Xrsn 实际上在3.3V 时保持了高电平。

    这一行的问题似乎是:InitSysCtrl();。 包含此行且我将1写入 GPIO 引脚20时、没有输出、并且程序在以下行停止:

    Fullscreen
    1
    ClkCfgRegs.SYSPLLMULT.all = ((fmult << 8U) | imult);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    然后、它将在此循环中等待:
    Fullscreen
    1
    while(ClkCfgRegs.SYSPLLSTS.bit.LOCKS != 1)
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    但是、当我在不带InitSysCtrl();此行的情况下运行代码时、我可以看到 GPIO20引脚按预期输出、而数据寄存器显示为1。

    问题可能出在系统时钟的配置方式上。 由于我将内部振荡器用于控制卡、我认为 PLL 初始化会导致时钟锁定过程停滞。

    您能为我提供正确配置和使用内部振荡器的示例代码或示例吗? 这将有助于故障排除和解决问题。

    以下是完整代码:

    #include "F28x_Project.h"

    void main(){

    InitSysCtrl();

    EALLOW;
    GpioCtrlRegs.GPAMUX2.bit.GPIO20 = 0;  
    GpioCtrlRegs.GPADIR.bit.GPIO20 = 1;
    EDIS;

    GpioDataRegs.GPASET.bit.GPIO20 = 1;
    while (1){

    }
    }

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我希望这封电子邮件能让您满意。 我之前谈到了一个问题、即我在引脚上观察到输出、但无法实现预期行为。 按照您的建议检查 XRSn 引脚是否在3.3V 保持高电平、我已经确认 XRSn 引脚是否正确保持在3.3V。

    但是、我现在已经确定此问题可能与 PLL (锁相环)块无法正确锁定有关。 我在上次来文中没有提到这一点、但我认为这可能是我所面临问题的根本原因。

    当我刷写代码时、Expression Window 中 ClkCfgRegs.SYSPLLSTS.bit.locks 的输出始终为0、表示 PLL 未按预期锁定。 如果您指导我解决此问题并正确锁定 PLL、我将不胜感激。

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您使用的功能是否与的 c2000ware 示例中实现的功能相同  TMS320F28075  设备。 我怀疑器件之间会有一些变化( TMS320F28379D 与 TMS320F28075 )。

    您是否可以尝试从 C2000Ware 目录-..\driverlib\f2807x\examples\cpu1\gpio 中运行 gpio_ex2_toggle  

    请告诉我您在此示例中注意到了什么。

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我尝试了gpio_ex2_toggle在上通过 C2000Ware 构建和执行示例 TMS320F28075 . 但是、在不同的执行模式下、我会遇到以下问题:

    RAM 模式问题:

    当在 RAM 模式下运行代码时、它会重定向至以下错误:

    Fullscreen
    1
    2
    3
    4
    5
    void __error__(const char *filename, uint32_t line)
    {
    // An ASSERT condition was evaluated as false.
    ESTOP0;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    2.闪光灯模式问题:

    当在闪存模式下运行相同的代码时、我在控制台中显示以下错误:

    Fullscreen
    1
    2
    3
    4
    C28xx_CPU1: Error occurred during flash operation: Timed out waiting for target to halt while executing wr_pll.alg
    C28xx_CPU1: Error writing the PLL values (Flash algorithm timed out). Operation cancelled.
    C28xx_CPU1: Perform a debugger reset and execute the Boot-ROM code (click on the RESUME button in CCS debug window) before erasing/loading the Flash. If that does not help to perform a successful Flash erase/load, check the Reset cause (RESC) register, NMI shadow flag (NMISHDFLG) register, and the Boot-ROM status register for further debugging.
    C28xx_CPU1: File Loader: Memory write failed: Unknown error
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    请求协助:

    您能否提供有关导致这些问题的原因的见解并建议解决这些问题的适当步骤?

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    [报价 userid="603981" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1467865/tms320f28075-debugging-issue-on-custom-tms320f28075-board-gpio-output-not-observed/5639662 #5639662"]

    RAM 模式问题:

    当在 RAM 模式下运行代码时、它会重定向至以下错误:

    [报价]

    请检查触发此断言错误条件的位置。 应该能够从调用堆栈进行跟踪  

    您可以在 RAM 中对代码进行编程的位置?

    [报价 userid="603981" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1467865/tms320f28075-debugging-issue-on-custom-tms320f28075-board-gpio-output-not-observed/5639662 #5639662"]

    当在闪存模式下运行相同的代码时、我在控制台中显示以下错误:

    全屏
    1.
    2.
    3.
    4.
    C28xx_CPU1:闪存操作期间发生错误:在执行 wr_PLL.ALG 时等待目标停止超时
    C28xx_CPU1:写入 PLL 值时出错(闪存算法超时)。 操作已取消。
    C28xx_CPU1:在擦除/加载闪存之前执行调试器复位并执行引导 ROM 代码(点击 CCS 调试窗口中的"Resume"按钮)。 如果这样不能帮助执行成功的闪存擦除/加载、请检查复位原因(RESC)寄存器、NMI 影子标志(NMISHDFLG)寄存器和引导 ROM 状态寄存器以进行进一步调试。
    C28xx_CPU1:文件加载程序:内存写入失败:未知错误
    [报价]

    以上内容看起来像是闪存编程错误? 您是否能够在闪存中加载代码?

    谢谢