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.

[参考译文] CC2650:CC2650的8MHz 系列

Guru**** 2587365 points
Other Parts Discussed in Thread: CC2650

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/641436/cc2650-8mhz-generation-from-cc2650

器件型号:CC2650

大家好、

我想 从 CC2650生成8MHz 时钟、以便如何从该芯片生成。

根据第417页、图6.4和第418页、TRM。  SCLK_HF 是48MHz 系统时钟、在我的情况下、由于我使用24MHz、它将从24MHz xtal 派生。

现在请查看第1190页、图13.1。 定时器模块的时钟源为 PERDMACLK (也为 UART、I2C 等计时)。 在关于 SSI 模块的部分、第1496页、您将找到这句话   

"假设系统时钟为48MHz、则位速率计算如公式6所示。" 其中48MHz 取代了 PERDMACLK。  

那么、看起来(1) PERDMACLK 可以配置为48MHz、(2)由于计时器在此时钟上运行、我们可以创建一个占空比为50%的8MHz 时钟。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您希望实现什么目标? 它是否会创建8MHz 时钟作为 CC2650的输出?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我们还有其他 IC、该 IC 所需的频率为8.192MHz、因此我想从 CC2650馈送8MHz。
    我想避免将晶体用于该 IC、因此我使用的是 CC2650、因此我想使用它。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不建议使用计时器创建8MHz 时钟。
    假设您关心功耗、您将无法将其置于待机或关断模式、最终会花费大量能源来保持时钟活动。

    我还怀疑(假设电源不受任何问题的影响)您最终可能会遇到这种情况。 如果 IC 指定8.192MHz 晶体、我会假设您使用计时器时会遇到频率误差、除非 IC 容差很高。 请问您希望使用计时器驱动什么 IC?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好
    我不会遇到功耗问题、因为 CC2650将用于计量应用。 CC2650将通过 UART 接口与计量 IC (ATM90E26)连接。
    在本例中、CC2650将始终处于活动状态。
    我将使用此 IC ATM90E26、它将用于计量应用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    即使没有电源问题、我也建议使用实际的晶体、但前提是不仅要匹配其数据表和应用手册中给出的值。 很可能是~200kHz 误差会在某个点导致问题或不准确。

    但是、要回答您原来的问题、可以、您应该能够使用 PWM 驱动器生成8MHz 输出。 CC26XX 驱动程序文档中实际上有一个示例、用于创建占空比为50%的8MHz PWM 输出。

    PWM_Handle hPWM;
    PWM_Params pp;
    PWM_Params_init (&pp);
    pp.idleLevel = PWM_IDLE_LOW;
    pp.periodUnits = PWM_PERIOD_Hz;
    pp.periodValue = 8e6;
    pp.dutyUnits = PWM_Duty_Fraction;
    pp.dutyValue = PWM_Duty_Frite_MAX / 2;
    
    PWM_init ();
    
    hPWM = PWM_open (Board_PWM0、&pp);
    if (hPWM = NULL){
    log_error0 ("打开 PWM 失败");
    Task_exit();
    }
    PWM_START (hPWM);
    while (1){
    Task_sleep (BIOS_wait_forever);
    } 

    但是、我认为它不是合适的时钟源。