单片机与arm对比学习-----时钟(一)
我刚开始接触的架构是:51单片机。
是单片机把我领到了电子世界,把自己的思想注入到单片机里,就可以运行起来。就像“hello world”一样经典,我点亮了led 流水灯。到了好久才反过来想想,应该总结一下。但是我有这个想法的时候,我已经接触到了stm32 和arm9等架构核。所以我之前的想法就变成了把这几样总结一下吧。是不是很好啊,大家一起来找错。。。。
51单片机、stm32、s3c2440 ----->我们开始吧。注:图片来源于网络和手册,作者有不允许请给我留言告之,我进行处理。
第一个 《时钟》
51单片机
51单片机的时钟是不需要单独配置的,接上晶振,就开始起飞了。所以我学习单片机的时候,从来没有考虑过时钟的配置问题。好吧,接触到stm32 后,我就晕在了时钟树上。那下面我们再贴出来stm32f103 的时钟树。
stm32f103
从图中可以看到。一定拿起手指,慢慢的找,慢慢顺腾摸瓜!
外部输入时钟有两个:OSC_OUT/OSC_IN(HSE) 和 OSC32_OUT/OSC32_IN (LSE)
内部提供时钟有两个:8MHz HSI RC (HSI) 和 LSI RC 40kHz (LSI)
外部输出时钟有一个:MCO
找到一条路,做到顺腾摸瓜。下面要摸藤路线需要包括如下的模块。
1、
2、
3、
4、
模块PLLXTPRE
输入:第一方式:HSE 不分频,第二种方式:HSE 2分频。
输出:给 PLLSRC 提供时钟
模块PLLSRC
输入:第一种方式:PLLXTPRE 输出的时钟 第二种方式: HSI 的二分频时钟
输出:给PLLMUL 提供时钟
模块PLLMUL (是乘法,是倍频啊!!)
输入:PLLSRC 提供时钟
输出:PLLCLK
模块SW
输入:第一种方式:HSI 第二种方式:HSE 第三种方式:PLLCLK
输出:SYSCLK ---> AHB 和 I2SCLK
AHB 又分给APB 提供外设时钟,FCLK cortex 时钟 HCLK DMA等时钟。
每一个模块的时钟选择,时钟分频都有各个寄存器控制,我们只需要找到对应的寄存器控制就可以了。至于调整时钟的好处,我们就不在这里谈了,这个博客目的是搞通时钟树。
相信大家捋出上面的效果,这个时钟树也就OK 了。不难,拿出耐心就可以搞定。
s3c2440
把stm32 的时钟树研究透了,就会发现s3c2440 的时钟树比stm32 的简单。并且很容易就发现了每一个时钟的用处。
在这里就列出来关键词:
OSC 经过 OM[3:2] 获得 MPLLin 到达 MPLL (倍频) 生成MPLL 到 CLKCNTL 生成 FCLK 经过分频 生成 HCLK 、PCLK。
FCLK , HCLK ,PCLK 进入POWCNTL 后,又有UCLK 生成出来。POWCNTL 控制频率就是控制功耗啊。
不带着往下走了。脑洞大开吧。。。。其实就是这么简单。时钟搞定了,基本上整个芯片的外围有什么模块就清楚了,因为他们都在时钟树上画着。哈哈哈哈
最后:还有疑问的给我留言,我们一起研究探讨。