34
第第第第 GP32 第第第第第第第 主主主主 CONFIG 主主主 主主主主主主 CGM 主主主主 PLL 主主 主主主主 主主主主 主主主主主主主主主主主 主主主主 MON

第十二章 GP32 的其他功能模块

  • Upload
    naomi

  • View
    79

  • Download
    5

Embed Size (px)

DESCRIPTION

《 嵌入式应用技术基础教程 》 课件. 第十二章 GP32 的其他功能模块. 主要内容 CONFIG 寄存器 时钟发生模块 CGM 与锁相环 PLL 中断 复位与系统集成模块 低功耗模式与看门狗功能 监控模块 MON. 《 嵌入式应用技术基础教程 》 课件. 12.1 CONFIG 寄存器. ( 1 ) CONFIG2 CONFIG2 寄存器只有低两位有定义, CONFIG2 的地址是: $001E ,定义为:. - PowerPoint PPT Presentation

Citation preview

Page 1: 第十二章  GP32 的其他功能模块

第十二章 GP32 的其他功能模块

主要内容 CONFIG寄存器 时钟发生模块CGM与锁相环PLL 中断 复位与系统集成模块 低功耗模式与看门狗功能 监控模块MON

Page 2: 第十二章  GP32 的其他功能模块

12.1 CONFIG寄存器

12.1 CONFIG 寄存器( 1 ) CONFIG2 CONFIG2 寄存器只有低两位有定义, CONFIG2 的地址是: $001E ,定义为:

数据位 D7 D6 D5 D4 D3 D2 D1 D0

定义 OSCSTOPENB SCIBDSRC

复位 0 0 0 0 0 0 0 0

D1—OSCSTOPENB 位:振荡器 STOP 模式下允许位。 OSCSTOPENB=1 ,振荡器在 STOP 模式下也正常工作。这一点对于时基模块在 STOP 模式下产生周期性的唤醒非常有用。 OSCSTOPENB=0 ,在 STOP模式下禁止振荡器工作。 D0—SCIBDSRC 位: SCI 波特率时钟源控制位。 SCIBDSRC 控制SCI 的时钟源。这个位的设置影响 SCI 操作的频率。 SCIBDSRC=1 , SCI 用内部总线时钟,反之, SCI 用外部振荡器时钟。

Page 3: 第十二章  GP32 的其他功能模块

12.1 CONFIG寄存器

( 2 ) CONFIG1 CONFIG1 的地址是: $001F ,定义为:

数据位 D7 D6 D5 D4 D3 D2 D1 D0

定义 COPRS LVISTOP LVIPWRD LVIRSTD LIV50R3 SSREC STOP COPD

复位 0 0 0 0 0 0 0 0

D7—COPRS 位: COP 速度选择位。 COPRS 选择 COP 溢出的范围。 D6—LVISTOP 位: STOP 模式下 LVI 允许位。 D5—LVIRSTD 位: LVI 复位禁止位。D4—LVIPWRD 位:为 LVI 电源禁止位。 D3—LVI5OR3 位: LVI 的 5V 或者 3V 操作模式选择位。 D2—SSREC 位:快速 STOP 模式恢复选择位。 D1—STOP 位: STOP 指令允许位。 STOP 位决定是否允许 STOP 指令。 D0—COPD 位: COP 禁止位。 COPD 位决定是否禁止 COP 模块。返回

Page 4: 第十二章  GP32 的其他功能模块

12.2 时钟发生模块CGM与锁相环PLL

12.2 时钟发生模块 CGM 与锁相环 PLL12.2.1 锁相环 PLL 的基本概念 ( 1 )锁相技术与频率合成技术 ① 锁相技术:就是实现相位自动控制的一门科学,利用它可以得到频带范围宽、波道多、稳定度高、精度高的频率源。 ② 频率合成技术:就是利用一个或几个具有高稳定度和高精度的频率源(一般由晶体振荡器产生),通过对它们进行加减(混频),乘(倍频),除(分频)运算,产生大量的具有相同频率稳定度和频率精度的频率信号。锁相环频率合成技术在通讯、雷达、导航、宇航、遥控遥测、电子技术测量等领域都有广泛的应用。 为了得到稳定度高、精度高的频率源,通常采用频率合成技术。频率合成技术主要有两种:直接频率合成技术和间接频率合成技术。

