Other Parts Discussed in Thread: TMS320F28075, TMS320F280049, C2000WARE
主题中讨论的其他器件: TMS320F280049、 C2000WARE
大家好、我遇到了一个令人困惑的问题。
问题描述:当使用 BIOS app.cfg 来选择外部振荡器作为系统时钟源时、在控制板加电后、TMS320F28075芯片有时无法在特定的电源序列下设置两个 ClkCfgRegs 寄存器。 然而、当使用 InitSysPll 库函数、或使用 BIOS app.cfg 将 INTOSC2设置为系统时钟时、这个问题在许多运行中都没有发生一次。 我更改了几个控制板、结果都是一样的。
问题背景:一个光伏并网逆变器控制板包含两个 DSP、一个主 DSP 是 TMS320F28075、一个辅助 DSP 是 TMS320F280049、两个芯片共享电源电路。 两个 GPIO 引脚和多个 SPI 引脚相互连接、用于检测彼此的"心跳"和主从通信。 两个芯片都使用无源外部振荡器作为时钟源。 TMS320F28075通过 BIOS app.cfg 设置系统时钟、TMS320F280049通过函数设置系统时钟、因为这两个项目是由不同的工程师完成的。
我的问题:
1.使用 BIOS app.cfg 来配置系统时钟和使用 InitSysPll 库函数之间是否有区别? 我在哪里能找到证据(BIOS app.cfg 引导模块中系统时钟设置的源代码)?
为什么在使用 Bois app.cfg 选择外部振荡器作为特定电源序列下的系统时钟源时、TMS320F28075芯片无法设置一些 ClkCfgRegs 寄存器? 电源序列处于要求范围内。 这只是由其它因素引起的表面表示(比如 TMS320F280049芯片的系统时钟正常但又不正常、引起电流或电压的差异)、或者是造成这个问题的原因?
问题详细信息:
我尝试使用帮助文件、并在 C:\ti\BIOS_6_51_00_15\packages/ti\catalog\c2800\initF2837x 中查找 Boot.c 文件


然后、我使用 InitSysPll 库函数、以相同的设置逻辑修改了 Boot.c 中的 Boot_configurePllDivs 函数。 但我发现它没有编译到项目中。
已导出的 ClkCfgRegs 是否发生 TMS320F28075芯片这个问题的比较如下(左侧正常、右侧异常)

上面的 ClkCfgRegs 显示当这个问题发生时、PLL 被旁路和解锁、SYSPLL 乘法器寄存器未能设定、然而分频器选择寄存器成功、这导致系统频率比预计状态慢24倍。
以 XGCONF 格式显示的 TMS320F28075系统时钟设置如下所示。

相应的 cfg 脚本如下所示


针对此问题的简单测试代码如下所示

禁用 BIOS app.cfg 时钟设置时、上述程序中的每种方法都可以。 启用 BIOS app.cfg 时钟设置后、如果出现问题、上述程序中的所有方法都将卡在 InitSysPll 中的 while 循环上、等待 SYSPLL 锁定。 如果问题未发生、上述程序中的每种方法都没问题。 这意味着问题发生后、不能再次设置系统时钟。
对于检测到的电源序列(是否出现问题)、比较如下所示(在所有上电相关引脚中、选择 TMS320F28075的 VDDIO 引脚(CH2)、一个 VDDA 引脚(CH3)作为测量对象、CH1是 TMS320F28075的 SPISOMI 引脚)
ClkCfgRegs 正常时检测到的电源序列

ClkCfgRegs 异常时检测到的电源序列

当恒压电源的电流限值设置为高于1A 时、更有可能发生此问题、这意味着电压电平上升得更快。 上述异常电源序列中的最大电源斜升速率为4000V/s、处于要求的范围内。
在控制板加电后、即使出现此问题、电源稳定、外部振荡器也正常。 图片如下所示。

