湖 北 汽 车 工 业 学 院 毕 业 论 文
PTD7/T2CH1~PTD0/SS:8位特殊功能,双向I/O口。PTD0~PTD3可用作SPI脚,PTD4~PTD7可分别用于定时器模块(TIM1和TIM2)。在作输入时,每个可选择有上拉电阻
PTE1/RXD、PTE0/TXD:2位通用双向I/O口。它们可用作SCI脚 3) 存储器
MC68HC908GP32可寻址64K地址空间。
MC68HC908GP32具有32KFLASH存储器,它由FLCR寄存器($FE08)控制写入、擦除,其中HVEN为高电压允许位(=1,执行写入或擦除),MASS为全局擦除位(=1,选择全局擦除),ERASE为擦除控制位(=1,选择擦除),PGM为编程选择位(=1,选择编程)。
4) 复位和中断
MC68HC908GP32具有上电复位(POR)计算机工作正常(COP)、低电压复位、非法指令码和非法地址等复位源。SIM复位状态寄存器(SRSR)($FE01)为复位标志(它们在读出后清零)。
GP32具有24个中断源和17个中断入口向量,见表3-1。它共有16个中断状态位,位于$FE04~06寄存器中。
Note:
COP可由系统设置寄存器设置溢出周期和禁止。在允许后,软件必须周期性地向$FFFF写入任意值(32、768KHZ慢速方式时,COP溢出周期为250ms)。
外部中断(IRQ)可由INTSCR($001D)设置为下降沿和低电压触发(MODE=1),可禁止IRQ中断(IMASK=1),有IRQ标志位(IRQF),它由向ACK位写入1清零。
5) A/D转换器
GP32具有8路8位A/D,它有一个AD状态和控制寄存器(ADSCR)($003C),包括AD完成标志(COCO)和AD中断允许(AIEN)、AD连续转换控制(ADCO)及AD通道选择(ADCH4~ADCH0)。ADCH4~ADCH0=11111时,关闭A/D电源,ADCH4~ADCH0=00000~00111选择8路A/D输入(PTB0/AD0~PTB7/AD7)。A/D结果寄存器(ADR)位于$003D,存放最新的A/D转换结果。AD时钟寄存器(ADCLK)($003E)选择A/D时钟及其分频率,ADICLK位=0选择外部晶振时钟(CGMXCLK),=1选择总线时钟。ADIV2~ADIV0选择A/D时钟分频率(ADIV2~ADIV0=000、001、010、011、1××,
12
湖 北 汽 车 工 业 学 院 毕 业 论 文
分频率分别为1、2、4、8、16),应选择分频率使A/D时钟为约1MHZ。
6) 时钟发生模块
CGMC包括晶振电路、锁相关(PLL)和基时钟选择电路。
(1)晶振电路:它产生CGMXCLK。一般可在OSC1与OSC2间接晶振,也可在OSC1输入外部时钟。
(2)锁相关(PLL):它可工作于获取和跟踪方式,它包括压控振荡器(VCO)、参考分频率、预分频器、VCO分频器、相位检测、滤波器、锁相检测器。
(3)PLL参考时钟等于晶振频率(FRCLK)除以R,它一般应为30~100KHZ。对30~100KHZ外部晶振,R=1。PLL有多个控制寄存器,在晶振频率为32.768KHZ时,对不同的总线频率(FBUS),可如表3.1选择PCTL寄存器的PREI(P)、VPRI(E)位,PMSL(低位)、PMSH(高位)寄存器的值(N),PMRS寄存器的值(L),PMDS寄存器的值(R)。
表3.1PLL编程实例
FBUS FRCLK32.768kHz 32.768kHz 32.76kHz 32.768kHz 32.768kHz 32.768kHz 32.768kHz 32.768kHz 2.0MHz 2.4576MHz 2.5MHz 4.0MHz 4.9152MHz 5.0MHz 7.3728MHz 8.0MHz R 1 1 1 1 1 1 1 1 N F5 12C 132 1E9 258 263 384 3D1 P 0 0 0 0 0 0 0 0 E 0 1 1 1 2 2 2 2 L D1 80 83 D1 80 82 C0 D0 PLL有两个控制器(PCTL,$0036;PBWC,$0037),前者的PLLON=1允许PLL和VCO时钟;PLLIE和PLLF为PLL中断允许和标志位,可在锁相成功时产生中断;BCS为基时钟选择位:=0使用CGMXCLK,=1使用VCO时钟。PEWC控制PLL工作方式:自动方式(AUTO=1),手动方式(由ACQ选择获取和跟踪方式),LOCK表示锁相成功(AUTO=1时)。
7) I/O端口
PA为双向I/O口,作输入时可具有上升电阻(由PTAPUE所允许)。在允许时,PA可用作键盘中断输入。INTKBSCR($001A)为键盘状态和控制寄存器,IMASKK位允许键盘中断(=0),MODER选择触发方式(=1为下跳变和负电平,=0为仅下跳变),KEYF为键盘中断标志位,向ACK位写入1清零KEYF。INTKBIER($001B)允许PA的各位用作键盘输入。
13
湖 北 汽 车 工 业 学 院 毕 业 论 文
PB为双向I/O口,也可用作A/D输入。AD状态控制寄存器的通道选择位决定哪个PB口用作A/D输入(这时不受DDRB所控制)。
PC为7位双向I/O口,在作输入时,可具有上拉电阻。
PD为8位双向I/O口,它也用作定时器和SPI引脚。在作输入时,可具有上拉电阻(由PTDPUE寄存器所允许)。
PE为2位双向I/O口,它也用作SCI引脚(这时,它不受DDRE影响)。 8) SCI和SPI串行口 ①SCI串行通信接口
GP32的SCI比HC05C8的SCI功能强,它具有硬件奇偶校验、噪声检测等功能。它有三个控制寄存器(SCC1、SCC2、SCC3)和两个状态寄存器(SCS1、SCS2)。SCC1包括:LOOPS(=1,测试用),ENSCI(=1,允许SCI),TXINV(=1,发送输出为反码),M(字符长度,=1,9位;=0,8位),WAKE(唤醒条件,=1,地址唤醒;=0,空闲线唤醒),ILTY(空闲线方式,=1,从停止位开始计数;=0,从起始位开始计数),PEN(=1,允许奇偶校验),PTY(=1,奇校验;=0,偶校验)。SCC2包括:SCTIE(=1,允许SCI发送中断),ILCE(=1,允许发送完成中断),SCRIE(=1,允许SCI接收中断),ILIE(=1,允许空闲中断),TE(=1,允许发送器),RE(=1,允许接收器),RWU(=1,置SCI为等待状态),SBK(=1,发送终止码)。SCC3包括:R8(接收位8,只读),T8(发送位8),DMARE和DMATE(保留位,应=0),ORIE(=1,允许接收器溢出中断),NEIE(=1,允许接收器噪声错中断),FEIE(=1,允许接收器帧错误中断),PEIE(=1,允许接收器奇偶错中断)。SCS1包括:SCTE(发送缓冲区空标志,读出SCS1再写入SCDR时清0),TC(发送完成标志),SCRF(接收缓冲区空标志,读出SCS1再读出SCDR时清0),IDLE(接收器空闲标志,读出SCS1再读出SCDR时清0),OR(接收器溢出标志,读出SCS1再读出SCDR时清0),NF(接收器噪声标志,在一位的三次测试中不相同置位,读出SCS1再读出SCDR时清0),FE(接收器帧错误标志,读出SCS1再读出SCDR时清0),PE(接收器奇偶错标志,读出SCS1再读出SCDR时清0)。SCS2包括:BKF(终止码标志。读出SCS1再读出SCDR时清0),RPF(正在接收标志)。SCDR为接收(读)/发送(写)缓冲器,地址$0018。SCBR($0019)设置波特率,它与HC05C8的BAUD寄存器相同。在FBUS=4.9152MHZ时,取SCBR=$03,可设波特率为9600。
②SPI串行外围接口
14
湖 北 汽 车 工 业 学 院 毕 业 论 文
GP32的SPI与HC05C8的SPI基本相同,只是它增加了出错标志,有分开的接收与发送中断和灵活的I/O脚控制。SPI有两个控制和状态寄存器。SPCR($0010)包括:SPRIE(=1,允许接收中断),DMAS(保留位),SPMSTR(=1,主机方式),CPOL和CPHA(设置SPSCK时钟相位,同HC05C8),SPWOM(=1,允许SPSCK、MOSI和MISO脚为开漏输出),SPE(=1,允许SPI),SPTIE(=1,允许发送中断)。SPSCR($0011)包括:SPRF(接收缓冲器满标志,读出SPSCR再读出SPDR时清0),ERRIE(=1,允许出错中断),OVRF(溢出错标志,读出SPSCR再读出SPDR时清0),MODF(方式错标志,读出SPSCR再读出SPDR时清0),SPTE(发送缓冲区空标志),MODFEN(方式错允许位,=1,允许检测方式错;=0,不检测,这时主机方式时,SS可用作通用I/O口),SPR1和SPR0(SPI波特率选择,00,CGM输出二分频;01,八分频;10,32分频;11,128分频)。SPDR为接收(读)/发送(写)数据寄存器,地址为$0012。
9) 定时器
①定时器接口模块(TIM)
GP32有两个定时器接口模块(TIM1、TIM2),每个TIM有以下功能: ·两个输入捕获/输出比较通道: —上升、下降、或任何跳变输入捕捉触发 —置位、清零、取反输出比较操作 ·缓冲或非缓冲脉宽调制(PWM)发生 ·TIM时钟可程控为内部总线时钟的七种分频值 ·自由运行或取模加1计数操作 ·溢出时变换通道 ②TIM计数器停止和复位位
计数器分频:由TSC寄存器的PS2~PS0选择为内部总线时钟的1~64分频
A计数控制:计数器模数寄存器(TIMODH、TIMODL)可控制计数器的最大计数值。在计数器达到TIMOD值时,清0计数器,并置位溢出标志(TOF)。
B输入捕获:由TISCJ寄存器的MSJB和MSJA位=00选择为输入捕捉方式,ELSJB和ELSJA位=01,上升沿捕捉;=10,下降沿捕捉;=11,上升或下降沿捕捉。发生捕捉时置位CHJF标志(读出TISCJ再向CHJF写入0时清0),并把计数器值(TCNTH、TCNTL)存入TCHJH、TCHJL中。
15
湖 北 汽 车 工 业 学 院 毕 业 论 文
C非缓冲输出比较:由TISCJ寄存器的MSJB和MSJA位=01选择为输出比较方式,ELSJB和ELSJA位=01,比较完成时取反输出;10,清零输出;=11,置位输出。TCHJH、TCHJL为输出比较值,它们与计数器值相同时为比较完成,这时置位CHJF标志。
D非缓冲PWM:使用计数器模数寄存器和TOVI(TISCJ寄存器中)位可使计数器在达到计数器模数寄存器值时置位溢出位(TOF),并取反输出位。以后再由输出比较置位或清零,从而可输出宽度可变的脉冲。它的周期由计数器模数寄存器决定,脉宽由输出比较决定。
E缓冲输出比较和PWM:通道0和1可相连,构成缓冲输出比较或PWM。可置通道0的MS0B位=1。这时通道0的寄存器控制脉冲宽度,写入通道1寄存器可使通道1同步地控制下一个输出比较或PWM周期。在每次溢出后,最后写入的通道成为现行控制通道。通道0的控制和状态寄存器(TSC0)控制和监视缓冲操作。TSC1不使用。通道1的脚(TCH1)可用作通用I/O脚。
F定时器中断:TIM状态和控制寄存器(TSC)的TOIE允许计数器溢出中断(标志为TOF,读出TSC再向TOF写入0清0)。每个通道有一个中断允许位(CHJIE)和中断标志位(CHJF)。
G其他操作:置位TSC的TSTOP位可停止TIM计数器。向TSC的TRST位写入1可复位TIM计数器和预分频器。
置位各通道的CHJMAX位(在TOVJ位=0时)可使PWM输出为100%。 ③定时基模块(TBM)
TBM可产生周期性中断,可选择8种速率。它由TBCR($001C)的TBR2~TBR0所控制,在fosc1=32.768KHZ时,TBM速率如下表:
表3.2定时基速率选择(fOSC1=32.768KHZ) TBR2 0 0 0 0 1 1 1 1 TBR1 0 0 1 1 0 0 1 1 TBR0 0 1 0 1 0 1 0 1 Divider 32,768 8192 2048 128 64 32 16 8 Timer base interrupt Rate Hz ms 1 4 16 256 512 1024 2048 4096 1000 250 62.5 ~3.9 ~2 ~1 ~0.5 ~0.24 TBCR的TBIE为TBM中断允许位,TBIF为中断标志位,向TACK位写入1清0TBIF
16