Page 5: 第十二章  GP32 的其他功能模块

12.2 时钟发生模块CGM与锁相环PLL

( 1 )锁相技术与频率合成技术 ③ 直接频率合成技术:是将一个或几个晶体振荡器产生的频率信号通过谐波发生器产生一系列频率信号,然后再对这些频率信号进行倍频、分频和混频,最后得到大量的频率信号。 其优点是:频率稳定度高,频率转换时间短(可达微秒量级),能做到很小的频率间隔。缺点是:系统中要用到大量的混频器、滤波器等,从而导致体积大,成本高,安装调试复杂,故只用于频率精度要求很高的场合。 ④ 间接频率合成技术:是利用锁相技术来产生大量的具有高稳定度和高精度的频率源。由于间接频率合成器的关键部件是锁相环,故通常称为锁相环频率合成器。由于锁相环频率合成器的主要部件都易于集成,一般只加一个分频器和一个一阶低通滤波器,故其具有体积小、重量轻、成本低、安装和调试简单等优点。锁相环频率合成器在性能上逐渐接近直接频率合成器,所以它在电子技术中得到了日益广泛的应用,并在应用中得到迅速发展。

12.2.1 锁相环 PLL 的基本概念

Page 6: 第十二章  GP32 的其他功能模块

12.2 时钟发生模块CGM与锁相环PLL

( 2 )锁相环频率合成器的基本原理

锁相环频率合成器的原理框图

基准频率源基准频率源 鉴相器 低通滤波器 压控振荡器

反馈分频器

fr ud uo fo

ff

12.2.1 锁相环 PLL 的基本概念

Page 7: 第十二章  GP32 的其他功能模块

12.2 时钟发生模块CGM与锁相环PLL

锁相环频率合成器的各个部件 基准频率源:基准频率源提供一个稳定频率源,其频率为 fr ,一般用精度很高的石英晶体振荡器产生,是锁相环的输入信号。 签相器:签相器是一个误差检测元件。它将基准频率源的输出信号 fr 的相位与压控振荡器输出信号 fo 的相位相比较,产生一个电压输出信号 ud ,其大小取决于两个输入信号的相位差。 低通滤波器:低通滤波器的输入信号是签相器的输出电压信号 ud ,经过低通滤波器后 ud 的高频分量被滤除,输出控制电压 uo去控制压控振荡器。 压控振荡器( VCO ):压控振荡器的输出信号频率 fo 与它的输入控制电压 uo 成一定比例,而分频器将锁相环的输出信号 fo 反馈给签相器,形成一个负反馈,从而使输入信号和输出信号之间的相位差保持恒定。 反馈分频器:分频器为环路提供一种反馈机制,当分频系数 N=1 时,锁相环系统的输出信号频率 fo 等于输入信号频率 fr : fo=fr 信号锁定后有: fo=ff=fr 当分频器的分频系数 N>1 ,有: fo=N·ff 即 ff = fo/ N 环路锁定后有: ff = fr fo=N·ff = N·fr

Page 8: 第十二章  GP32 的其他功能模块

12.2 时钟发生模块CGM与锁相环PLL

( 1 ) CGM 内部结构框图12.2.2 MC68HC908GP32 的 CGM结构及外部连接

CGMVCLK 时钟选择电路

CGMOUT

SIM

CGMRCLK

基准分频器

压控振荡器VCO滤波器

鉴相器

反馈分频器

CGMRDV

CGMVDV

PLL电路

晶体振荡电路

CGMXFCVDDA

VSSA

OSC1

OSC2

CGMXCLK

SIM、 TBM、 ADC 等

Page 9: 第十二章  GP32 的其他功能模块

12.2 时钟发生模块CGM与锁相环PLL

CGM 内部结构晶体振荡电路:晶体振荡电路通过外接石英或陶瓷振荡器产生稳定不

变的时钟信号 CGMXCLK, CGMXCLK直接输出给系统集成模块 SIM和AD转换器。同时也输出到时钟选择模块。 CGMXCLK经过缓冲后输出到锁相环频率合成器,作为 PLL信号源,这一路信号称为 CGMRCLK。

