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.

[参考译文] TMS320F280049C:SYSCTL_setClock()被卡住

Guru**** 2794765 points

Other Parts Discussed in Thread: C2000WARE, TMS320F280049C

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/995940/tms320f280049c-sysctl_setclock-gets-stuck

器件型号:TMS320F280049C
主题中讨论的其他器件:C2000WARE

各位专家:

客户一直面临  SYSCTL_setClock()卡住的问题。 C2000ware 版本为 C2000Ware 2.01.00.00。
根据 TRM 中的"3.7.10系统时钟设置"、它会显示"3. 如果需要、设置系统 PLL。 为了正确配置 PLL 时钟、TI 建议使用 C2000Ware sysctl:setclock()函数。"
但是,它一直停留在 SYSCTL_selectXTAL ()的循环中。

・CLKSRCCTL1.OSCCLKSRCSEL = XTAL
・SYSPLLMULT  12.5次
・SYSPLLCTL1.PLLEN = SYSPLL 使能
・SYSCLKDIVSEL.PLLSYSCLKDIV=1

请告诉我们如何使用 SYSCTL_setClock()函数。

此致、
Hitoshi Sugawara

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

    器件型号:TMS320F280049C

    各位专家:

    SYSCTL_setClock()似乎 不支持 SYSPLLMULT 寄存器中的 ODIV 字段。
     SYSCTL_setClock()中的 ODIV 字段能否设置为0以外的值?
    请告诉我们如何配置 ODIV 字段。

    此致、
    Hitoshi

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

    您好、Hitoshi、

    我已经合并了您的两个主题、因为它们具有相似的主题。

    此致、

    Vince

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

    Sugawara-San、          

    • 最新版本的 C2000WARE (3_04_00_00)是否出现此问题?
    • F280049C LaunchPad 等标准硬件是否存在此问题?
    • 这个问题是每次都出现还是只是随机出现?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Sugawara-San、

    这是 F28004x driverlib 中的一个已知问题、我们计划在 下一个 C2000ware 版本中更新该函数。 该函数不考虑 ODIV 值。  它 使用 DCC 根据参考 时钟验证 PLL 输出。 它假设分频器值为1、因此计算出的时钟比率 是错误的。

    作为一种权变措施、请将随附的 SYSCTL 驱动程序与更新后的函数一起使用。 这将包含在下 一个正式的 C2000ware 版本中。

    e2e.ti.com/.../sysctl.zip

    PLL 配置示例:  

    #define DEVICE_SETCLOCK_CFG         (SYSCTL_OSCSRC_XTAL | SYSCTL_IMULT(10) |  \
                                         SYSCTL_FMULT_NONE | SYSCTL_SYSDIV(2) |   \
                                         SYSCTL_ODIV(1) | SYSCTL_PLL_ENABLE)
                                         
    SysCtl_setClock(DEVICE_SETCLOCK_CFG);

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

    您好、Veena、

     这是 sysctl_setclock()也被卡住的原因吗?
    请让我澄清一下。

    此致、
    Hitoshi

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

    它是否卡在 while (sysctl_isMCDClockFailureDetected ())循环中? 请将代码片段发送到它卡住的位置

    您使用的是 controlCARD/Launch 还是定制板?  请检查 XTAL 是否正常运行

    此致、

    Veena

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

    您好、Veena、
    根据客户的说法,  当它们配置如下时,它卡在 SYSCTL_selectXTAL ()的循环中:

    ・CLKSRCCTL1.OSCCLKSRCSEL = XTAL
    ・SYSPLLMULT  12.5次
    ・SYSPLLCTL1.PLLEN = SYSPLL 使能
    ・SYSCLKDIVSEL.PLLSYSCLKDIV=1

    他们希望知道正确的设置。  
    此致、
    Hitoshi Sugawara

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

    您好!

    它们使用的 XTAL 频率是多少? 您需要确保时钟频率处于数据表中指定的范围内。

    您是否使用 ODIV 参数? 假设 XTAL 为20MHz 且 ODIV=1、则输出 PLL 频率超出允许的范围。

    所需的 SYSCLK 频率是多少?

    此致、

    Veena

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

    您好、Veena、

    当前 的 SYSCTL_setClock()似乎不支持 ODIV 字段,因此客户无法配置目标 PLL 频率。
    让我与他们一起工作、从而做出相应的正确设置。

    感谢您的及时支持。
    此致、
    Hitoshi

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

    我已附加更新的驱动程序、该驱动程序也支持 ODIV 配置。 请将其用于配置 ODIV。

    此致、

    Veena

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

    您好、Veena、

    让我重新开始讨论这个问题。 根据客户的说法,他们正在使用自己的主板, sysctl.zip 中的 sysctl_setclock() 仍然无法正常工作。
    他们必须使用 C2000Ware 2.01.00.00。

    PLL 配置如下:
    OSCLK = 16MHz、NF = 12.5 (FMULT = 2、IMLT = 12)、f (VCO)= 200MHz、ODIV = 1 (分频器/2)
    PLLRAWCLK = 100MHz、PLLSYSCLKDIV = 1、SYSCLK = 100MHz

    能否检查  sysctl_setclock()是否正常工作?

    感谢您的友好支持。
    此致、
    Hitoshi

     

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

    您好、Hitoshi、

    我 没有安装 C2000ware 2.01、因此我使用的是 v3.04。 我认为,这不应产生影响。 我使用.zip 文件中可用的 sysctl 文件。

    我使用的是 Launchpad、具有20MHz XTAL。 这是 device.h 中的配置:

    #define DEVICE_SETCLOCK_CFG         (SYSCTL_OSCSRC_XTAL | SYSCTL_IMULT(12) |  \
                                         SYSCTL_FMULT_1_2 | SYSCTL_SYSDIV(1) |   \
                                         SYSCTL_ODIV(2) | SYSCTL_PLL_ENABLE)
    
    #define DEVICE_SYSCLK_FREQ          (uint32_t)((DEVICE_OSCSRC_FREQ * 12.5F) / (2))
    
     

    我已为 DEVICE_SYSCLK_FREQ 添加(uint32_t)拼写、因为它涉及浮点运算。

    我能够看到125MHz (= 20 * 12.5 / 2) PLL 输出。

    您能否提供有关所面临错误的一些详细信息? 如果上述代码与您的设置不匹配、您能否共享这2个宏定义?

    此致、

    Veena

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

    您好、Veena、

    客户已确认 sysctl.zip 工作正常。  
    感谢您对本次调查的快速支持。
    请为 下一个 C2000WAND 版本更新 sysctl_setclock()。

    此致、
    Hitoshi