打印

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

[复制链接]
3575|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 (17.33 KB )

搜狗截图15年11月24日1656_1.png

搜狗截图15年11月24日1716_3.png (25.62 KB )

搜狗截图15年11月24日1716_3.png

使用特权

评论回复
板凳
salon_liu|  楼主 | 2015-11-24 18:02 | 只看该作者
多谢,已设成72了。

使用特权

评论回复
地板
smilingangel| | 2015-11-26 14:45 | 只看该作者
GD32的要比stm32的大,这个在芯片的设计上就决定了。

使用特权

评论回复
5
baimiaocun2015| | 2015-11-26 14:59 | 只看该作者
楼上说额是,只不过两者的分频倍频机制的是一样的。

使用特权

评论回复
6
perry_peng| | 2015-11-30 12:43 | 只看该作者
本帖最后由 perry_peng 于 2015-11-30 12:46 编辑

gd32f150x PLL最大可以是32倍,用HSI是8/2 * 32 = 128MHz, :funk:可以超频玩。

使用特权

评论回复
7
shdjdq| | 2015-11-30 12:54 | 只看该作者
150最高能跑128?

使用特权

评论回复
8
perry_peng| | 2015-11-30 13:01 | 只看该作者
shdjdq 发表于 2015-11-30 12:54
150最高能跑128?

没试过,应该不行吧,文档上写了CK_SYS限制为72MHz max。

使用特权

评论回复
9
shdjdq| | 2015-11-30 13:31 | 只看该作者
130现在最快是72,标称是48;150标称是72

使用特权

评论回复
10
mgiga| | 2015-12-1 17:26 | 只看该作者
shdjdq 发表于 2015-11-30 13:31
130现在最快是72,标称是48;150标称是72

130的也能玩到72M,好吧。你是如何配置的,能给我发点参考代码么,谢谢了。QQ:2853951856

使用特权

评论回复
11
shdjdq| | 2015-12-2 07:47 | 只看该作者
STM32是4位PLL配置,GD32是5位PLL配置,72/4=18倍频。应该不难。

使用特权

评论回复
12
perry_peng| | 2015-12-4 09:04 | 只看该作者
我来发个PLL配置代码吧,全是参照Datasheet上写的。

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


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

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

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

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



我是新手,写得不太好,请勿见笑:lol。

使用特权

评论回复
13
shenmu2012| | 2015-12-10 16:49 | 只看该作者
芯片内置的时钟的是有限的。

使用特权

评论回复
14
firstblood| | 2015-12-11 17:50 | 只看该作者
这个理论上经过倍频的是可以达到108MHz的。

使用特权

评论回复
15
comeon201208| | 2015-12-12 18:03 | 只看该作者
这个需要根据实际的使用情况来确定的。

使用特权

评论回复
16
zheng522| | 2015-12-13 20:38 | 只看该作者
超频,不行吧,估计会乱的

使用特权

评论回复
17
波越| | 2015-12-13 20:53 | 只看该作者
一般都接外部时钟吧,用内部时钟精度不能保证

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

5

主题

7

帖子

0

粉丝