本帖最后由 yongruru 于 2019-5-31 23:02 编辑
每家的单片机都有一些各自的特点,类似的东西命名也会有所不同。在学习一款新的单片机时,总是有绊脚石的感觉。我们不妨从它的名称开始入手,和现有的知识形成关联,可能更容易串起来。 今天来了解下PIC的时钟,首先看时钟框图,我将其分成四部分来。分别是:1时钟源,2时钟源选择,3分频,4低功耗模式控制。
名词解释 EXTOSC 外部时钟 SOSC 针对32kHz晶振优化的辅助振荡器 LFINOSC 内部振荡器31kHz HFINTOSC 高精度内部振荡器,1-32MHz PLL 锁相环,倍频用,最高到32mHz NOSC (COSC) 振荡器源选择位 NDIV (CDIV) 分频比例选择位 FSCM 故障保护时钟监视器
SYSCMD 禁止/使能外设系统时钟
EXTOSC可以分为外部时钟(EC)和晶振,外部时钟分为高中低三种:ECH小于32MHz,ECM小于8MHz,ECL小于0.5MHz。外部时钟接在OSC1引脚上。
使用晶振或陶瓷谐振器又分为LP、XT、HS三种模式。LP适用于低速32.768kHz,电流消耗最低。XT为中速,100kHz-4mHz。HS为高速,大于4mHz,但最高不超过32mHz。有一点了解一下,在使用晶振时,需要等待时钟稳定,使用外部时钟时不需要。晶振需要连接OSC1和OSC2两个引脚 外部时钟源可以连接PLL做4倍频,PLL有输入输出范围,如下图,在其范围内使用。 SOSC叫辅助振荡器,其实就是32.768kHz的低速时钟。至于说的优化,不知道体现在哪里。 LFINOSC 内部低速振荡器,速度31kHz,其他家的32k的居多,PIC很独特。
HFINTOSC内部高速振荡器,速度选择1、2、4、8、12、16、32mHz,还可通过PLL2倍频,倍频后的速度可以是16、24、32mhz。
上面这些是时钟源,COSC,FSCM,CDIV这些可以理解为寄存器,PIC单片机还有一些配置字,也可以大体上理解为寄存器,只是访问的时间和存放的位置不同,类似于avr上的熔丝位。这里初学不做区分了。 NOSC振荡器源选择位,位于OSCCON1寄存器中。 NDIV分频比例选择位,也位于OSCCON1寄存器中。
第四部分是睡眠操作位对时钟相关的控制。
下图是Sleep对系统时钟的控制。
同理SYSCMD控制外设时钟禁止/使能。 当SYSCMD位0时,此时外设的时钟由sleep和idle控制位确定。如下图 这可以理解为,在睡眠状态下Sleep=1,系统时钟停止,Idle控制外设时钟开关。
有了大致了解,来看一看MCC中如何设置,和手册做一些对应。 Oscillator Select时钟源选择,下图为外部时钟 External Clock Select外部时钟源选择,EC的还是晶振的,速度不同,功耗不同。 External clock 外部时钟速度,不同的模式,会有一些限制,也需要和数据手册有一些对应。
Clock Divider 时钟分频。 其他时钟源都试一试,和手册对应起来,可以加深理解。
Registers是寄存器的详细配置,下图展示的OSCCON1的配置,其他的寄存器和和手册对应着学习配置。
以上是我对PIC时钟的学习,PIC单片机,MPLAB,MCC对我来说都是新的内容,我的思路是从单片机入手,逐渐熟悉MCC工具的使用,最后再实际使用中了解更多的MPLAB的技巧。很高兴与大家交流分享,一起成长。坛友 oxygenzz的**很好,我也有从中受益,推荐给大家。
|