锁相环频率合成器: PLL电路通过压控振荡器( VCO )产生 CGMVCLK信号,输出到时钟选择电路。其频率可通过软件编程控制。图中 CGMXFC 为接滤波电路的引脚。

时钟选择电路:时钟发生模块的输出信号 CGMOUT有两种来源:直接采用晶振电路产生的 CGMXCLK信号二分频,也可以采用压控振荡器( VCO )产生 CGMVCLK信号二分频,时钟选择电路可以通过软件编程决定采用那种信号来源。

Page 10: 第十二章  GP32 的其他功能模块

12.2 时钟发生模块CGM与锁相环PLL

( 2 ) CGM 的 I/O 信号I/O 信号 符号 名称 基本含义

外部硬件引脚信号

VDDA

VSSA PLL 电源、地 分别与系统的电源和地相接,在布线时 VDDA 应该加滤波电容,同时尽量靠近芯片。

OSC1 晶振

输入引脚 OSC1 将引脚的输入信号连至内部晶振电路的反向放大器。

OSC2 晶振

输出引脚 OSC2 引脚输出经过反向的输入信号。若采用外接信号源作为时钟输入, OSC2 引脚可以悬空,也可以连接到其他 MCU 的 OSC1 输入引脚。

CGMXFC 外部滤波电容引脚

CGMXFC 为 PLL 电路环路滤波器所必需的,连接一个外接滤波网络。为了减小干扰,提高系统电磁兼容性,在元件布局上,滤波网络应该尽量靠近MCU ,用最短的连线连接,同时远离其他布线。

来自 SIM SIMOSCEN 振荡器允许 来自系统集成模块 SIM ,允许 PLL 和晶振电路 来自 CONFIG2 OSCSTOPENB

振荡器停止模式允许位 OSCSTOPENB 是 CONFIG 寄存器中和晶振相关的控制位。若置位,则晶振电路在 STOP 模式下可继续工作;若复位(缺省情况),则晶振电路的行为受 SIMOSCEN 标志位控制,在 STOP 模式下将关闭晶振电路。

输出CGMXCLK

(给SIM 、 TIM 、

ADC ) 晶体频率输出信号

CGMXCLK 是晶振电路的输出信号,频率等于石英晶体的频率。信号的精度和质量取决于外接晶体和外界因素,当然,在系统启动阶段, CGMXCLK 是不稳定的

输出 CGMOUT(给 SIM )

CGM 的输出

CGMOUT 是时钟发生模块的输出信号,信号送入 SIM 模块, SIM 模块产生 MCU 的时钟信号。 CGMOUT 占空比为 50% ,经过 2 分频后产生总线时钟, CGMOUT 的来源可编程选定为晶振电路输出 CGMXCLK 的二分频或 VCO 电路的输出 CGMVCLK 二分频

Page 11: 第十二章  GP32 的其他功能模块

12.2 时钟发生模块CGM与锁相环PLL

( 3 ) CGM 的外部连接0.1μ+5V

0.47μ 0.01μ10KPLL滤波

MC68HC908GP32引脚 1 2 3 4 5含义 VDDA VSSA CGMXCLK OSC2 OSC1

C1 C2RS

晶振电路

RBX1

在典型应用情况下, CGM 模块需要 9 个外接器件,其中晶振电路中需要5 个, PLL 电路需要 2 到 4 个。如右图所示。有了这些连接,从硬件角度看,MCU 就可以正常工作了。 晶振电路采用的元件有:晶体 X1 ,电容 C1 , C2 ,反馈电阻 RB ,串行电阻RS 。串行电阻 RS , C1 , C2 的取值可参考晶振厂家给出的典型值,电容一般取 10-36p , C1 与 C2值应该略有差异,以利于晶振电路起振。典型情况下, RS取 330K , RB 为 10M 。晶振采用 32.768KHZ 。 PLL 电路采用的元件有:①跨接电容,用于稳定锁相环电源引脚,一般取 0.1uF左右。②滤波网络,为芯片内部的锁相环电路提供误差电平,元件参数可参考上图。 注:如用户不打算在应用中使用锁相环电路部分,这一部分电路可以不接,让CGMXFC引脚悬空。

Page 12: 第十二章  GP32 的其他功能模块

12.2 时钟发生模块CGM与锁相环PLL

