请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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; }