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.

[参考译文] TMS320F2806:启动后切换时钟源时出现问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/581911/tms320f2806-trouble-switching-clock-source-after-boot

部件号:TMS320F2806
主题:controlSUITE中讨论的其他部件

您好,

对于我的应用,我想在启动后切换到外部振荡器。 此振荡器连接到X1/X2针。 在bootloader中,我使用内部振荡器,在应用程序启动后,我切换到外部振荡器。

问题是CPU似乎一直在重置。 我怀疑VCOCLK溢出,因为它不会被OSCCLK清除。 但是我不确定。

有趣的是,通过在调试模式下运行应用程序(即没有引导加载程序),应用程序工作正常,不会发生重置。这意味着应用程序中的振荡器设置没有故障。 引导加载程序中的振荡器设置也没有故障,因为如果我撤消应用程序中的振荡器更改,所有操作仍然有效,并继续使用引导加载程序中的振荡器设置。  

内部/外部振荡器之间的转换不顺利。

以下是引导加载程序振荡器步骤:

//启用内部振荡器1
clk_enablescalator 1(obj->clkHandle);

//禁用
CLK_disableClkIn(obj->clkHandle)中的外部时钟;

//禁用晶体振荡
器CLK_disableCrysterOscrystalosc(obj->clkHandHandle);

//禁用振荡器2 CLK_CLklock_CLklock_1





;CLklock_CLkpress_CLk_CLk_CLklock_1;
CLk_1



切换步骤(在应用程序中发生):

//禁用外部时钟。请查看参考文档第12页。 x1
clk_disableClkIn(obj->clkHandle);


clk_set奥斯卡2Src(obj->clkHandle, CLK_奥斯卡2Src_Internal);

//设置振荡器源
CLK_setscalerSrc(SYob->clkHandle,CLK_奥斯卡Src_External);

//已移至最后一个振荡器,CLK_CLk_CLkscrc1;







已关闭CLk_CLKSC1(SYSC1;已关闭CLk_SC1;已关闭时钟,已关闭时钟,已关闭时钟已关闭,已关闭,已关闭 

两个时钟之间的转换似乎有问题。 是否有人有类似的经历?

谢谢!

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

    您是否尝试过对“禁用外部时钟输入”功能代码进行注释?

    //在中禁用外部时钟
    clk_disableClkIn(obj->clkHandle);

    如果删除上述代码,是否有效?

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

    由于外部振荡器位于X1/X2针脚上,因此无法正常工作。 我需要此功能来设置CLKCTL[XCLKINOFF ]=1,以断开GPIO19/38与XCLKIN门的连接。 (系统控制文档第37页)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Hani,

    您是否尝试过将引导加载程序代码复制到应用程序中,而只是运行了该应用程序? 是否通过了?

    您是否正在引导加载程序中配置PLL?

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

    您好Adam:

    复制应用程序中的引导加载程序代码即可工作。 以及将应用程序代码复制到引导加载程序中,只要我不在应用程序中切换时钟 (即仅在Bootloader中切换到外部示波器)。

    因此,当在bootloader和应用程序之间切换时钟时,以及当我在bootloader和应用程序中使用外部osc.时,就会出现问题。

    当我在bootloader中切换到ext. osc.(在应用程序中不执行任何操作)时,不会出现问题。

    在系统控制文档第42页中,它提到一个系统初始化文件(DSP2803x_sysctrl.c),我尚未找到该文件可下载的位置。 它也不在我的系统上??

    可能它已经过时或不再安装,但将它作为示例源非常有用。


    此致。

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

    您可以在controlSUITE中找到sysctrl.c文件。

    F2806x:..\controlSUITE\DEVICE_SUPPORT\f2806x\v151\F2806x_common\source</s>2806
    F2803x:..\controlSUITE\DEVICE_SUPPORT\F2803x\V130\DSP2803x_common\source</s>2803

    从bootloader切换到应用程序代码的过程是什么?

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

    您好Adam:

    通过在bootloader代码中注释以下行,解决了该问题:

    clk_disableCrystalOsc (obj->clkHandle); 

    默认情况下,此功能处于打开状态,禁用此功能将切断X1/X2中进入UC的振荡器信号。

    谢谢!