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.

FLL的问题



  __bis_SR_register(SCG0);                  // Disable the FLL control loop  

 UCSCTL0 = 0x0000;   // Set lowest possible DCOx, MODx  

 UCSCTL1 = DCORSEL_5;                      // Select DCO range 16MHz operation  

UCSCTL2 = FLLD_1 + 249;                   // Set DCO Multiplier for 8MHz   

                                          // (N + 1) * FLLRef = Fdco      // (249 + 1) * 32768 = 8MHz              // Set FLL Div = fDCOCLK/2

  __bic_SR_register(SCG0);                  // Enable the FLL control loop

请问一下这里的UCSCTL1 = DCORSEL_5;   怎么得到DCO最大为16MHz,求解。谢谢!

  • 这两张图基本就可以给出你答案了。

    (1)看第一张图。

    DCORSEL位于UCSCTL1,共3位,将DCO分为8个频率段。

    DCOx位于UCSCTL0共5位,将DCORSEL选择的频率段分为32个频率阶,每阶比前一阶高出约8%,DCOX和MODX系统可以自动调整,通常配置为0。

    设置频率范围的时候,假设你的倍频为F,那么必须有f(DCORSEL,0)<F<f(DCORSEL,31)

    (2)看第二张图,给出了最明确的范围。共有3大排线,从下往上,间隔分别为0.1、1、10,由此可以看出,DCORSEL=5时,中间频率大概为16MHZ。

    还可以看出,6时中心约为24,4时约为8,3时为4,2时为2,1时为1