12.2.3 CGM 的编程基础( 1 ) PLL 控制寄存器( PLL Control Register- PCTL ) PCTL 的地址: $0036 ,定义为:

数据位 D7 D6 D5 D4 D3 D2 D1 D0

定义 PLLIE PLLF PLLON BCS PRE1 PRE0 VPR1 VPR0

复位 0 0 0 0 0 0 0 0

D7 — PLLIE位: PLL中断使能位 (PLL Interrupt Enabled Bit) 。该位可读写,决定当 PLL 带宽控制寄存器的 LOCK标志位反转时是否产生 CPU 中断。 D6 — PLLF 位: PLL中断标志位 (PLL Interrupt Flag Bit)。该位只读。当 LOCK标志位反转时被置位。 D5 — PLLON 位 : PLL开关检测位 (PLL On Bit) 。该位为可读写,用于启动 PLL 电路并激活 VCO 时钟 CGMVCLK ,当 VCO正作为基准时钟源时, PLLON不能被清零( BCS=1 ),要关闭 PLL 应该先不选 PLL 为时钟源( BCS=0 ),再清除 PLLON 位。 MCU 上电复位后此位置 1 。

Page 13: 第十二章  GP32 的其他功能模块

12.2 时钟发生模块CGM与锁相环PLL

D4 — BCS 位: CGM基时钟选择位 (Base Clock Select Bit)。该位为可读写,用于决定 CGM模块的输出信号 CGMOUT的输入信号源。 BCS=1 ,选择 PLL电路为时钟源, CGMVCLK二分频后驱动 CGMOUT; BCS=0 ,选择晶振为时钟源, CGMXCLK二分频后驱动 CGMOUT。 D3~ D2 — PRE1~ PRE0 :预分频位 (Prescaler Program Bits)。这两位为可读写。设置预分频器的分频因子 P ,预分频器的分频因子 P(由此得到预分频系数 NP=2P)与 PRE1 、 PRE0 关系如下 :PRE1 、 PRE0 = 00 P=0 NP=1 (20) = 01 P=1 NP=2 (21) = 10 P=2 NP=4 (22) = 11 P=3 NP=8 (23) D1~ D0 — VPR1~ VPR0 : VCO 的 E选择位 (VCO Power-of-Two Range Select Bits)。这两位为可读写。设置 VCO 模块的参数 E,控制参考频率。 E与 VPR1 、 VPR0 关系如下 : VPR1 、 VPR0 = 00 E=1 (20) = 01 E=2 (21) = 10 E=4 (22) = 11 E=8 (23) ( 不使用 )

( 1 ) PLL 控制寄存器( PLL Control Register- PCTL )

Page 14: 第十二章  GP32 的其他功能模块

12.2 时钟发生模块CGM与锁相环PLL

( 2 ) PLL 带宽控制寄存器( PLL Bandwidth Control Register- PBWC ) PCTL 的地址: $0036 ,定义为:

12.2.3 CGM 的编程基础

数据位 D7 D6 D5 D4 D3 D2 D1 D0

定义 AUTO LOCK ACQ# - - - - 保留复位 0 0 0 0 0 0 0 0

D7 — AUTO 位:自动带宽控制位 (Automatic Bandwidth Control Bit) 。该位可读写,用于选择自动或手动带宽模式。 AUTO=1 ,自动方式;AUTO=0 ,手动方式。

D6 — LOCK 位: Lock 指示位 (Lock Indicator Bit) 。当 AUTO 位为 1 时(设为自动方式), LOCK 为只读位,且当 VCO 的时钟 CGMVCLK完成锁定(工作在程序设定频率)后置 1 ,表示时钟稳定。当 AUTO 位为 0 时(设为手动方式), LOCK始终读出为 0 ,无意义。

D5 — ACQ# 位:获取模式位 (Acquisition Mode Bit) 。 =1 ,跟踪模式 ; =0 ,获取模式。

Page 15: 第十二章  GP32 的其他功能模块

12.2 时钟发生模块CGM与锁相环PLL

12.2.3 CGM 的编程基础( 3 ) PLL 倍频选择寄存器( PLL Multiplier Control Register- PMSH 、 PMSL )

