SYSCLK 系统时钟,最大72MHz.
HCLK :AHB总线时钟,由系统时钟SYSCLK 分频得到,一般不分频,等于系统时钟经过总线桥AHB–APB;
通过设置分频,可由HCLK得到 PCLK1与PCLK2时钟;PCLK2是高速时钟,最高可达72MHz,而PCLK1是低速时钟,最大36MHz。PCLK2对应APB2外设。PCLK1对应APB1外设。
APB2负责AD,I/O,串口1,高级定时器TIM
APB1负责DA,串口2,3,4,5,普通定时器TIM, USB , IIC , CAN
选择低功耗的MCU
众所周知,芯片主频越高,功耗越大。降功耗方案一般不使用外部晶振,使用内部晶振,频率选择常用的32768Hz虽然低,却只能得到秒一级别的精度,想得到ms或us级别的精度,大于1M的频率少不了。
睡眠模式是降功耗的主要方式,MCU可以睡眠模式睡眠,模块也可以睡眠。在外部触发唤醒MCU之后,MCU再唤醒功耗更大的模块,完成功能或通信后,马上又进入睡眠,总之进入睡眠状态自然是省电的。一些模块存在多种睡眠模式,都是为了在不影响功能的前提下更加灵活地来降低功耗。
在使用稍复杂一点的MCU时,它本身所带的外设,未使用时一定关闭。使用简单的MCU时,可能所有的功能都是引脚模拟实现,如IIC,SPI,Uart之类,不过也要注意,进入睡眠停止工作之前,应将与之对应的传感器等器件关闭或使其进入PowerDown Mode,唤醒后再做初始化、配置的工作。
前面提到睡眠之前,关闭外部器件,你以为这样就可以了,其实未必。如果某些引脚接了外部上拉电阻,而MCU睡眠时该引脚置低,这样一来,有压差,有电阻,就形成了不必要的功耗。这点容易被忽略,所以各个引脚一定要根据外部电路合理配置。
所谓间歇工作,就是劳逸结合,工作休息交替进行,采用切电源的方式,开和关交替执行,这样该器件的功耗就降了一半。如果某器件上电后,需要预热一段时间,那这个方法就行不通了。还有一些电平驱动的元件,给一定占空比的脉冲就可以工作,还可以根据电压调整占空比,平衡负载,实现电源最大利用率,不过这又是一项复杂的工作了。
单片机晶振是单片机内部电路产生单片机所需的时钟频率的部件,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。晶振结合单片机内部电路产生单片机所需要的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行的速度就越快,单片机的一切指令的执行都是建立在单片机晶振提供的时钟频率。
单片机晶振一般采用三端式(考毕兹) 交流等效振荡电路;实际的晶振交流等效电路中,其中Cv是用来调节振荡频率,一般用变容二极管加上不同的反偏电压来实现,这也是压控作用的机理;把晶体的等效电路代替晶体后。其中Co,C1,L1,RR是晶体的等效电路。单片机工作时,是一条一条地从RoM中取指令,然后一步一步地执行。单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准。
分析整个振荡槽路可知,利用Cv来改变频率是有限的,决定振荡频率的整个槽路C=Cbe,Cce,Cv三个串联后和Co并联再和C1串联。可以看出:C1越小,Co越大,Cv变化时对整个槽路的作用就越小。因而能"压控"的频率范围也越小。实际上,由于C1很小(1E-15量级),Co不能忽略(1E-12量级,几PF)。所以,Cv变大时,降低槽路频率的作用越来越小,Cv变小时,升高槽路频率的作用却越来越大。这一方面引起压控特性的非线性,压控范围越大,非线性就越厉害;另一方面,分给振荡的反馈电压(Cbe上的电压)却越来越小,最后导致停振。通过晶振的原理图你应该大致了解了晶振的作用以及工作过程了吧。采用泛音次数越高的晶振,其等效C1就越小;因此频率的变化范围也就越小。>单片机晶振的必要性
简单地说,没有晶振,就没有时钟周期,没有时钟周期,就无法执行程序代码,单片机就无法工作。晶振就是心跳
单片机晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。
晶振通常与锁相环电路配合使用,以提供系统所需的时钟频率。如果不同子系统需要不同频率的时钟信号,可以用与同一个晶振相连的不同锁相环来提供。
在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。高级的精度更高。有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。
单片机的外部晶振稳定,受温度,湿度等环境因素影响比内部振荡器小,精度比较高。而且当设计需要降低功耗时,比如说便携式仪表等,就需要外设晶振,因为内部振荡器不能根据需要停止,而外部晶振可以适时停止,从而进入休眠状态,降低功耗。
而单片机的内部晶振一般不够准确,误差比较大。但是单片机的内部晶振和外部晶振的作用都是一样的,给系统提供时钟。如果对频率要求不高的话(比如不涉及串口通信和精确定时等的话),用内部晶振就足够了,并且这样成本还低。内部时钟,频率受温度等其它影响,但是能省下晶振的钱,还有2个I/O.所以,如果对频率要求不高,一般是优先选用内部振荡。 假如你想要省电,用了SLEEP,那你就不能用内部振荡了,内部振荡会停止!