个人觉得当入手一款新单片机时最先需要明白的是它的时钟部分,因为时钟就是单片机的心脏,不把心脏的具体过程搞明白,也就没法去正确的操作其外设部分。
Kinetis L系列的单片机时钟部分比较复杂,原因在于它有许多可选的时钟源与众多的时钟模式以及产生时钟的方式。它的时钟源和外设之间的关系主要是系统先将时钟产生好然后外设根据需要进行选择。它的主要时钟源为内部的Multipurpose Clock Generator(MCG)和System Oscillator。MCG主要由锁相环和锁频环构成通过其内部的参考时钟或外部的参考时钟产生相应的时钟,此模块产生的时钟源较多。System OSC则主要是通过XTAL和EXTAL引脚连接的外部晶振或共鸣器为MCU产生系统时钟,System OSC则主要能通过MCG对其进行控制如选择OSC的频率范围,增益控制以及外部是晶振还是外部时钟等。与时钟相关设置有较多的模块并且相互之间又具有一定的联系,主要用到的模块是MCG,SIM,OSC。MCG的主要功能是选择系统时钟源,SIM主要功能是为系统设置时钟分频数和相关外设的时钟门控选择。大部分的外设都是具有很多的可选时钟源,必须要通过SIM模块将其时钟门控选择打开,否则在不打开其时钟门控的情况下则会出现内核硬件故障错误。同样在对MCU相关时钟进行设置编程时一定要注意其数据手册上时钟输出的最大限制,一旦你超过其限值,可能出现无法预料的错误,如任何总线访问一个没有开启时钟的外设将产生一个终止错误!
下面根据数据手册对MCG模块进行简单的翻译和理解:
MCG主要由两部分组成一个是PLL,另一个FLL。FLL能通过外部或内部的参考时钟控制而PLL只能通过外部的参考时钟进行配置。MCG能选择PLL或FLL输出来作为系统时钟或者是选择内部或外部的参考时钟来作为系统时钟源。MCG模块结合一个晶体振荡器运行,它允许外部晶振,陶瓷振荡器,或其它的外部时钟源来作为其本身的参考时钟。MCG具有九种工作模式分别为FEI,FEE,FBI,FBE,PBE,PEE,BLPI,BLPE,STOP,如此多的工作模式同样就加大了操作的难度,但为芯片运行于低功耗方式下也提供了更多的选择。MCG具有很多的寄存器,在对它们进行操作下需要注意所有的寄存器只有在管理模式下才能写,在用户模式下写这些寄存器会导致总线错误,读操作则能在任何模式下进行。MCG的操作在IAR中提供的启动代码里已经将其进行了正确的设置与初始化可以直接进行使用,但是如果个人想重新编写的话,确实具有一定的工作量。
下面对SIM模块进行简单的翻译和理解:
SIM的功能具体要根据其寄存器进行,它的寄存器很多,但功能描述上还算清晰。它的主要特点为:
系统时钟控制
系统时钟分频值
时钟门控结构
ERCLK32K时钟选择
USB时钟选择
UART和TPM时钟选择
FLASH和系统RAM大小配置
USB稳压器配置
TPM外部时钟和输入捕获配置
UART接收/发送源选择/配置
同样SIM的寄存器也只有在管理模式下才能进行写操作,否则会导致总线错误。
下面对OSC进行简单描述:
OSC是一个晶体振荡器。结合外部晶体和共鸣器,为MCU产生参考时钟。它的关键特点为:
支持32K晶振(小范围模式)
电压和频率滤波器为了保证频率的稳定性
选择外部输入时钟信号直接从EXTAL绕过
一个时钟为了MCU时钟系统
两个时钟为了芯片外设能工作在停止模式
在使用外部晶振时一定要注意其和外部器件的连接方式,否则很可能出现无法起振或振荡器不稳定的情况。同样OSC也具有多种工作模式,也主要是为了MCU的低功耗运行吧!
Kinetis L的时钟部分比较复杂,这同样也成为了它的一个特色,据说,它的时钟部分和TI的很类似,不知道是不是相互借鉴。还是有很多地方需要总结,由于个人暂时只用到了这些,目前就写这么多吧
文章评论(0条评论)
登录后参与讨论