PMSH 、 PMSL 的地址分别为: $0038 、 $0039 ,设置分频模块的分频系数。 PMSH 的高 4 位没有定义,始终为 0 。 PMSH 的低 4 位与 PMSL 一起组成 12 位的分频因子,记为 MUL11~MUL0 ,它们决定了 VCO 电路的反馈模块的分频因子 N 的高 4 位。由于分频因子 N不能为 0 ,即使设置为 0 ,系统也会默认为 1 。复位时 N=64(即: PMSH:PMSL=$0040) 。注意:倍频因子寄存器有内部的保护机制,当 PLLON=1 时, PMSH:PMSL不能被写入。即对 PMSH:PMSL 的写入操作应当在 PLL 电路关闭的情况下, PLL 电路工作后不能改变 PMSH:PMSL 的值。

Page 16: 第十二章  GP32 的其他功能模块

12.2 时钟发生模块CGM与锁相环PLL

12.2.3 CGM 的编程基础( 4 ) PLL VCO 范围选择寄存器( PLL VCO Range Select Register- PVRS )

PVRS 的地址是: $003A ,功能是对 VCO 电路进行设置。其 8 位分别记为: VRS7~ VRS0 。这 8 位均为可读可写位,确定 VCO输出频率范围系数 L ,对 PVRS 的写操作只能在 PLL 关闭时进行,当打开PLL (PCTL 中的 PLLON=1) 时 PVRS不能被写。在 PVRS 中写入 $00将禁止 PLL 电路并清除 PLL 控制寄存器 PCTL 中 BCS 位。复位时 L=64(即: PVRS=$40) 。同样要注意, VCO 范围选择寄存器有内部保护机制,当 PLL 电路打开 (PLLON=1) 时,寄存器为写保护。 PLL VCO范围选择寄存器必须正确初始化,否则 PLL 电路不能正确完成锁相。

Page 17: 第十二章  GP32 的其他功能模块

12.2 时钟发生模块CGM与锁相环PLL

12.2.3 CGM 的编程基础( 5 ) PLL 参考分频因子寄存器( PLL Reference DividerSelect Register- PRDS ) PRDS 的地址是: $003B ,功能是设置参考分频因子 R 。 PRDS

的高 4 位未定义,低 4 位为参考分频因子 R 。该寄存器最低位缺省为 1 。

Page 18: 第十二章  GP32 的其他功能模块

12.2 时钟发生模块CGM与锁相环PLL

( 1 ) PLL参数计算 ① 选择希望的总线频率 fBUSDES

② 计算希望得到的压控振荡器 VCO频率(是总线频率的 4倍): f

VCLKDES=4×fBUSDES

③ 选择 PLL参考时钟频率 fRCLK及参考时钟的分频因子 R 。 ④ 计算压控振荡器 VCO分频因子: N=(R× fVCLKDES)/fRCLK,四舍五入取整。 ⑤ 求预分频器分频因子 P 。 ⑥ 计算检验压控振荡器 VCO的输出频率: fVCLK=(2P×N/R)/fRCLK,fBUS= fVCLK/4。

12.2.4 PLL参数计算与编程步骤

Page 19: 第十二章  GP32 的其他功能模块

12.2 时钟发生模块CGM与锁相环PLL

⑦ 选择压控振荡器 VCO 的 E :若 fVCLK<9.8304×106 , E=0 。若 9.8304×106≤fVCLK<19.6608×106 , E=1 。若 19.6608×106≤fVCLK<39.3216×106 , E=2 。

⑧ 选择压控振荡器 VCO的 L:L=fVCLK/(2E×fNOM),四舍五入取整,其中fNOM=38400H

⑨ 计算检验压控振荡器 VCO的中心频率 fVRS。中心频率是 PLL模块能够达到的最大与最小频率的中点 :fVRS=( L×2E)×fNOM, |fVRS- fVCLK |≤(fNOM×2E)/2

⑩ 通过比较 fVCLK 、 fVRS 、 fVCLKDES验证 P 、 R 、 N 、 E 和 L 。 fVCLK必须处于 fVCLKDES 的噪声容限内,且 fVRS必须尽量接近 fVCLK 。超过推荐的最大总线频率或 VCO 频率,可能损坏MCU 。

( 1 ) PLL参数计算

