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.

[参考译文] TM4C1294NCPDT:SysCtlClockGet ()为我提供1017.xx M 值

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/611053/tm4c1294ncpdt-sysctlclockget-is-giving-me-1017-xx-m-value

器件型号:TM4C1294NCPDT
主题中讨论的其他器件:TM4C123

我将使用配置时钟  

G_ui32SysClock = MAP_SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000);

在这里 、g_ui32SysClock 给出了12Mega 的正确值

但我想确认时钟是否准确  

是否有计算时钟的方法  

如果是、请提供帮助

提前感谢  

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

    您好、Tayyab、

     对于 TM4C129器件、请使用 SysctlClockFreqSet()返回的值来获得处理器时钟速率、而不是调用 SysCtlClockGet ()。 SysCtlClockGet ()只能在 TM4C123器件上调用。 TivaWare 库中提到了这一点。

    26.2.2.3 SysCtlClockGet
    获取处理器时钟速率。
    原型:
    uint32_t
    SysCtlClockGet (空)
    描述:
    此函数决定处理器时钟的时钟速率、也是时钟速率
    外设模块(PWM 除外、PWM 具有其自己的时钟分频器;其他
    外设可能具有不同的时钟、有关详细信息、请参阅器件数据表)。

    注:
    如果 SysCtlClockSet()没有被调用来配置、这将无法返回准确的结果
    器件计时、或者器件直接由晶体(或时钟源)计时
    这不是支持的晶体频率之一。 在后一种情况下、此函数应为
    进行了修改、以直接返回正确的系统时钟速率。
    只能在 TM4C123器件上调用此函数。 对于 TM4C129器件、返回值
    来自 SysCtlClockFreqSet()指示系统时钟频率。

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


    就像我之前提到的、g_ui32SysClock 被指定为我请求的确切值

    但是、我想确认我的时钟是否准确、或者不使用任何其他方法

    请为我所提到的问题提供解决方案。

    谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您可以使用 DIVSCLK 引脚观察示波器上的时钟。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我试过这个,但没有显示任何内容
    很高兴你能提供帮助

    代码已附加

    uint32_t g_ui32SysClock= map_SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |
    SYSCTL_OSC_MAIN |
    SYSCTL_USE_PLL |
    SYSCTL_CFG_VCO_480)、30000000);


    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOQ);

    //
    //检查是否启用了外设访问。
    //
    while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOQ))



    GPIOPinTypeDIVSCLK (GPIO_PORTQ_BASE、0x10);
    SysCtlClockOutConfig (SYSCTL_CLKOUT_EN | SYSCTL_CLKOUT_SYSCLK、1000);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Tayyab Tahir"]

    在这里 、g_ui32SysClock 给出了12Mega 的正确值

    但我想确认时钟是否准确。 [/报价]

    根据您(之前)的代码条目:"...| SYSCTL_CFG_VCO_480)、120000000);" SysClock 不应该是120MHz -应该是12MHz

    您还会寻求确认系统时钟的准确性。   然而-您并未指定"如何测量和确定该精度?"  这是(一些)重要的-是不是吗?

    考虑以下因素:

    • 您寻求使用(仅)您的 MCU "确认 SysClock 精度"。    如果您的"唯一测量方法"是(仅 MCU)-那么您如何建议实现测量精度?
    • 为了克服这种不足、您必须提供"足够精确"的外部频率源;"或者您可以输出 SysClock 的副本、并使用外部设备来测量该频率。   (即、这是 David 的朋友/供应商建议)

    虽然您的帖子"不清楚"您寻求哪种这两种方法-我的意思是您"期望"MCU (单独)"确认 SysClock 的准确性"-当然、哪一种方法减去任何"片上"频率标准-它无法实现!

    如果您希望设计一款支持"合理精确的 SysClock 测量"的产品、 则必须在 MCU 的 PCB 上(适当)部署足够精确的外部稳定(电压、老化、温度)频率源。

    请注意、"每个人"对 "准确"的理解和接受可能与您自己的理解和接受不完全重叠。    因此(某些)规格是必需的-这不是吗?

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

    感谢您的回答  

    我很抱歉,它是120米,而不是12米

    我还要以这种方式来表示它  

    我想在示波器或逻辑分析仪上对系统时钟进行采样,以检查它是否是我在 SysClockFreqSet (… ,120000000)。

    如果时钟可以在 GPIO 上采样、则最好(如果可能)

    我的一位朋友说、可能是 PWM、可能有助于我浏览 Tiva ware 文档、以搜索任何相关内容  

    您能否提供样片代码来实现这一目的  

    或者、让我指明方向、以便我可以这样做  

    谢谢  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    供应商的 Charles 提供了输出 SysClock 适当"副本"的"正常/习惯"方法。 您的代码可能未正确执行他的建议。 您是否阅读了 MCU 手册-"在 SysClock (或类似工具)下搜索"可指导您了解此类详细信息。 (抱歉-公司/我不使用4C129。)

    如果失败-事实证明、"强制 MCU 计时器进入"PWM 模式"非常简单、并且输出 SysClock 的积分除法。 通过遵循计时器代码示例并查看外设驱动程序用户指南的"计时器部分"、您应该能够将计时器设置为2-4个计数、从而提供整数版本的 SysClock。

    使用"合适的晶体和晶体旁路电容器"始终可确保对频率精度的高置信度。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我能够使用以下代码序列看到12MHz DIVSCLK。 请尝试一下。 如 CB1所述、由于 PWM 周期源自 SYSCLK、因此您还可以使用 PWM 或 TMR 输出周期 PWM 作为验证时钟频率的方法。

    MAP_GPIOPinConfigure (GPIO_PQ4_DIVSCLK);
    GPIODirModeSet (GPIO_PORTQ_BASE、GPIO_PIN_4、GPIO_DIR_MODE_HW);
    GPIOPadConfigSet (GPIO_PORTQ_BASE、GPIO_PIN_4、GPIO_Strength _2mA、GPIO_PIN_TYPE_STD);
    SysCtlClockOutConfig (SYSCTL_CLKOUT_EN | SYSCTL_CLKOUT_SYSCLK、10);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Charles、

    最优秀-海报应该(现在)成功。

    我可以问-"4C123系列"中是否存在类似的功能? (我将搜索您是否愿意表明存在此类函数。)

    谢谢、致以最诚挚的问候...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 CB1、
    TM4C123没有 DIVSCLK 引脚。 您需要在示波器上测量 PWM/TMR 周期、以间接验证 SYSCLK 是否正确。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、Charles -我不记得在"4C123"手册中看到了"DIVSCLK"-而且(感谢您的善意)我的"视觉敏锐度"不再可疑...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 CB1、欢迎您的参与!