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/msp430f6438:UCS 和振荡器

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/614036/ccs-msp430f6438-ucs-and-oscillator

器件型号:MSP430F6438

工具/软件:Code Composer Studio

大家好、

我将 MSP-TS430PZ100C (REV1.1)与 MSP430F6438 MCU 搭配使用。

我在这里有2个问题。

问题1. 我想将 XT1与32.768kHz 晶振配合使用。 电阻器 R6和 R8为0。 该晶体附带 MSP-TS430PZ100C 板。 C1和 C2不焊接任何部件。 但 xt1不起作用。

当我把 UCSCTL6 -- XCAP 从0-3改变时,xt1仍然不起作用。 我还将 C1、C2更改为6pf、9pf、并且 XCAP 也要更改。 XT1仍然无法正常工作。 有人知道答案了吗?

问题2. 由于 xt1不起作用、内部振荡器被自动使用。 我将 ACLK 输出设置为 P1.0、将 SMCLK 输出设置为 P3.4、以便通过示波器测量这些时钟信号。

ACLK 的时钟源为 XT1、  MCLK 和 SMCLK 的时钟源为 DCOCLKDIV。

当我想要将 DCO 设置为 SMLK =10MHz、(UCSCTL1-DCORSEL=4;UCSCTL2--FLLD=4;UCSCTL2--FLLN=609;UCSCTL3---FLLREFDIV=2;REST 寄存器保持默认值)时、我会得到9.74Mhz。

当我递增 FLLN 时、SMCLK 不会改变。 是否有人知道原因并解释了如何设置 DCO 以及数据表第55页中 DCO 频率表的含义。 因为 我认为 DCOx 和 MODx 将由 DCO 调整 以稳定我想要的频率。

(注意:当我设置这些寄存器时,例如 UCSCTL1--DCORSEL=4;UCSCTL2--FLLD=16;UCSCTL2--FLLN=461;UCSCTL3---FLLREFDIV=12,SMCL 为 1.22MHz, 结果几乎正确,这意味 着 DCOCLK=1.66MHz ),DCOCLK=19.26000*格式的计数 应为 DCOCLK= 1.26000* 。

谢谢、

迪松  

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

    大家好、Clemens、

    以下是我的代码。

    void userts_UCS 初始化(void)

     
       UCS_clearFaultFlag (UCS DCOFFG);
       //设置 SMCLK =10MHz  结果=9.74MHz
        UCSCTL1_L = DCORSEL_4;                     //设置 FDCOCLK =4 12.3--28.2MHz
        UCSCTL2 = FLLD_1 + 0x261;                //设置 FDCOCLK =20.01032533333MHz FDCOCLK=10.0051666666MHz
       UCSCTL3_L = FLLREFDIV_1;

    void main (void)

       userts_Watchdog_init();
       userts_UCS 初始化();
       userts_gio_init ();

       while (1)                                 //连续循环
        {

        }

    请帮助我查找错误。

    您知道第二个问题的答案吗?

    谢谢

    迪松

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此代码不会尝试初始化 XT1。 总之、有一些示例程序(用于原始寄存器访问和 driverlib)展示了如何完成此操作。

    当 XT1不运行时、时钟系统改为使用 REFO (具有更宽松的容差)。

    DCO 频率表显示了由于 DCO 根本没有校准而导致的范围。 要获得某种固定频率、必须使用 FLL 和参考时钟。

    理论上、改变 FLLN 应该改变目标频率。 但您的代码不会尝试更改 FLLN。