Page 20: 第十二章  GP32 的其他功能模块

12.2 时钟发生模块CGM与锁相环PLL

① 禁止 PLL:清零 PLL控制寄存器 PCTL ② 将 P、 E写入 PCTL ③ 将 N写入 PMSH、 PMSL ④ 将 L写入 PVRS ⑤ 将 R写入 PRDS ⑥ 置 PCTL.PLLON=1,启动 PLL电路并激活 VCO时钟 CGMV

CLK ⑦ 置 PBWC. AUTO=1 (即 :自动带宽控制位 ),自动方式 ⑧ 置 PCTL.BCS=1 ,选择 PLL 为时钟源, CGMOUT=CGMVCL

K/2

( 2 )编程步骤

Page 21: 第十二章  GP32 的其他功能模块

12.2 时钟发生模块CGM与锁相环PLL

( 1 )汇编语言 ;[PLL 编程 ]

CLR PCTL ;①禁止 PLL :清零 PLL 控制寄存器 PCTL

MOV #$01,PCTL ;②将 P 、 E 写入 PCTL

MOV #$01,PMSH ;③将 N 写入 PMSH 、 PMSL

MOV #$2C,PMSL

MOV #$80,PMRS ;④将 L 写入 PMRS

MOV #$01,PRDS ;⑤将 R 写入 PRDS

BSET 5,PCTL ;⑥置 PCTL.PLLON=1 ,启动 PLL 电路 BSET 7,PBWC ; PBWC⑦ 自动带宽控制位 =1

BSET 4,PCTL ; PCTL.BCS=1 ⑧

12.2.5 初始化及 PLL编程实例

Page 22: 第十二章  GP32 的其他功能模块

12.2 时钟发生模块CGM与锁相环PLL

( 2 ) 08C语言 PCTL=0x00; //①禁止 PLL :清零 PLL 控制寄存器 PCTL PCTL=0x01; //②将 P 、 E写入 PCTL, 置 VCO 的参考频率为 2 PMSH=0x01; //③将 N写入 PMSH 、 PMSL, 置 VCO 的倍频因子为 $12C PMSL=0x2C; PMRS=0b10000000; //④将 L写入 PMRS, 置 VCO 的输出频率范围系 // 数为 $80 RDS=0x01; //⑤将 R写入 PRDS PCTL|=1<<5; //⑥置 PCTL.PLLON=1 ,启动 PLL 电路 PBWC|=1<<7; // PBWC⑦ 自动带宽控制位 =1, 选择自动控制方式 PCTL|=1<<4; // PCTL.BCS=1,⑧ 选择 PLL 电路为时钟源

12.2.5 初始化及 PLL编程实例

返回

Page 23: 第十二章  GP32 的其他功能模块

12.3 中断

12.3 中断12.3.1 中断源与中断向量地址 ( 1 ) GP32 单片机的中断源 GP32 单片机有 25 个中断源,按优先级从高到低的顺序分别是:复位中断( 1 个)、 SWI 指令中断( 1 个)、引脚中断( 1 个)、 CGM 中断( 1 个)、定时器 1 中断( 3 个)、定时器 2 中断( 3 个)、 SPI 中断( 4个)、 SCI 中断( 8 个)、键盘输入中断( 1 个)、 ADC 转换完成中断( 1个)和时基中断( 1 个)。这里把复位也列为一个特殊的中断,因为它也具有向量地址,后面对复位将有较详细的表述。 25 个中断源只有 18 个中断向量,有的是几个中断源使用同一个中断向量,表 12-3给出了 MC68HC908GP32 中断源及中断向量地址。 GP32 内部使用 3 个中断状态寄存器: INT1 (地址为 $FE04 )、 INT2(地址为 $FE05 )和 INT3 (地址为 $FE06 )来保存中断状态,但一般编程时并不使用这些寄存器,因此此处不做介绍。

Page 24: 第十二章  GP32 的其他功能模块

12.3 中断

