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.

[参考译文] CCS/MSP430FR2355:EVM -- ACLK 32.768k、SMCLK、MCLK 16MHz

Guru**** 2538960 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/892625/ccs-msp430fr2355-evm----aclk-32-768k-smclk-mclk-16mhz

器件型号:MSP430FR2355

工具/软件:Code Composer Studio

下午好。

运行 EVM。  我有一个小代码块来将 ACLK 设置为32kHz LFXT、并将具有16MHz FLL 的 DCO 用于 SMCLK、MCLK。  如果我使用调试器运行代码、我会得到16MHz 时钟正常。  如果我移除将 eZ-FET 连接到目标方的所有跳线而不是接地跳线、并将电源插入3.3V (已验证)、我的代码似乎不起作用。  这意味着...设置时钟后、我有一个 LED 指示灯亮起。  调试器 LED 亮起时、如果没有调试器、并且使用电源 LED 不会亮起、但时钟似乎以16MHz 运行。  我的问题是、是否有人可以为我验证我的时钟设置是否正确?  我特别不想做用户指南中讨论的修整件。  只需设置 DCO 和 FLL 并在接近16MHz 的频率下运行。  此外、对于在没有调试器的情况下时钟运行时 LED 不希望亮起的原因、还有任何想法。


FRCTL0 = FRCTLPW | NWAITS_2;
操作
{
CSCTL7 &=~(XT1OFFG | DCOFFG); //清除 XT1和 DCO 故障标志
SFRIFG1 &=~OFIFG;
} while (SFRIFG1和 OFIFG); //测试振荡器故障标志

_bis_SR_register (SCG0); //禁用 FLL
CSCTL3 |= SELREF_XT1CLK; //将 XT1设置为 FLL 基准源
CSCTL0 = 0x155;
CSCTL1 = DCORSEL_5;// DCOFTRIM = 5、DCO 范围= 16MHz
CSCTL2 = FLLD_0 + 487; // DCOCLKDIV = 16MHz
CSCTL6 = 0x0030;
_DELAY_CYCLES (3);
_BIC_SR_register (SCG0); //启用 FLL
// Software_Trim ();
while (CSCTL7 &(FLLUNLOCK0 | FLLUNLOCK1));
CSCTL4 = SELMS_DCOCLKDIV | SELA_XT1CLK;//将 XT1 (~32768Hz)设置为 ACLK 源、ACLK = 32768Hz

谢谢

Steve

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

    您好、Steve、

    您能否分享一些与 led 相关的代码?

    您可以参考以下示例代码:

    http://dev.ti.com/tirex/explore/node?node=AL7R3gqXs8yb3B3Ia83dVQ__IOGqZri__LATEST

    此致

    Johnson

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

    约翰逊

    感谢您的回答...我添加的代码块似乎解决了我的问题。  DCO 和 FLL 看起来有点令人困惑。  我以前使用过 TI 器件、以前从未需要过 Software_Trim 函数。。。 它的目的是什么?  以精确地测量您想要的频率?  我习惯只设置 DCO 和 FLL 并获得足够好的频率....您能告诉我代码是否在没有 Software_Trim 函数的情况下正确设置了16MHz (SMCLK/MCLK)吗?

    谢谢

    Steve

    FRCTL0 = FRCTLPW | NWAITS_1;
    操作
    {
    CSCTL7 &=~(XT1OFFG | DCOFFG); //清除 XT1和 DCO 故障标志
    SFRIFG1 &=~OFIFG;
    } while (SFRIFG1和 OFIFG); //测试振荡器故障标志
    
    _bis_SR_register (SCG0); //禁用 FLL
    CSCTL3 |= SELREF_XT1CLK; //将 XT1设置为 FLL 基准源
    CSCTL0 = 0;
    CSCTL1 &=~(DCORSEL_7);
    CSCTL1 |= DCORSEL_5;// DCOFTRIM = 5,DCO 范围= 16MHz
    CSCTL2 = FLLD_0 + 487; // DCOCLKDIV = 16MHz
    _DELAY_CYCLES (3);
    _BIC_SR_register (SCG0); //启用 FLL
    // Software_Trim ();
    P6OUT &=~BIT6;
    while (CSCTL7 &(FLLUNLOCK0 | FLLUNLOCK1));
    CSCTL4 = SELMS_DCOCLKDIV | SELA_XT1CLK;//将 XT1 (~32768Hz)设置为 ACLK 源、ACLK = 32768Hz
    

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

    您好、Steve、

    Software_Trim () 是为了加快 DCO 时钟的稳定时间。 当然、它可以保持未使用状态。 启用 FLL 后、时钟将自动锁定到设置时间。

    此致

    Johnson