东风 发表于 2024-1-25 16:51:24

pll倍频作为主时钟输出

本帖最后由 东风 于 2024-1-25 17:30 编辑



使用STC32G12K128,配置使用外部晶振倍频

CLKSEL &= ~CKMS;            //选择PLL的96m作为pll的输出时钟
      USBCLK |= PCKI_D1;          //输入时钟1分频
      //???ˉPLL
      USBCLK |= ENCKM;            //使用pll倍频
      delay_ms(1);                //等待pll锁频
      CLKDIV = 16;                //分频

      CLKSEL &= ~MCKSEL_MSK;
      CLKSEL &= ~MCK2SEL_MSK;
      CLKSEL |= MCKSEL_XOSC;      //选择外部8M晶振
      CLKSEL |= MCK2SEL_PLLD2;    //pll输出2分频后作为主时钟
      
为什么p5.4脚输出是这个频率,怎么测试主时钟或者系统时钟多少

神农鼎 发表于 2024-1-26 09:47:02














神农鼎 发表于 2024-1-26 09:51:52

注意 给 STC32G12K128的 CPU 工作的时钟不能超过35MHz


东风 发表于 2024-1-26 10:09:38

本帖最后由 东风 于 2024-1-26 10:14 编辑

把代码改成这样

   CLKSEL &= ~CKMS;            //选择PLL的96m作为pll的输出时钟
      USBCLK |= PCKI_D1;          //输入时钟1分频
      //
      USBCLK |= ENCKM;            //使用pll倍频
      delay_ms(1);                //等待pll锁频
      CLKDIV = 0x04;                //分频

      CLKSEL &= ~MCKSEL_MSK;
      CLKSEL &= ~MCK2SEL_MSK;
      CLKSEL |= MCKSEL_XOSC;      //选择外部8M晶振
      CLKSEL |= MCK2SEL_PLL;    //pll输出作为主时钟

测下来频率22m,反推的话主时钟应该是88m,不是96m输入,虽然主频最高36m,,怎么不一样

神农鼎 发表于 2024-1-26 11:57:25

你直接将 高速IRC 烧录时设定到 35MHz 给 CPU 使用,
PLL输入源用 35M/4 = 8.75MHz
PLL时钟输出用8.75MHz * 12 = 105MHz 给 PWM 使用

东风 发表于 2024-1-26 13:35:18

我们项目对温度有要求,需要用外部晶振

_奶咖君_ 发表于 2024-1-26 13:38:20

东风 发表于 2024-1-26 13:35
我们项目对温度有要求,需要用外部晶振

话说不同温度下内部晶振会差很多么?测试过么

cdpzq 发表于 2024-1-26 14:11:55

_奶咖君_ 发表于 2024-1-26 13:38
话说不同温度下内部晶振会差很多么?测试过么

不用测,厂家手册中有IRC温漂图,查手册就可以.

xxkj2010 发表于 2024-1-26 14:21:35

神农鼎 发表于 2024-1-26 09:47


红色2那个位置上的频率如果不是12MHz(例如只有8MHz),后面能正常输出8倍频(例如64MHz)吗?

神农鼎 发表于 2024-1-26 14:29:35




PLL的时钟输入范围是:8MHz ~ 16MHz,
可以 *8 或 *12,
PLL的时钟输输出范围是:64MHz ~ 192MHz

页: [1] 2
查看完整版本: pll倍频作为主时钟输出