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 IC 并设计了一个定制的微控制器卡、以确保 IC 正常工作所需的所有必要连接均符合数据表要求。
之前、我成功在上运行了代码 C2000 LaunchPad (TMS320F28379D) . 不过、现在我要使用在定制板上调试相同的代码 JTAG TMS320-XDS100-V2 . 所有 JTAG 连接已经按照数据表建立、并且当在中进行测试时 CCS 时、目标状态将显示无错误并正确连接。
代码行为:
功耗:
下面是我的代码的相关部分:
#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 // GPIO_writePin(20, 1); // // Infinite loop // while(1); }
此致、
Tasmiya
尊敬的 Tasmiya:
您能否检查 Xrsn 是否保持为高电平(3.3V)?
然后检查 GPIO 配置、当您向引脚20写入1时、您可以检查 GPIO 数据寄存器是否确实 设置了它?
谢谢
您好!
是的、Xrsn 实际上在3.3V 时保持了高电平。
这一行的问题似乎是:InitSysCtrl();
。 包含此行且我将1写入 GPIO 引脚20时、没有输出、并且程序在以下行停止:
ClkCfgRegs.SYSPLLMULT.all = ((fmult << 8U) | imult);
while(ClkCfgRegs.SYSPLLSTS.bit.LOCKS != 1)
但是、当我在不带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 模式下运行代码时、它会重定向至以下错误:
void __error__(const char *filename, uint32_t line) { // An ASSERT condition was evaluated as false. ESTOP0; }
当在闪存模式下运行相同的代码时、我在控制台中显示以下错误:
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
您能否提供有关导致这些问题的原因的见解并建议解决这些问题的适当步骤?
谢谢
您好!
[报价 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 中对代码进行编程的位置?
[报价 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"]当在闪存模式下运行相同的代码时、我在控制台中显示以下错误:
以上内容看起来像是闪存编程错误? 您是否能够在闪存中加载代码?
谢谢