标题: GD32单片机外接16Mhz晶振,计算后倍频是小数,如何解决? [打印本页]

作者: hcf007    时间: 2021-10-5 17:45
标题: GD32单片机外接16Mhz晶振,计算后倍频是小数,如何解决?
#if (defined(GD32F10X_MD) || defined(GD32F10X_HD) || defined(GD32F10X_XD))
    /* select HXTAL/2 as clock source */
    RCU_CFG0 &= ~(RCU_CFG0_PLLSEL | RCU_CFG0_PREDV0);
    RCU_CFG0 |= (RCU_PLLSRC_HXTAL | RCU_CFG0_PREDV0);

    /* CK_PLL = (CK_HXTAL/2) * 27 = 108 MHz */
    RCU_CFG0 &= ~(RCU_CFG0_PLLMF | RCU_CFG0_PLLMF_4);
    //RCU_CFG0 |= RCU_PLL_MUL27;
//这里CK_HXTAL为16MHz,根据公式 CK_PLL = (CK_HXTAL/2) * 27 = 108 MHz
所以计算倍频得13.5,那么应该选RCU_PLL_MUL13还是RCU_PLL_MUL14呢?
                RCU_CFG0 |= RCU_PLL_MUL13;//??RCU_PLL_MUL14??


作者: yzwzfyz    时间: 2021-10-6 10:26
无需纠结,实际使用晶振,几乎不可能是准确的16M,总是有误差的。只要能将误差控制在可接受范围内即可。
作者: 188610329    时间: 2021-10-7 00:17
比较不容易理解:
CK_HXTAL为16MHz,
根据公式 CK_PLL = (CK_HXTAL/2) * 27 = 108 MHz

(CK_HXTAL/2) * 27
=> 16/2*27 = 8*27 = 216  怎么等于的 108 呢?
作者: hcf007    时间: 2021-10-8 09:30
188610329 发表于 2021-10-7 00:17
比较不容易理解:
CK_HXTAL为16MHz,
根据公式 CK_PLL = (CK_HXTAL/2) * 27 = 108 MHz

27就是倍频,是没修改过的,这样求CK_PLL = (CK_HXTAL/2) * RCU_PLL_MUL = 108 MHz,CK_HXTAL=16,
则RCU_PLL_MUL =108/(16/2)=13.5,所以就很纠结是要14倍频还13倍频




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1