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.

[参考译文] 编译器/MSP430F5632:使用 FLL 设置 MCLK

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/624262/compiler-msp430f5632-set-mclk-with-fll

器件型号:MSP430F5632

工具/软件:TI C/C++编译器

大家好、

我需要的时钟是32768Hz 的 ACLK、以及 SMCLK 和 MCLK 的135MHz (或我可以通过此芯片设置的最大频率)。

ACLK 已完成32768Hz 的设置、但 SMCLK 和 MCLK 有问题。

但最重要的是、芯片只能以20MHz 的最大频率运行。

问题是、我能不能将频率提高到135MHz?

此芯片数据表中5.16和5.19的含义是什么?

XT2的晶振和我使用的电容为24MHz 和15pf。

我已经检查了名为 msp430f6xx_UCS08、07、04和03的示例代码、并进行了更改。

我是否有任何寄存器未设置或错误设置?

现在、MCLK 输出为4.9MHz、寄存器设置代码如下、

while (BAKCTL 和 LOCKBAK)//解锁 XT1引脚以进行操作
BAKCTL &=~(LOCKBAK);
UCSCTL6 &=~(XT2OFF + XT1OFF);//启用 XT1和 XT2
UCSCTL6 |= XT2DRIVE_3 + XCAP_3;//XT2驱动电平模式:3、内部负载电容
UCSCTL4 = SELA_XT1CLK + SELESS__DCOCLK + SELM_DCOCLK;//ACLK=XT1、SMCLK=DCO、MCLK=DCO
UCSCTL3 = SELREF_XT2CLK;//FLLREF=XT2
UCSCTL2 |= FLLD__32;
操作

UCSCTL7 &=~(XT2OFFG + XT1LFOFFG + DCOFFG);//清除 XT2、XT1、DCO 故障标志
SFRIFG1 &=~OFIFG;//清除故障标志
} while (SFRIFG1&OFIFG);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好
    有关此问题、请帮助我们。
    Thx
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我今天也已经开始了有关这个芯片的一些工作。 因此、对它的了解不多、我不知道回答您的所有问题。 但是、我可以粘贴我用于设置 XT2振荡器的函数的副本。 稍微修改为 Resource Explorer 中可用的版本。
    我也遇到了一些麻烦、但现在似乎工作了。 我的 XT2有一个20MHz 晶振/18pF 电容器。 请记住、对于24MHz、您需要比我的更高的驱动强度。 请参阅我的代码中的 UCSCTL6 |= XT2DRIVE1;行。 您可能需要将 UCSCTL6 |= XT2DRIVE1 | XT2DRIVE0;。
    我也在输入代码。 我仍然没有使用引脚3.4上的示波器测试输出。 我需要为此设置我的硬件。


    空时钟_init_XT2_20MHz (空)

    P3DIR |= BIT4; // SMCLK 到引脚
    P3SEL |= BIT4;

    P7SEL |= BIT2 | BIT3; //端口选择 XT2

    UCSCTL6 &=~XT2OFF; //启用 XT2
    UCSCTL3 |= SELREF_XT2CLK; // FLLref = REFO。 由于不使用 LFXT1、使用 LFXT1提供 FLL 可能会导致 XT1OFFG 标志置位
    UCSCTL4 |= SELA_XT2CLK; //ACLK = REFO、SMCLK=DCO、MCLK-DCO

    //循环直到 XT2、XT1、DCO 稳定
    操作

    UCSCTL7 &=~(XT2OFFG | XT1LFOFFG | XT1HFOFFG | DCOFFG); //清除 XT2、XT1、DCO 故障标志
    SFRIFG1 &=~OFIFG; //清除故障标志
    } while (SFRIFG1&OFIFG); //测试振荡器标志故障

    UCSCTL6 |= XT2DRIVE1; // XT2DRIVE 位15:14 '10'
    //预期频率
    UCSCTL4 |= SELESS_XT2CLK | SELM_XT2CLK; // SMCLK=MCLK=XT2



    希望这对您有所帮助。

    此致、
    Guyan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    数据表显示、当 RSEL=7、DCO = 31时、实际 DCO 频率可能介于60MHz 和135MHz 之间。 DCO 具有糟糕的容差;这就是为什么有 FLL 将其调整为目标频率的原因。

    允许的最大(S) MCLK 频率为25MHz。
    可以更快地运行 XT2或 DCO、但要将它们用作 MCLK 的时钟源、必须将它们分频到允许的频率。

    要获得大约25MHz 的频率、请将 FLL 配置为在762×XT1下运行、并使用32.768kHz 晶体。 (FLL 运行不是很好、那么基准时钟的频率接近目标频率。)
    或者、在 XT2上使用一个25MHz 晶振、并且将其直接用作时钟源(禁用 DCO)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Guyan 和 Clemens、

    我知道、关于 MSP430中的时钟系统的知识不多。
    现在、我的问题是、我已经检查了 UCS 框图和 MSP430x5xx 系列数据表中的寄存器的路由。
    我尝试在 XT2上使用24MHz、并在 FLL 上使用32768Hz。
    无论我如何设置、P3.4的时钟(我将 SMCLK 和 CLK 设置为 DCOCLK)仅在5MHz 左右。
    也许我很混乱,但你能教我如何检查。

    我在 XT1上使用32768Hz、我决定使用 FLL 以25MHz 的频率运行。
    代码从示例代码更改为
    while (BAKCTL 和 LOCKBAK)//解锁 XT1引脚以进行操作
    BAKCTL &=~(LOCKBAK);
    UCSCTL6 &=~Ω(XT1OFF);//XT1打开
    UCSCTL6 |= XCAP_3;//内部负载电容
    在 XT1故障标志被清除前执行//循环

    UCSCTL7 &=~(XT2OFFG + XT1LFOFFG + DCOFFG);//清除 XT2、XT1、DCO 故障标志
    SFRIFG1 &=~OFIFG;//清除故障标志
    } while (SFRIFG1&OFIFG);//测试振荡器故障标志
    _bis_SR_register (SCG0);//禁用 FLL 控制循环
    UCSCTL0 = 0x0000;//设置可能的最低 DCOx、MODx
    UCSCTL1 = DCORSEL_3;
    UCSCTL2 = FLLD_1 + 761;
    //(N + 1)* FLLRef = Fdco
    //设置 FLL Div = fDCOCLK/2
    UCSCTL3 |= FLLREFDIV__4;
    UCSCTL4 = SELM__DCOCLK + SELESS__DCOCLK + SELA_XT1CLK;
    _BIC_SR_register (SCG0);//启用 FLL 控制环路
    _DELAY_CYCLES (76563);  
    操作

    UCSCTL7 &=~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);//清除 XT2、XT1、DCO 故障标志
    SFRIFG1 &=~OFIFG;//清除故障标志
    } while (SFRIFG1&OFIFG);//测试振荡器故障标志

    此致、
    Norton

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    从示例代码(msp430f66xx_UCS_07.c)开始、当您使其正常工作时、根据需要进行调整。