前面的文章有介绍过ARM内核的几款单片机(或MCU,或MPU),现在在嵌入式领域,早期的各种小众的内核基本上被淘汰,或者主导的公司放弃掉了,现在主流还是ARM,且RISC-V也在逐步增长。如果现在计划学习和熟悉嵌入式系统,那么选择ARM和RISC-V的主控芯片开始是比较合适的。而对单片机(或MCU,或MPU)掌握并通过项目实践精通了之后,如果实际项目用到其他内核的芯片的选型和开发,切换起来也是很快速的。
其实在ARM和RISC-V之前,嵌入式(或者说是单片机)开发,以前是51内核的芯片最流行,现在有些学校教材或者项目可能还是51内核的。51内核单片机以8位微处理器为主,在计算执行比较简单的应用中,能够将成本做到非常低廉,所以市场上有些产品甚至是维护中的项目,还是有些是51内核单片机的。
所以不论是单片机、或MCU、或MPU,还是CPU,其核心就是计算机系统的计算执行单元,不同的名称有的是因为时代发展演进出来的名字,有的是表示其计算处理的能力一种简单划分,但是并没有完全能够明确的界限,更多的时候是在用于做比较的语境下。除了计算处理能力的不同,另外就是芯片设计和制造的复杂程度不同,有的电路比较少,有的则是非常复杂,需要采用的工艺也需要最尖端才行。
本文以回顾的视角,从开发的角度对一片之前实际用来做过项目开发的51内核的单片机进行介绍,对于熟悉的是一种回顾,对于没了解过的,可以当做是以往开发的故事来看。
本文目录
Contents
1
关于C8051F320
2
C8051F320的时钟工作机制
01
关于C8051F320
0****2
C8051F320的时钟工作机制
C8051F320的时钟:可编程内部时钟+外部晶振驱动电路+4倍时钟乘法器。C8051F320的时钟分为系统时钟SYSCLK和USB时钟USBCLK。
可编程内部时钟:这是系统复位后的默认时钟,通过OSCICL寄存器编程。
f_BASE是复位后的内部时钟,C8051F320是12MHz,deta_T是时钟周期。系统时钟可以由内部时钟1分频/2分频/4分频/8分频,具体的分频设置在OSCICN寄存器的IFCN位,系统复位后默认使用的是8分频。
OSCICL复位值会使内部时钟频率为12MHz(12MHz适用于USB通信),而系统时钟复位后默认是对内部时钟进行8分频,即1.5MHz。可以通过软件修改内部时钟值,但修改后就不适合用于USB通信了。
内部时钟有挂起模式,当往OSCICN的SUSPEND位写1后内部时钟就挂起了。
外部时钟驱动电路:可以是外部晶振,陶瓷谐振器,电容或RC网络。CMOS时钟也可以提供时钟输入。使用外部时钟时需要配置对应的端口引脚的功能。
4倍时钟乘法器:由名字可知,能将12MHz的时钟乘以4倍变成48MHz,这个时钟是用于全速USB通信的。当然对这个乘以4倍的时钟分频后也可以为系统提供时钟的。4倍时钟乘法器的配置要通过CLKMUL寄存器。如果用外部时钟作为4倍时钟乘法器的源,则要保证外部时钟足够稳定。
系统时钟和USB时钟的选择:配置CLKSEL寄存器的CKLSL[1:0]位决定了使用哪个时钟源作为系统时钟。配置CLKSEL寄存器的USBCLK[2:0]位决定了使用哪个时钟源作为USB时钟(USB0工作于全速模式时需要48MHz时钟,工作于低速模式时需要6MHz时钟)。
在了解了C8051F320的基本功能和配置,知道了其时钟如何工作后,其实就可以设计制作C8051F320的最小系统了,最小系统的PCB设计制作出来后,烧录简单基本的固件后,芯片就能初始化并运行程序了。如果还需要其处理更多特定的事务,就还需要在软硬件上进行完善和升级设计。
全部0条评论
快来发表一下你的评论吧 !