( 2 )中断的过程 ① CPU 内的寄存器 PCL 、 PCH 、 X 、 A 、 CCR依次进栈(注意H未被保护,这是为了与 HC05 系列 MCU兼容,所以必要时, H 应由用户中断服务程序保护); ② 自动关总中断(即相当于自动执行 SEI 指令),防止其他中断进入; ③ 从相应的中断向量地址取出中断向量(即中断服务程序的入口地址)送给 PC; ④ 执行中断服务程序,直到执行中断返回指令 RTI 。 RTI 指令从堆栈中依次弹出 CCR 、 A 、 X 、 PCH 、 PCL ,使 CPU返回原来中断处继续执行; ⑤若中断过程也允许响应新的中断,可在中断服务程序中用 CLI 指令开放中断。一般不建议这样做,可用其他编程技巧处理相关问题。

12.3.1 中断源与中断向量地址

Page 25: 第十二章  GP32 的其他功能模块

12.3 中断

12.3.2 IRQ#引脚中断 IRQ状态寄存器 INTSCR(IRQ Status and Control Register) 的地址是: $0013 ,定义为:

数据位 D7 D6 D5 D4 D3 D2 D1 D0

定义 - - - - IROF ACK IMASK MODE

复位 0 0 0 0 0 0 0 0

D7~ D4 位:未定义。 D3 — IRQF 位: IRQ 中断标志位。 IRQF=1 ,已发生 IRQ 中断,反之未发生 IRQ 中断。该位只读。 D2 — ACK 位: IRQ 中断请求应答位。该位只写,读出总是 0 。 D1 — IMASK 位: IRQ 中断屏蔽位。 IMASK=1 ,禁止 IRQ 中断; IMASK=0 ,允许 IRQ 中断。 D0 — MODE 位: IRQ边沿 / 低电平触发模式选择位。 MODE=

1 , IRQ#引脚负跳变及低电平中断, MODE=0 , IRQ#引脚仅负跳变中断。

Page 26: 第十二章  GP32 的其他功能模块

12.3 中断

断点模块( break module , BRK )可以在设定的地址处产生一个中断,该中断称为断点中断( Break interrupt ),它使 CPU 中止当前程序的执行而进入断点中断服务程序。 断点中断可由下述 2种方式引起: ①程序计数器 PC值与断点地址寄存器的内容相匹配时产生断点中断。 ②用软件向断点状态与控制寄存器BRKSCR的 BRKA位写 1 时产生断点中断。 当断点中断发生后, CPU在结束当前指令后,将一条 SWI 指令装入内部指令寄存器作为下一条指令执行。这样就如同发生一个软件中断,断点中断向量地址是 $FFFC 和 $FFFD,与软件中断SWI 指令产生的中断是同一个中断向量地址。实际上,即使是调试工具的开发也极少单独使用 SWI 指令,而是设置断点中断产生 SWI 中断,在中断例程中,将当前MCU工作状态发送给PC机。 从编程角度,断点模块 BRK涉及断点状态控制寄存器 BRKSCR( Break Status and Control Register)与 16位断点地址寄存器( BRKH、BRKL)。

12.3.3 断点模块 BRK 与软件中断 SWI

返回

Page 27: 第十二章  GP32 的其他功能模块

12.4 复位与系统集成模块

12.4 复位与系统集成模块12.4.1 复位 复位使MCU 进入到开始状态,从复位向量地址( $FFFE~ $FFFF )取得即将开始执行程序的地址,由此地址开始执行。(1)从是否上电来看,分为上电复位与热复位 : 上电复位是指原来芯片并未加电(处于所谓冷状态),给芯片加电后,芯片复位。 热复位是指芯片本来就处于上电状态,由于内部或外部原因引起的复位,复位后, MCU迅速停止当前正在执行的指令,有关寄存器恢复到复位状态值,从地址 $FFFE~ $FFFF取出两字节的复位向量送到程序计数器 PC 。 (2)从引起复位的信号来看,有外部复位与内部复位: 外部复位是指逻辑低电平加到芯片的引脚一段时间后所产生的复位。IRQ#引脚也是内部复位的输出端。 内部复位是指芯片的内部复位源将芯片的引脚拉低 32 个 CGMXCLK周期所产生的复位。

Page 28: 第十二章  GP32 的其他功能模块

12.4 复位与系统集成模块

( 1 ) SIM 模块的主要功能 1 ) SIM 模块的主要功能有: ① 总线时钟的产生和控制,包括 STOP 、等待、复位、断点的进入和恢复,内部时钟控制; ② 用户复位控制,包括上电复位和 COP 溢出; ③ 中断控制,包括识别时序、仲裁控制时序、中断地址产生; ④CPU 允许和禁止时序; ⑤可扩展到 128 个中断源的模块结构。

