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.

[参考译文] 编译器/TMS320C5535:C5535 PLL 配置导致芯片和调试器崩溃、

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/663947/compiler-tms320c5535-c5535-pll-configuration-crashes-the-chip-and-debugger

器件型号:TMS320C5535

工具/软件:TI C/C++编译器

您好!

我正在尝试按照文档的说明来配置我的 PLL。 我希望获得100Mhz 的时钟、但每次运行时、调试器和/或芯片以及 CCS 都会崩溃。 奇怪的是、我可以看到时钟在示波器上运行、但它不可能用于其他任何操作。 它在很短的时间内运转良好、但现在每次都失败。 如果我不运行 PLL 配置函数、芯片看起来在40MHz 左右运行正常、我可以正常调试。

我使用 CCSv7在 Ubuntu 16.04上、调试器是 XDS110和定制硬件。

这是初始化代码。 在步骤7之前、所有步骤似乎都可以正常工作

非常感谢您的任何帮助。

谢谢、

~Fabien

CSL_Status PLL_CONFIG ()
{
//Init PLL
//1 -确保时钟发生器处于旁路模式。 清除 SYSCLKSEL 位
CSL_SYSCTRL_REGS->CCR2 &=~CSL_SYS_CCR2_SYSCLKSEL_MASK;

//2 -设置 CLR_CNTL = 0、CGCR1寄存器的位15
CSL_SYSCTRL_REGS->CGCR1 &=~CSL_SYS_CGCR1_RSVD_MASK;

//3 -对 RDRATIO 进行编程:
//->根据要求在 CGCR1和 CGCR2中使用 M 和 RDBYPASS:M = 796、RDRATIO = 92、RDBYPASS = 0
CSL_SYSCTRL_REGS->CGCR1 = 0x31C;
CSL_SYSCTRL_REGS->CGCR2 = 0x2C;

//4 -在 CGCR4 ODRATIO = 0、OUTDIVEN = 0时对 ODRATIO 和 OUTDIVEN 进行编程
CSL_SYSCTRL_REGS->CGCR4 = 0;

//5 -将0x0806写入 CGCR3的 INIT 域
CSL_SYSCTRL_REGS->CGCR3 = 0x0806;

//6 -设置 PLL_PWRDN = 0
CSL_SYSCTRL_REGS->CGCR1 &=~CSL_SYS_CGCR1_PLL_PWRDN_MASK;

//7 -设置 CLR_CNTL = 1、CGCR1寄存器的位15
CSL_SYSCTRL_REGS->CGCR1 |= CSL_SYS_CGCR1_RSVD_MASK;

//8 -等待4ms 以锁定 PLL
waitusec(4000);

//9 -通过设置 SYSCLKSEL = 1、将时钟发生器置于其 PLL 模式
CSL_SYSCTRL_REGS->CCR2 |= CSL_SYS_CCR2_SYSCLKSEL_MASK;

返回 CSL_SOK;
} 

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

    您能否使用此 PLL 计算器检查 PLL 配置?
    processors.wiki.ti.com/.../C5505_PLL_Calculator_060210.zip

    该工具适用于 C5505、但 C5535中使用了相同的 PLL。 它将标记超出范围的任何参数。

    希望这对您有所帮助、
    标记
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Mark!

    这解决了我的问题、我在 CGCR4寄存器中具有错误的值。 它现在运行良好。