基于MC68HC908KX2的ICG模块的应用研究
扫描二维码
随时随地手机看文章
从8位单片机诞生至今,已近30年,由于芯片技术的发展使得单片机处理速度越来越快。 MPU发展中表现出来的速度是以时钟频率越来越高为标志的,而单片机则有所不同,为提高单片机抗干扰能力,降低噪声,降低时钟频率而不牺牲运算速度是单片机技术发展的追求。一些8051单片机兼容厂商改善了单片机的内部时序,在不提高时钟频率的条件下,使运算速度提高了很多,Motorola单片机则使用了锁相环技术或内部倍频技术使内部总线速度大大高于时钟产生器的频率。 例如MC68HC08单片机使用4.9 MHz外部振荡器而内部时钟达32 MHz,而M68K系列32位单片机使用32 kHz的外部振荡器频率可实现内部时钟达16 MHz以上。Motorola单片机突出的特点之一是在同样速度下所用的时钟频率较Intel类单片机低很多,因而使得高频噪声低,抗干扰能力强,更适合用于工控领域及恶劣的环境。而作为8位单片机家族中的一员,MC68HC908KX2提供了ICG(内部时钟发生器)模块,无需外接任何时钟产生器件的情况下,通过软件设置即可实现所需的时钟信号。
1 ICG模块的特点及设置方法
在无需任何外部元件情况下,MC68HC908KX2芯片的ICG模块能够给微控制器提供稳定的时钟源,ICG模块通过CGMXCLK引脚为系统监控模块、低电压禁止模块和其他模块提供振荡时钟输出。ICG模块产生的时钟信号也提供给系统集成模块,用于产生总线时钟。此外,ICG模块还产生时基时钟,该信号被用于时基模块。
1.1 ICG模块的特点
a) 可选的外部时钟信号发生器,一个引脚接外部时钟源或两个引脚接晶振,端口引脚可实现多路转换。
b) ICG以正常频率(307.2±25%)kHz的整数倍输出可编程的频率。
c) 频率调整寄存器可以2%变化量对频率进行调整。
d) 总线时钟通过软件选择内部或外部时钟源,总线频率范围是:(76.8±25%)kHz~(9.75±25%)MHz,增加率为76.8 kHz。
e) 对内部和外部时钟源都可实现时钟监控。
1.2 ICG模块的设置方法
ICG模块通过设置可产生(307.2±25%)kHz的低频时基时钟信号IBASE,然后通过设定ICG模块的频率倍数寄存器(ICGMR)的数值,得到系统所需的时钟信号ICLK。
使用内部时钟模块通过以下步骤进行:
1) 转换时钟源
在两个时钟源都处于使能和稳定状态时,可以从一个时钟源转到另一个时钟源。转换过程为:使能所要采用的时钟源;等待该时钟源稳定;转换时钟;禁止前一个时钟源。该实现过程的汇编代码为(以从内部时钟源转到外部为例):
2) 使能时钟监控电路
在许多应用中,需要时钟监控电路在某个时钟源未激活的状态下通知系统自动使用另一个已经激活的时钟源,避免使系统运行发生故障。使用时钟监控模块的前提是ECGON和ICGON位都置1,其设置过程为:使能可用的时钟源;等待两个时钟源稳定;如果需要,转换时钟源;使能时钟监控;使能时钟监控中断。具体实现的代码如下:
3) 量化数控振荡器的误差
数控振荡器主要包括二进制权值分配器、可变延迟时间的振荡环、振荡环精确调整电路3个子模块。以上每个模块都影响内部时钟的时钟周期,因为这些模块受数字滤波器的输出寄存器DDIV和DSTG的控制。通过对这两个寄存器的设置,可实现对输出时钟信号ICLK的值进行相应的调整。
4) 改变内部时钟频率
某些情况下可能需要改变内部时钟频率。例如,如果系统复位时不能提供正确的频率,或者在低电压模式下系统时钟变慢,必须通过变程修改内部时钟倍频因子N的值改变内部时钟的频率。这时需注意,改变内部时钟频率之前必须先禁止时钟监控模块。改变内部时钟频率的步骤如下:通过读CMF位的值确定是否存在时钟监控中断;关闭时钟监控模块;如果需要,转换到外部时钟源;改变N值;如果需要,转换回到内部始时钟源;如果需要,打开时钟监控模块。
5) 开始正确频率设置的时间
由于ICLK的值取决于DCO的输出值,当某些操作条件发生改变时,内部时钟不能马上稳定下来,ICLK将暂时以不正确的时钟工作。ICLK需要一定的调整时间才能达到正确时钟周期。达到正确时钟周期所需要的时间为:
式中:τ1,τ2分别为调整前、后的时钟周期值,令τ15=|44N(τ1-τ2)| ,则常见的时钟周期调整表见表1。
6) 调整内部时钟发生器的频率
由于数据处理、电压和温度等原因未经过调整的低频时基时钟信号IBASE将会发生±25%的频率波动,通过改变内部时钟电路的比较电容器的值可以将频率波动值限定在±2%的范围内。设置TRIM寄存器的值就可以改变比较电容器的值,TRIM寄存器的默认值是$80即128个单位,对应的默认电容值为512,每增加或减少1个单位,可对未调整频率实现±0.195%的调整。
2 宝马汽车故障诊断与复位子系统设计
由于本系统检测范围包括对宝马汽车大部分部件的检测及故障恢复,整个系统构成较复杂,因此,在本文中为了说明MC68HC68HC908KX2单片机ICG模块的应用,选择本系统的一个子系统加以说明。
2.1 硬件设计
本子系统实现的功能为机油保养归零、气囊故障修复及运行时间归零。硬件主控电路如图1所示。
控制核心采用8位单片机MC68HC908KX2芯片,通过串行接口线与汽车内的CPU进行通信,并用通用I/O口PTA和PTB分别实现键盘输入和输出显示功能。由于该单片机采用5 V供电,而汽车电路工作电压为12 V,所以本子系统需要设计专门的接口电路实现与汽车的通信,电路见图2。图中,RXD和TXD分别连接单片机的串行输入与输出端,汽车的串行输入、输出数据通过单K线传送给单片机。
2.2 软件设计
利用指令不断扫描键盘接口线(PTA1,PTA2),若按下的是通信键则从固定存储区取固定的oil resct编码发送出去,同时在发送数据期间通信指示灯不停闪烁3 s,如果按下的是功能选择键,则time inspection,odo inspection,oil reset指示灯依次循环点亮,选择相应功能,等待通信键按下,如果按下了通信键,就发送相应清故障数据。
在程序中,根据本系统的实际需要设置:ICGCR、ICGMR、ICGTR及系统配置寄存器CONFIG的值。系统主要源代码为:
3 结束语
本文介绍了新型单片机芯片MC68HC908KX2内部时钟模块在宝马汽车诊断控制系统中的应用,由于采用了内部时钟模块,省略了外部时钟电路,从而大大简化了系统的硬件设计。实践证明,在恶劣电磁环境中系统工作正常,抗干扰性能力得到很大提高,测得的汽车故障代码数据准确可靠。