当HSI被用于作为PLL时钟的输入时,系统时钟能得到的最大...

[复制链接]
4100|16
 楼主| salon_liu 发表于 2015-11-24 15:36 | 显示全部楼层 |阅读模式
当HSI被用于作为PLL时钟的输入时,系统时钟能得到的最大频率是多少?ST的是64MHz。GD的没有写啊。是不是108?

user110 发表于 2015-11-24 17:21 | 显示全部楼层
当HSI被用于作为PLL时钟的输入时,系统时钟能得到的最大频率是多少?ST的是64MHz,是因为此系列的ST芯片PLL倍频系数最大为16,所以此种情况下ST的最大系统时钟为64MHz, 具体见图片中的时钟树。

GD的以F10x的为例,PLL倍频系数最大为32,8/2*27 = 108,所以当HSI被用于作为PLL时钟的输入时,GD芯片的系统时钟最大为108MHz,具体见图片中的时钟树。
搜狗截图15年11月24日1656_1.png
搜狗截图15年11月24日1716_3.png
 楼主| salon_liu 发表于 2015-11-24 18:02 | 显示全部楼层
多谢,已设成72了。
smilingangel 发表于 2015-11-26 14:45 | 显示全部楼层
GD32的要比stm32的大,这个在芯片的设计上就决定了。
baimiaocun2015 发表于 2015-11-26 14:59 | 显示全部楼层
楼上说额是,只不过两者的分频倍频机制的是一样的。
perry_peng 发表于 2015-11-30 12:43 | 显示全部楼层
本帖最后由 perry_peng 于 2015-11-30 12:46 编辑

gd32f150x PLL最大可以是32倍,用HSI是8/2 * 32 = 128MHz, :funk:可以超频玩。
shdjdq 发表于 2015-11-30 12:54 | 显示全部楼层
150最高能跑128?
perry_peng 发表于 2015-11-30 13:01 | 显示全部楼层
shdjdq 发表于 2015-11-30 12:54
150最高能跑128?

没试过,应该不行吧,文档上写了CK_SYS限制为72MHz max。
shdjdq 发表于 2015-11-30 13:31 | 显示全部楼层
130现在最快是72,标称是48;150标称是72
mgiga 发表于 2015-12-1 17:26 | 显示全部楼层
shdjdq 发表于 2015-11-30 13:31
130现在最快是72,标称是48;150标称是72

130的也能玩到72M,好吧。你是如何配置的,能给我发点参考代码么,谢谢了。QQ:2853951856
shdjdq 发表于 2015-12-2 07:47 | 显示全部楼层
STM32是4位PLL配置,GD32是5位PLL配置,72/4=18倍频。应该不难。
perry_peng 发表于 2015-12-4 09:04 | 显示全部楼层
我来发个PLL配置代码吧,全是参照Datasheet上写的。

时钟源使用HSI。启用PLL (x18倍)。HSI / 2 * 18 = 72MHz
在GD32F150上测试过,可以正常工作。


  1. void System_Init (void)
  2. {
  3.   /* [31:26]      Reserved.
  4.      [25]      r  PLLSTB          PLL稳定标志, 0表示未稳定。
  5.      [24]      rw PLLEN    = 0,   PLL开关。
  6.      [23:20]      Reserved.
  7.      [19]      rw CKMEN    = 0,   关闭外部时钟(HSE) monitor.
  8.      [18]      rw HSEBPS   = 0,   Bypass HSE.
  9.      [17]      r  HSESTB          外部时钟(HSE)稳定标志, 0表示未稳定
  10.      [16]      rw HSEEN    = 0,   关闭外部时钟(HSE).
  11.      [15:8]    r  HSICALIB
  12.      [7:3]     rw HSIADJ
  13.      [2]          Reserved.
  14.      [1]       r  HSISTB          内部时钟(HSI)稳定标志, 0表示未稳定。
  15.      [0]       rw HSIEN           打开外部时钟(HSE).
  16.    */
  17.   RCC->GCCR = RCC_GCCR_HSIEN;                 // 启用内部8MHz RC oscillator。
  18.   while (!(RCC->GCCR & RCC_GCCR_HSISTB));     // 等待直到内部RC oscillator稳定。

  19.   /* [31]      rw PLLDV    = 0,   CK_OUT的输入分频系数CK_PLL divide by 2.
  20.      [30:28]   rw CKOUTDIV = 0,   CK_OUT的输出分频系数。
  21.      [26:24]   rw CKOUTSRC = 0,   CKOUT时钟输出PIN的输出频率(No clock selected).
  22.      [23:22]   rw USBPS    = 0,   USB时钟等于CK_PLL / 1.5
  23.      [27,21:18]rw PLLMF   = 0x12, PLL倍频系数是18x.
  24.      [17]      rw PLLPREDV = 0,   PLL时钟源选用HSE时钟(PLLSEL=1时有效).
  25.      [16]      rw PLLSEL   = 0,   PLL时钟源等于HSI时钟除2(8MHz / 2)
  26.      [15:14]   rw ADCPS    = 0,   ADC时钟等于CK_APB2 / 2.
  27.      [13:11]   rw APB2PS   = 0,   APB2时钟等于CK_AHB.
  28.      [10:8]    rw APB1PS   = 0,   APB1时钟等于CK_AHB.
  29.      [7:4]     rw AHBPS    = 0,   AHB时钟等于CK_SYS.
  30.      [3:2]     r  SCSS            System clock switch status(Read only).
  31.      [1:0]     rw SCS      = 0,   CK_SYS时钟来自CK_HSI
  32.    */
  33.   RCC->GCFGR = 0x808000C;

  34.   RCC->GCCR |= RCC_GCCR_PLLEN;                // 启用PLL。
  35.   while(!(RCC->GCCR & RCC_GCCR_PLLSTB));      // 等待PLL稳定。

  36.   RCC->GCFGR |= RCC_GCFGR_SCS_PLL;            // 切换CK_SYS时钟为CK_PLL
  37.   while ((RCC->GCFGR & RCC_GCFGR_SCSS) != RCC_GCFGR_SCSS_PLL);  // 等待切换完成。
  38. }



我是新手,写得不太好,请勿见笑:lol。
shenmu2012 发表于 2015-12-10 16:49 | 显示全部楼层
芯片内置的时钟的是有限的。
firstblood 发表于 2015-12-11 17:50 | 显示全部楼层
这个理论上经过倍频的是可以达到108MHz的。
comeon201208 发表于 2015-12-12 18:03 | 显示全部楼层
这个需要根据实际的使用情况来确定的。
zheng522 发表于 2015-12-13 20:38 | 显示全部楼层
超频,不行吧,估计会乱的
波越 发表于 2015-12-13 20:53 | 显示全部楼层
一般都接外部时钟吧,用内部时钟精度不能保证
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:工业控制:https://shop244451101.taobao.com/

5

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部