词条 | MC908GP32单片机 |
释义 | MC908GP系列单片机是HC08系列单片机大家族中具有通用性的一族,MC908GP32是MC908GP系列中的一个型号,MC908GP32单片机具有三种封装形式,它们分别为40脚、42脚、44脚。 主要特点①512B片内RAM;32K片内Flash程序存储器,具有在线编程能力和保密功能。 ②时钟发生器模块,具有32KHz晶振PLL电路,可产生各种工作频率;8MHz内部总线频率。 ③增强的HC05 CPU结构;16种寻址方式(比HC05多8种);16位变址寄存器和堆栈指针;存储器至存储器数据传送;快速8×8乘法指令;快速16/8除法指令;扩展的循环控制功能;BCD功能。 ④33根通用I/O脚,包括26根多功能I/O脚和5或7根专用I/O脚;PTA、PTC和 PTD的输入口有可选择的上拉电阻;PTC0—PTC4有15mA吸流和放流能力,其他口有10mA吸流和放流能力 (总体驱动电流应小于150mA);所有口有最高5mA输入电流保护功能。 ⑤增强型串行通讯口SCI;串行外围接口SPI;两个16位双通道定时器接口模块(TIM1和 TIM2),每个通道可选择为输入捕捉、输出比较和PWM,其时钟可分别选为内部时钟的1、2、4、8、16、32和64的分频值;带时钟预分频的定时基模块有8种周期性实时中断(1、4、16、256、512、1024、2048和4096Hz),可在STOP方式时使用外部32KHz晶振周期性唤醒 CPU;8位键盘唤醒口。 ⑥系统保护特性:计算机工作正常(COP)复位;低电压检测复位,可选为3V或5V操作;非法指令码检测复位;非法地址检测复位。 ⑦具有PDIP40、SDIP42和QFP44封装形式。 ⑧优化用于控制应用;优化支持C语言。 内部结构简图单片机(以下简称GP32单片机)的三种封装形式只是引脚数量和形式有所区别,其它方面是一致的。图中I/O口是按 44引脚的GP32给出的,对于42引脚的GP32单片机则没有PTC5、PTC6两个引脚,对于40引脚的GP32单片机则没有PTC5、PTC6及 PTD6/T2CH0、PTD7/T2CH1四个引脚。 从内部结构简图可以看出,GP32内部有以下主要部分:CPU08、存储器、定时器接口模块、定时基模块、看门狗模块、通用I/O接口、串行通信接口 SCI、串行外设接口SPI、断点模块、A/D转换模块、键盘中断模块、时钟发生模块及锁相环电路、低电压禁止模块、复位与中断模块、监控模块MON和系统设置模块。 引脚功能40引脚的MC908GP32单片机的引脚图,引脚功能分类简介如下:(1) 电源类引脚 VDD、VSS(20脚、19脚):电源供给端。 VDDAD /VREFH、VSSAD /VREFL(31脚、32脚):内部A/D转换器的电源供给及参考电压输入端。 VDDA、VSSA(1脚、2脚):时钟发生器模块(CGM)的电源供给端。 (2) 控制类引脚 (6脚):外部低有效复位输入或输出脚,有内部上拉电阻。 (14脚):外部中断输入脚,有内部上拉电阻。 (3) I/O类引脚 PTA7/KBD7~PTA0/KBD0(40~33脚):8位通用双向I/O口,每个可编程为键盘输入脚。 PTB7/AD7~PTB0/AD0(30~23脚):8位通用双向I/O口,也可作为8路8位A/D转换输入脚。 PTC4~PTC0(11~7脚):5位通用双向I/O口。 PTD5/T1CH1~PTD0/ (22、21、18~15脚):6种特殊功能、双向I/O口,其中T1CH1、T1CH0用于定时器模块(TIM1)。SPSCK、MOSI、MISO、 用于串行外围接口(SPI)。 PTE0/TxD、PTE1/RxD(12脚、13脚):2位双向I/O口或串行通讯口。 (4) 其它 CGMXFC(3脚):CGM的外部滤波电容连接脚。 OSC1、OSC2(5脚~4脚):片内振荡器引脚。 GP32存储器组织CPU08 可寻址64K地址空间,所以它的地址范围是$0000~$FFFF,在这$0000~$FFFF的寻址范围内,分成多个不同区段,每个区段的作用不同。 MC908GP32单片机的存储器组织及地址分配见图。图中只是画出了64K地址空间的简要映像。 RAM区域及其作用用户RAM的地址范围是:$0040~$023F,共512字节。这个区域既是用户RAM,也是堆栈RAM。一般情况下,这个区域安排用户数据和堆栈空间。由于这个空间较小,必须合理安排初始堆栈指针SP和用户数据,更好地发挥RAM的作用。在这个区域中,有192字节的RAM属于第0页,也就是地址的高8位为0,第0页RAM的地址范围是:$0040~$00FF,这个地址范围寻址方便,合理分配使用这些内存地址对实际编程很有帮助。 必须注意的是,由于堆栈也在RAM区域,且复位时SP=$00FF,位于第0页内,所以实际编程时,可以把SP从第0页移出,例如使之为$023F,也就是初始的SP在RAM的最高地址处,由于M68HC08系列单片机的进栈指令是使SP-1,所以是堆栈数据向低地址方向依次堆放,这样堆栈使用的地址空间是$023F→更低地址方向。安排用户数据时,可以从RAM的最低地址$0040向更高地址空间安排,即用户数据使用的地址空间是$0040→更高地址方向。这样从两头向中间使用,可以尽量避免两种数据交叠,发生错误。但是,用户数据不宜安排过多,要给堆栈留有足够的空间,否则运行时可能产生错误。若内存安排较满,必须精确计算堆栈最大可能深度,以保证程序的正常执行。 映像寄存器名及简明含义所谓映像寄存器,是指那些通过存储器地址访问的寄存器,它们不像寄存器A、H:X、SP、PC、CCR那样直接通过其“名”来使用它,而是通过它们对应的地址来使用它们。要通过其“名”来使用它们,必须用伪指令定义它们所占用的实际地址与“名”对应。 Flash存储器寄存器在MC908GP32单片机中,与Flash编程有关的寄存器有2个,它们是Flash控制寄存器(FLCR)和Flash块保护寄存器(FLBPR)。对应的地址分别为$FE08和$FF7E,下面分别阐述这些寄存器的功能及用法。 Flash控制寄存器FLCR的地址:$FE08,定义为: 数据位 D7 D6 D5 D4 D3 D2 D1 D0 定义 未定义 未定义 未定义 未定义 HVEN MASS ERASE PGM 复位 0 0 0 0 0 0 0 0 D7~D4位:未定义。 D3 — HVEN位:高压允许位(High-Voltage Enable Bit)。 HVEN=1,打开电荷泵并将高电平加到Flash阵列上;HVEN=0,撤除Flash阵列上的高电平并关闭电荷泵。当PGM=1或ERASE=1时,可以通过设置HVEN将来自片内电荷泵的高压加到Flash阵列上。 D2 — MASS位:整体擦除控制位(Mass Erase Control Bit)。该位在ERASE=1时有效,用于选择Flash擦除操作方式:整体擦除或页擦除。MASS=1,选择整体擦除方式;MASS=0,选择页擦除方式。 D1 — ERASE位:擦除控制位(Erase Control Bit)。该位用于设置Flash编程操作为擦除操作。ERASE位与PGM位之间存在互锁关系,无法同时被设置为1。ERASE=1,选择擦除操作;ERASE=0,不选择擦除操作。 D0 — PGM位:编程(写入)控制位(Program Control Bit)。该位用于设置Flash编程操作为编程(写入)操作,且无法与ERASE位同时为1。PGM=1,选择写入操作;PGM=0,不选择写入操作。 Flash块保护寄存器FLBPR的地址:$FF7E,它的内容为Flash保护区域的起始地址的14~7位,保护区域的起始地址的最高位始终为1,而保护区域的起始地址的低7位(位6~0)始终为0。对FLBPR写入,可以设定被保护的Flash区域,它本身也是一个Flash字节。当Flash处于保护状态时,擦除和写入操作都是受限制的,HVEN将无法被正常置起。Flash块保护寄存器设定的只是保护区域的起始地址,保护区域的结束地址始终为Flash存储区的结束地址($FFFF)。例如,设定FLBPR的值为$02(%0000 0010),则保护区域为$8100~$FFFF(%1000 0001 0000 0000 ~ %1111 1111 1111 1111)。 特别情况是:FLBPR的存储内容为$00,整个Flash存储区都受到保护;如果FLBPR的存储内容为$FF,则整个Flash存储区都可以被擦除或写入。 只有当单片机处于运行用户程序时,对FLBPR本身和Flash保护区域的擦写操作保护才是有效的。复位不影响FLBPR。 需要注意的是,FLBPR的8位数据所代表的地址取决于具体型号的芯片的Flash容量。以上是对MC908GP32而言的,FLBPR设定的是16位起始地址的第14~7位(第15位恒为1);而对MC68HC908JL3而言,它们设定的是16位起始地址的第12~5位(第15~13位恒为1)。这两种情况见表13-1。具体设定时可以根据相应芯片手册结合要保护的区域进行计算得到。 Flash存储器的编程过程在HC08系列单片机中,对Flash进行擦除或写入操作需要遵循一定的时序和步骤。对于整个MC68HC908系列的各个型号,这些步骤是一样的,但时序要求可能略有不同,针对具体型号的Flash进行编程时应参考相应的芯片手册。同时需要注意的是,一些型号的监控ROM内含有Flash编程子程序,用户可直接调用,例如MC68HC908JL3;有的型号则没有,例如MC908GP32,这种情况需自行编制子程序。下面介绍MC908GP32的Flash编程的基本操作。 (1) 页擦除操作下面过程可以擦除GP32的Flash存储器的一页(128字节): ①$2→FLCR(1→ERASE位,0→MASS位):进行页面擦除。 ②读Flash块保护寄存器FLBPR。 ③向被擦除的Flash页内任意一个地址写入任意值,为方便起见,一般向待擦除页首地址写入0。 ④延时tnvs(>10µs)。 ⑤$A→FLCR(1→HVEN位)。 ⑥延时terase(>1ms)。 ⑦$8→FLCR(0→ERASE位)。 ⑧延时tnvh(>5µs)。 ⑨$0→FLCR(0→HVEN位)。 ⑩延时trcv(>1µs),完成一页的擦除操作。 (2) 整体擦除操作下面过程擦除GP32的整个Flash区域,以便把新的程序装入Flash存储器,这是应用系统研制过程中开发工具对GP32编程的准备工作。 ①$6→FLCR(1→ERASE位,1→MASS位):进行整体擦除。 ②读Flash块保护寄存器FLBPR。 ③向被擦除的Flash任意一个地址写入任意值,为方便起见,一般向首地址写入0。 ④延时tnvs(>10µs)。 ⑤$E→FLCR(1→HVEN位、MASS位、ERASE位)。 ⑥延时tMerase(>4ms)。 ⑦$C→FLCR(0→ERASE位)。 ⑧延时tnvhl(>100µs)。 ⑨$0→FLCR(0→HVEN位、MASS位)。 ⑩延时trcv(>1µs),完成整体擦除操作。 (3) 编程操作MC908GP32的Flash编程操作以行(64字节)为单位进行的。当然,一次写入可以小于一行,但不能大于一行。对于已经写过的部分,未经擦除不能重新写入变更其数据,否则将引起数据出错。写入过程如下: ①$1→FLCR(1→PGM位)。 ②读Flash块保护寄存器FLBPR。 ③向将要写入的Flash行内任意一个地址写入任意值,为方便起见,一般向行首地址写入0,这一步选定了所要编程的行,以下的目标地址必须在这一行中。 ④先延时tnvs(>10µs);再将$9→FLCR(1→HVEN位)。 ⑤先延时tpgs(>5µs);再将待写数据写入对应的Flash地址。 ⑥延时tprog(>30µs),完成一个字节的写入(编程)工作。 ⑦重复⑤、⑥,直至同一行内各字节写入完毕。 ⑧$8→FLCR(0→PGM位)。 ⑨先延时tnvh(>5µs);再将$0→FLCR(0→HVEN位)。 ⑩延时trcv(>1µs)以后,完成本行写入工作,可以读出校验。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。