12.4.2 系统集成模块 SIM

Page 29: 第十二章  GP32 的其他功能模块

12.4 复位与系统集成模块

时钟生成器产生一个时钟信号输出到 SIM来产生系统时钟,这个时钟信号可以来自外部振荡器,也可以来自内部锁相环电路,可分 3种情况: ① 在用户模式下,内部总线的频率可以是晶体振荡器的输出( CGMXCLK)或锁相环电路输出( CGMVCLK)的 4分频; ②当上电复位模块或者低电压禁止模块产生复位信号时, CPU内部时钟保持复位状态直到经过 4096个 CGMCLK时钟。在这期间,引脚被SIM设置为低。内部总线也在 4096个 CGMCLK时钟之后开始工作; ③ 在WAIT模式下, CPU时钟并不工作, SIM为其他模块提供时钟。

2) SIM和时钟生成器为 CPU提供各种时钟信号。

Page 30: 第十二章  GP32 的其他功能模块

12.4 复位与系统集成模块

( 2 ) SIM 复位状态寄存器( SIM Reset Status Register- SRSR )

12.4.2 系统集成模块 SIM

SRSR 的地址是: $FE01 ,定义为: 数据位 D7 D6 D5 D4 D3 D2 D1 D0

定义 POR PIN COP ILOP ILAD - LVI -复位 0 0 0 0 0 0 0 0

D7—POR 位:上电复位标志。D6—PIN 位:外部引脚的复位标志。D5—COP 位:看门狗复位标志。D4—ILOP 位:非法操作码复位标志。D3—ILAD 位:非法地址复位标志。D2 :未定义D1—LVI 位:低电压复位标志。D0 :未定义

返回

Page 31: 第十二章  GP32 的其他功能模块

12.5 低功耗模式与看门狗功能

12.5 低功耗模式与看门狗功能 ( 1 ) STOP 指令 在程序中运行 STOP 指令,使MCU处于 STOP 功耗模式(功耗最小)。在 STOP状态下,关闭MCU 内部时钟,包括 CPU 的时钟和内部总线上的时钟, MCU 内部一切操作停止。 ( 2 ) WAIT 指令 在程序中运行 WAIT 指令,使MCU处于 WAIT 低功耗模式。 WAIT 模式的功耗比 STOP 模式大。在 WAIT 模式下,内部 CPU 的时钟被关闭,但内部总线时钟并不停止,定时器仍然在工作。

12.5.1 低功耗模式

Page 32: 第十二章  GP32 的其他功能模块

12.5 低功耗模式与看门狗功能

12.5.2 系统正常操作监视模块 COP

系统正常操作监视模块( Computer Operating Properly, COP)俗称看门狗(Watchdog)。该模块有一个自由运行的计数器,若在 CONFIG1 中设定 COP允许后,用户程序必须周期地向 COPCTL( $FFFF , COP控制寄存器)写入任意值(使用指令 STA COPCTL,叫做给看门狗喂食),以清除 COP计数器。

返回

Page 33: 第十二章  GP32 的其他功能模块

12.6 监控模块MON

适当运用监控方式和主机命令,能够完成一些特殊功能,例如 : (1) 下装代码到 RAM 或 Flash 存储器中;

(2) 执行 RAM 或 Flash 中的程序代码;(3) Flash 存储器的加密;(4) Flash 存储器擦除/写入/校验;(5) 与主计算机进行标准的不归零传号/空号串行通信,波特率

为 4800bps~ 28. 8kbps;(6) 在线编程;(7) 用户方式 Flash编程。

12.6 监控模块 MON

返回

Page 34: 第十二章  GP32 的其他功能模块

在学习了 MC68HC908GP32 单片机的大部分功能以及它们的基本应用方法的基础上,本章把前面在初学过程中跳过的部分完善,以形成对 MC68HC908GP32 单片机的较全面的认识,以便在实际应用中融会贯通。主要内容包括系统初始化的设置、 PLL 、复位、中断源、低功耗模式、看门狗功能以及其他功能模块。

本章小结

返回