《飞思卡尔8位单片机MC9S8Flash存储器的在线编程ppt课件》由会员分享,可在线阅读,更多相关《飞思卡尔8位单片机MC9S8Flash存储器的在线编程ppt课件(32页珍藏版)》请在金锄头文库上搜索。
1、第十一章第十一章 Flash存储器的在线编程存储器的在线编程主要内容v Flash存储器概述与编程模式 v MC68HC908GP32单片机Flash存储器编程方法 v GP32单片机Flash在线编程汇编语言实例 v GP32单片机Flash在线编程C语言实例v HCS08系列单片机Flash编程方法 11.1 Flash 存储器概述与编程模式存储器概述与编程模式11.1.1 Flash存储器的基本特点与编程模式存储器的基本特点与编程模式 (1)Flash存储器的基本特点存储器的基本特点 固有不挥发性固有不挥发性 易更新性易更新性 成本低、密度高、可靠性好成本低、密度高、可靠性好 (2)Fl
2、ash存储器的两种编程模式存储器的两种编程模式 监控模式(监控模式(Monitor Mode)或写入器模式或写入器模式 用户模式(用户模式(User Mode)或在线编程模式或在线编程模式 11.1 Flash存储器概述与编程模式 (1)M68HC08系列单片机系列单片机Flash存储器的特点存储器的特点 第一,编程速度快及可靠性高。第一,编程速度快及可靠性高。 第二,单一电源电压供电。第二,单一电源电压供电。 第三,支持在线编程。第三,支持在线编程。 11.1.2 M68HC08系列单片机系列单片机Flash存储器的特点存储器的特点与编程模式与编程模式11.1 Flash存储器概述与编程模式
3、M68HC908系列单片机中绝大多数型号在其内部带有监控系列单片机中绝大多数型号在其内部带有监控ROM,其地其地址和大小取决于芯片型号。址和大小取决于芯片型号。Flash存储器工作于监控模式的条件是:存储器工作于监控模式的条件是: 复位向量(复位向量($FFFE$FFFF)内容为内容为“空空”($FFFF)。)。 单片机复位时在单片机复位时在IRQ引脚上加上高电压(引脚上加上高电压(1.42Vdd),并给某些并给某些I/O脚置适当值(与芯片型号有关,设计时,参考芯片手册)。脚置适当值(与芯片型号有关,设计时,参考芯片手册)。 M68HC908系列单片机的系列单片机的Flash存储器工作于用户模
4、式不需要特别的存储器工作于用户模式不需要特别的条件,在单片机正常工作的过程中,程序可以随时转入对条件,在单片机正常工作的过程中,程序可以随时转入对Flash存储器进存储器进行编程操作。这种情况下对行编程操作。这种情况下对Flash存储器的擦除与写入,不需要用户提供存储器的擦除与写入,不需要用户提供其它外部硬件条件。其它外部硬件条件。 (2)M68HC08系列单片机系列单片机Flash存储器的编程模式存储器的编程模式返回返回11.1 Flash存储器概述与编程模式 11.2 MC68HC908GP32单片机单片机Flash存储存储器编程方法器编程方法11.2.1 Flash存储器编程的基本概念存
5、储器编程的基本概念(1)对)对Flash编程的两种基本操作:擦除(编程的两种基本操作:擦除(Erase)和写入和写入(Program) 擦除操作擦除操作的含义是将存储单元的内容由二进制的的含义是将存储单元的内容由二进制的0变成变成1, 写入操作写入操作的含义是将存储单元的内容由二进制的的含义是将存储单元的内容由二进制的1变成变成0。 擦除及写入操作都是通过设置或清除擦除及写入操作都是通过设置或清除Flash存储器的控制寄存器存储器的控制寄存器(FLCR)中的某个或某些位来完成的。中的某个或某些位来完成的。 11.2 GP32 Flash存储器编程方法 页和行的大小(字节数)随整个页和行的大小(
6、字节数)随整个Flash存储器的大小变化而变化,存储器的大小变化而变化,但页的大小始终为行的两倍。例如但页的大小始终为行的两倍。例如MC68HC908GP32内含内含32K的的Flash存储器(地址为存储器(地址为$8000$FDFF),),每页的大小为每页的大小为128字节,每行的大字节,每行的大小为小为64字节;而字节;而MC68HC908JL3片内片内Flash存储器仅有存储器仅有4K,每页和每行每页和每行的大小也分别变为的大小也分别变为64字节和字节和32字节。字节。 (3)Flash的的整体擦除和页擦除整体擦除和页擦除 对于对于GP32单片机来说,对单片机来说,对Flash存储器的擦
7、除操作可以进行整体擦存储器的擦除操作可以进行整体擦除也可以仅擦除某一起始地址开始的一页(除也可以仅擦除某一起始地址开始的一页(128字节)。也就是说,不字节)。也就是说,不能仅擦除某一字节或一次擦除小于能仅擦除某一字节或一次擦除小于128字节。注意这一特点,在数据安字节。注意这一特点,在数据安排时尤为重要。排时尤为重要。GP32单片机的写入操作以行(单片机的写入操作以行(64字节)为基础,一次字节)为基础,一次连续写入数据个数只能在一行之内。当然,不经过擦除的区域,不能进连续写入数据个数只能在一行之内。当然,不经过擦除的区域,不能进行写入,这一点需特别注意。行写入,这一点需特别注意。 (2)F
8、lash片内单位:页(片内单位:页(Page)和行()和行(Row)11.2 GP32 Flash存储器编程方法(1)Flash控制寄存器(控制寄存器(Flash Control Register FLCR) FLCR的地址:的地址:$FE08,定义为:定义为: 11.2.2 Flash存储器的编程寄存器存储器的编程寄存器数据位数据位 D7 D6 D5 D4 D3 D2 D1 D0定义定义 HVEN MASS ERASE PGM复位复位 0 0 0 0 0 0 0 0D7D4位:未定义。位:未定义。D3HVEN位:高压允许位(位:高压允许位(High-VoltageEnableBit)。)。D
9、2MASS位:整体擦除控制位(位:整体擦除控制位(MassEraseControlBit)。)。D1ERASE位:擦除控制位(位:擦除控制位(EraseControlBit)。)。D0PGM位:编程(写入)控制位(位:编程(写入)控制位(ProgramControlBit)。)。 11.2 GP32 Flash存储器编程方法FLBPR的的地地址址:$FF7E,它它的的内内容容为为Flash保保护护区区域域的的起起始始地地址址的的147位位,保保护护区区域域的的起起始始地地址址的的最最高高位位始始终终为为1,而而保保护护区区域域的的起起始始地地址址的的低低7位位(位位60)始始终终为为0。对对F
10、LBPR写写入入,可可以以设设定定被被保保护护的的Flash区区域域,它它本本身身也也是是一一个个Flash字字节节。当当Flash处处于于保保护护状状态态时时,擦擦除除和和写写入入操操作作都都是是受受限限制制的的,HVEN将将无无法法被被正正常常置置起起。Flash块块保保护护寄寄存存器器设设定定的的只只是是保保护护区区域域的的起起始始地地址址,保保护护区区域域的的结结束束地地址址始始终终为为Flash存存储储区区的的结结束束地地址址($FFFF)。例例如如,设设定定FLBPR的的值值为为$02(%00000010),则则保保护护区区域域为为$8100$FFFF(%1000000100000
11、000%1111111111111111)。 特特别别情情况况是是: :FLBPR的的存存储储内内容容为为$00,整整个个Flash存存储储区区都都受受到到保保护护;如果如果FLBPR的存储内容为的存储内容为$FF,则整个则整个Flash存储区都可以被擦除或写入。存储区都可以被擦除或写入。 注:注:只有当单片机处于运行用户程序时,对只有当单片机处于运行用户程序时,对FLBPRFLBPR本身和本身和Flash保护区域的擦保护区域的擦写操作保护才是有效的。复位不影响写操作保护才是有效的。复位不影响FLBPR。 (2)Flash块块保保护护寄寄存存器器(Flash Block Protect Reg
12、ister FLBPR)11.2 GP32 Flash存储器编程方法注:注:对MC68HC908GP32而言的,而言的,FLBPRFLBPR设定的是定的是1616位起始地址的位起始地址的第第14147 7位(第位(第1515位恒位恒为1 1);而);而对MC68HC908JL3而言,它而言,它们设定的是定的是1616位起始地址的第位起始地址的第12125 5位(第位(第15151313位恒位恒为1)1) 。 GP32JL3FLBPR内容内容受受保护的保护的Flash区域区域FLBPR内容内容受保护的受保护的Flash区域区域$00(%0000 0000)$8000 $FFFF$00 $60$E
13、C00 $FFFF$01(%0000 0001)$8080 $FFFF$62(%0110 0010)$EC40 $FFFF$02(%0000 0010)$8100 $FFFF$64(%0110 0100)$EC80 $FFFF$68(%0110 1000)$ECC0 $FFFF$FE(%1111 1110)$FF00 $FFFF$FF(%1111 1111)Flash区不被保护$FE(%1111 1110)$FFC0 $FFFFGP32与与JL3芯片芯片Flash块保护寄存器设置比较块保护寄存器设置比较11.2 GP32 Flash存储器编程方法MC68HC908GP32的的Flash编程的基
14、本操作程的基本操作: (1)页擦除操作)页擦除操作 下面过程可以擦除下面过程可以擦除GP32的的Flash存储器的一页存储器的一页(128字节字节):$2FLCR(1ERASE位,位,0MASS位位):进行页面擦除;进行页面擦除; 读读Flash块保护寄存器块保护寄存器FLBPR; 向被擦除的向被擦除的Flash页内任意一个地址写入任意值,一般向待擦除页页内任意一个地址写入任意值,一般向待擦除页首地址写入首地址写入0; 延时延时tnvs(10s);$AFLCR(1HVEN位位); 延时延时terase(1ms); $8FLCR(0ERASE位位); 延时延时tnvh(5s); $0FLCR(0
15、HVEN位位); 延时延时trcv(1s),完成一页的擦除操作。完成一页的擦除操作。 11.2.3 Flash存储器的编程过程存储器的编程过程11.2 GP32 Flash存储器编程方法下面下面过程擦除程擦除GP32的整个的整个Flash区域,以便把新的程序装入区域,以便把新的程序装入Flash存存储器:器:$6FLCR(1ERASE位,位,1MASS位位): :进行整体擦除;进行整体擦除;读读Flash块保护寄存器块保护寄存器FLBPR;向被擦除的向被擦除的Flash任意一个地址写入任意值,为方便起见,一般任意一个地址写入任意值,为方便起见,一般向首地址写入向首地址写入0 0;延时延时tnv
16、s(10s) );$EFLCR(1HVEN位、位、MASS位、位、ERASE位位);延时延时tMerase(4ms);$CFLCR(0ERASE位位);延时延时tnvhl(100s);$0FLCR(0HVEN位、位、MASS位位);延时延时trcv(1s),完成整体擦除操作。完成整体擦除操作。 (2)整体擦除操作)整体擦除操作11.2 GP32 Flash存储器编程方法MC68HC908GP32的的Flash编程操作以行程操作以行(64字字节)为单位位进行的。写入行的。写入过程如下程如下:$1FLCR(1PGM位位);读读Flash块保护寄存器块保护寄存器FLBPR;向将要写入的向将要写入的F
17、lash行内任意一个地址写入任意值,为方便起见,一般向行行内任意一个地址写入任意值,为方便起见,一般向行首地址写入首地址写入0,这一步选定了所要编程的行,以下的目标地址必需在这一行中;,这一步选定了所要编程的行,以下的目标地址必需在这一行中;延时延时tnvs(10s);$9FLCR(1HVEN位位);延时延时tpgs(5s);待写数据写入对应的待写数据写入对应的Flash地址;地址;延时延时tprog(30s),完成一个字节的写入完成一个字节的写入(编程编程)工作;工作;重复重复、,直至同一行内各字节写入完毕;,直至同一行内各字节写入完毕;$8FLCR(0PGM位位);延时延时tnvh(5s)
18、;$0FLCR(0HVEN位位); 延时延时trcv(1s)以后,完成本行写入工作,可以读出校验。以后,完成本行写入工作,可以读出校验。 (3)编程操作)编程操作11.2 GP32 Flash存储器编程方法参数参数符号符号最小值最小值最大值最大值单位单位FlashFlash行大小行大小64646464字节字节FlashFlash页大小页大小128128128128字节字节FlashFlash读写周期读写周期t treadread 3232K K8.48.4M MHzHzFlashFlash页页擦除时间擦除时间t teraseerase 1 1msmsFlashFlash整体擦除时间整体擦除时间
19、t tmerasemerase 4 4msmsFlashFlash从从设置设置PGMPGM或或ERASEERASE位到位到HVENHVEN建立时间建立时间t tnvsnvs 1010s s FlashFlash高高电平维持时间电平维持时间( (页擦除时页擦除时) )t tnvsnvs 5 5ssFlashFlash高电平维持时间高电平维持时间( (整体擦除时整体擦除时) )t tnvhlnvhl 100100ssFlashFlash写入编程维持时间写入编程维持时间t tpgspgs 5 5nsnsFlashFlash写入编程时间写入编程时间t tprogprog 30304040ssFlash
20、Flash返回只读状态时间返回只读状态时间t trcvrcv 1 1ssFlashFlash累积高电平时间累积高电平时间t thvhv 2525msmsFlashFlash行行擦除次数擦除次数1010K K次数次数FlashFlash行行写入次数写入次数1010K K次数次数FlashFlash数据保持时间数据保持时间1010年年MC68HC908GP32的的Flash编程参数编程参数返回返回11.2 GP32 Flash存储器编程方法11.3 GP32单片机单片机Flash在线编程汇编语言实例在线编程汇编语言实例11.3.1 Flash存储器的擦除及写入汇编子程序存储器的擦除及写入汇编子程序
21、(1)擦除子程序擦除子程序(2)写入子程序写入子程序(3)擦除与写入子程序编程要点说明)擦除与写入子程序编程要点说明 RAM中中要要留留有有足足够够的的缓缓冲冲区区,以以便便存存放放复复制制到到RAM中中的的子子程程序,具体值是取擦除与写入子程序中的大者即可。序,具体值是取擦除与写入子程序中的大者即可。 擦擦除除及及写写入入子子程程序序中中要要调调用用的的延延时时子子程程序序均均随随其其后后,以以便便同同时时复制到复制到RAMRAM中,最后一个标号是为复制方便而加入中,最后一个标号是为复制方便而加入. . 擦除及写入子程序中对延时子程序的调用必需使用擦除及写入子程序中对延时子程序的调用必需使用
22、“BSR子程子程序名序名”,而不能使用,而不能使用 “ “JSR 子程序名子程序名”,因为这里的子程序是复制到,因为这里的子程序是复制到RAM中执行,程序地址已经发生了变化,只能用相对调用。中执行,程序地址已经发生了变化,只能用相对调用。 11.3 GP32 Flash在线编程汇编语言实例 擦擦除除子子程程序序与与写写入入子子程程序序及及其其中中的的延延时时子子程程序序,若若含含有有跳跳转转语语句句,不能使用,不能使用“JMP地址地址”,只能使用,只能使用“BRA 地址地址”。原因同上。原因同上。 使使用用不不同同型型号号芯芯片片时时,上上述述子子程程序序中中延延时时时时间间应应根根据据芯芯片
23、片手手册册予予以以变变动动。延延时时子子程程序序也也应应根根据据不不同同的的总总线线频频率率加加以以变变化化,确确保保时时间间满满足足时序要求。时序要求。 一一次次擦擦除除后后未未被被写写入入过过的的区区域域可可以以再再次次调调用用写写入入子子程程序序写写入入,但但写入过的区域,未经擦除不能重写。写入过的区域,未经擦除不能重写。 由由于于擦擦除除是是每每次次擦擦除除一一页页(128(128字字节节) ),所所以以数数据据应应合合理理安安排排,避避免误擦。免误擦。 页页首首地地址址的的定定义义须须遵遵照照保保护护寄寄存存器器FLBPRFLBPR定定义义的的规规则则,即即对对GP32来说,页地址的
24、低来说,页地址的低6 6位为位为0 0。 在线编程时使在线编程时使用的用的Flash存存储区域应在程序储区域应在程序FlashFlash存储区域之前,存储区域之前,因为因为Flash保护区为保护区为FLBPR决定的地址至末尾。决定的地址至末尾。 11.3 GP32 Flash在线编程汇编语言实例 (1)单片机方程序流程图)单片机方程序流程图 单片机方程序的主要功能是单片机方程序的主要功能是: : 不不断断地地向向PC机机发发出出握握手手信信号号,并并监监测测PC机机返返回回的的握握手手信信号号。可可以看到串行通信指示灯闪烁,表明以看到串行通信指示灯闪烁,表明MCU在向在向PC机发送握手信号。机
25、发送握手信号。 若若收收到到握握手手信信号号,表表明明PC机机可可以以发发送送数数据据,设设要要写写入入数数据据的的个个数数为为N,则则单单片片机机首首先先将将接接收收数数据据个个数数N放放入入内内存存(接接收收的的数数据据在在一一行行之之内,内,N小于等于小于等于64),随后接收,随后接收N个数据,放入内存缓冲区。个数据,放入内存缓冲区。 擦除指定擦除指定Flash区域,将收到的区域,将收到的N个数据写入个数据写入Flash区。区。 读出该读出该Flash区的数据,并发送到区的数据,并发送到PC机。机。 11.3.2 Flash存储器在线编程汇编主程序及存储器在线编程汇编主程序及PC方程序方
26、程序11.3 GP32 Flash在线编程汇编语言实例单单片片机机方方程程序序流流程程图图进行通信握手,发握手信号进行通信握手,发握手信号接收接收N(=64)内存内存接收接收N个数据放入内存缓冲区个数据放入内存缓冲区给擦除子程序给擦除子程序EraseSub的入口赋值的入口赋值,调用调用EraseSub,擦除擦除Flash区区$8000开始的一页开始的一页给给 写写 入入 子子 程程 序序 WriteSub的的 入入 口口 赋赋 值值 ,调调 用用WriteSub,将将N个数据写入个数据写入$8000开始的开始的Flash区区从从地地址址$8000开开始始的的Flash区区读读取取N个个数数据据
27、,同同时时从串行口发送出去从串行口发送出去NYHX赋初值赋初值$00HX+1=设定数设定数?A中是约定的握手信号吗中是约定的握手信号吗?串行口有串行口有数据吗数据吗?接收一个数据接收一个数据ANNY YY主循环开始处主循环开始处11.3 GP32 Flash在线编程汇编语言实例(3)PC机方程序机方程序及界面及界面(2)单片机方主程序单片机方主程序返回返回11.3 GP32 Flash在线编程汇编语言实例11.4 GP32单片机单片机Flash在线编程在线编程C语言实例语言实例v Flash存储器的擦除及写入存储器的擦除及写入C语言子程序语言子程序v Flash存储器在线编程存储器在线编程C语
28、言主函数语言主函数返回返回11.4 GP32 Flash在线编程C语言实例11.5 HCS08系列单片机系列单片机Flash编程方法编程方法11.5.1 Flash存储器的编程寄存器存储器的编程寄存器 在在MC9S08GB60单片机中,与单片机中,与Flash编程有关的寄存器有编程有关的寄存器有6个,它个,它们是们是Flash时钟分频寄存器(时钟分频寄存器(FCDIV)、)、Flash选项寄存器(选项寄存器(FOPT和和NVOPT)、)、Flash配置寄存器(配置寄存器(FCNFG)、)、Flash保护寄存器保护寄存器(FPROT和和NVPROT)、)、Flash状态寄存器(状态寄存器(FST
29、AT)和)和Flash命令寄命令寄存器(存器(FCMD),),对应的地址分别为对应的地址分别为$1820、$1821、$1823、$1824、$1825和和$1826。下面分别阐述这些寄存器的功能及用法。下面分别阐述这些寄存器的功能及用法。11.5 HC08系列单片机 Flash编程方法(1)Flash时钟分频寄存器(时钟分频寄存器(FLash Clock Divider Register FLCR)数据位数据位 D7D6D5D4D3D2D1D0定义定义DIVLDPRDIV8DIV5DIV4DIV3DIV2DIV1DIV0复位复位 00000000D7DIVLD位:分频设置状态标志位位:分频设
30、置状态标志位(DivisorLoadedStatusFlag),只读位。只读位。D6PRDIV8位:位:Flash预分频设置位预分频设置位(PrescaleFlashClockby8)。D5D0位:位:DIV5DIV0位,位,Flash时钟分频器的分频因子。时钟分频器的分频因子。Flash的内部工作时钟的内部工作时钟fFCLK的计算方法如下:的计算方法如下:如果如果PRDIV8=0,fFCLK=fbus(DIV5:DIV0+1)如果如果PRDIV8=1,fFCLK=fbus(8DIV5:DIV0+1) FLCR的地址:的地址:$1820,定义为:,定义为:11.5 HC08系列单片机 Flas
31、h编程方法(2)Flash选项寄存器(选项寄存器(Flash Options Register FOPT和和NVOPT)数据位数据位 D7D6D5D4D3D2D1D0定义定义KEYENFNORED-SEC01SEC00复位复位 将将NVOPT中的内容装载到该寄存器中中的内容装载到该寄存器中D7KEYEN位位:后后门门锁锁机机构构允允许许位位(Backdoor Key MechanismEnable)。KEYEN=0,表表示示不不能能用用后后门门锁锁机机构构来来解解除除存存储储器器的的保保密密性性;KEYEN=1,如如果果用用户户使使用用固固件件,写写入入8个个字字节节的的值值,并并且且和和后后
32、门门钥钥匙匙NVBACKKEYNVBACKKEY+7相相匹匹配配,在在MCU复复位位前前,存存储储器器的的保保密密性会暂时解除。性会暂时解除。D6FNORED位位:矢矢量量重重定定向向禁禁止止位位(VectorRedirectionDisable)。FNORED=1,矢量重定向禁止;反之允许。矢量重定向禁止;反之允许。D5D2位:未定义。位:未定义。D1D0位位SEC01SEC00位:安全状态码。位:安全状态码。 FOPT的地址:的地址:$1821,定义为:,定义为: 11.5 HC08系列单片机 Flash编程方法(3)Flash配置寄存器(配置寄存器(Flash Configure Reg
33、ister FCNFG)数据位数据位 D7D6D5D4D3D2D1D0定义定义KEYACC复位复位 0 0 0 0 0 0 0 0D7D6位、位、D4D0位:未定位:未定义。D5KEYACC位:写位:写访问钥匙允匙允许位位(EnableWritingofAccessKey)。KEYACC=1,表示写表示写BVBACKKEY($FFB0-$FFB7)被被认为是是进行密行密码比比较;KEYACC=0,表示写表示写BVBACKKEY($FFB0-$FFB7)被解被解释为Flash擦写命令的开始。擦写命令的开始。 FOPT的地址:的地址:$1823,定义为:,定义为: 11.5 HC08系列单片机 F
34、lash编程方法(4)Flash保护寄存器保护寄存器(Flash Protect Register FPORT和和NVPROT)数据位数据位 D7D6D5D4D3D2D1D0定义定义FPOPENFPDISFPS2FPS1FPS0复位复位 将将NVOPT中的内容装载到该寄存器中中的内容装载到该寄存器中D7FPOPEN位:打开位:打开Flash中的非保中的非保护区域位区域位(OpenUnprotectedFlashforProgram/Ease),打开的打开的这些区域可以些区域可以进行擦写。行擦写。FPOPEN=1,Flash中非保中非保护区域可以区域可以进行擦写操作;行擦写操作;FPOPEN=0
35、,整整个个Flash区域都不可区域都不可进行擦写操作。行擦写操作。D6FPDIS位:位:Flash保保护设置位置位(FlashProtectionDisable)。FPDIS=1,Flash不不进行保行保护;FPDIS=0,Flash保保护FPS2:FPS0所所设置置的区域。的区域。D5D3FPS2FPS0位:位:Flash保保护区域区域设置。置。FPDIS=0时,这3位决定了保位决定了保护区域的大小。区域的大小。D2D0位:未定位:未定义。 FPROT的地址:的地址:$1824,定义为:,定义为:11.5 HC08系列单片机 Flash编程方法(5)Flash状态寄存器状态寄存器(Flash
36、 Status Register FSTAT) 数据位数据位 D7D6D5D4D3D2D1D0定义定义FCBEFFCCFFPVIOLFACCERFBLANK复位复位 1 1 0 0 0 0 0 0D7FCBEF位:位:Flash命令命令缓冲区空冲区空标志位志位(FlashCommandBufferEmptyFlag)。D6FCCF位:位:Flash命令完成命令完成标志位志位(FlashCommandCompleteFlag)。D5FPVIO位:侵害保位:侵害保护标志位志位(ProtectionViolationFlag)。D4FACCER位:位:访问出出错标志位志位(AccessErrorFl
37、ag)。D2FBLANK位:位:Flash空白空白标志位志位(FlashVerifiedAllBlankFlag)。D3,D1D0位:未定位:未定义。 FSTAT的地址:的地址:$1825,定义为:,定义为:11.5 HC08系列单片机 Flash编程方法(6)Flash命令寄存器命令寄存器(Flash Command Register FCMD)数据位数据位 D7D6D5D4D3D2D1D0定义定义FCMD7FCMD6FCMD5FCMD4FCMD3FCMD2FCMD1FCMD0复位复位 0 0 0 0 0 0 0 0D7D0位:对位:对Flash进行访问的命令字节。进行访问的命令字节。Fla
38、sh访问命令表访问命令表命令命令命令字节命令字节空白检测空白检测$05写写一个字节一个字节$20写写一个字节(批量模式)一个字节(批量模式)$25页页擦除擦除$40整体擦除整体擦除$41FCMD的地址:的地址:$1826,定义为:,定义为:11.5 HC08系列单片机 Flash编程方法(1)Flash命令的执行步骤命令的执行步骤 向向Flash地址中写入一个数据地址中写入一个数据。地址和数据信息都会被锁定到。地址和数据信息都会被锁定到Flash接接口中。对于空白检测和擦除命令,数据信息是一个任意值;对于页擦除命令,口中。对于空白检测和擦除命令,数据信息是一个任意值;对于页擦除命令,地址信息是
39、擦除页地址信息是擦除页(512字节字节)地址中的任意一个地址;对于空白检测和整体擦地址中的任意一个地址;对于空白检测和整体擦除命令,地址信息是除命令,地址信息是Flash中的任意一个地址。中的任意一个地址。 向向Flash命令寄存器命令寄存器FCMD中写入需要执行的命令中写入需要执行的命令。 执行命令执行命令。将。将Flash状态寄存器状态寄存器FSTAT的的FCBEF位置位置1,同时开始执行,同时开始执行命令寄存器中的命令。命令寄存器中的命令。 11.5.2 Flash存储器的编程过程存储器的编程过程11.5 HC08系列单片机 Flash编程方法GB60Flash编编程程例例程程图图0开始
40、开始FACCERR?清错误标志清错误标志0设置设置FCDIV1向向FLASH地址中写入数地址中写入数据据向向FCMD中写入命令字中写入命令字FCBEF位置位置1,开始执,开始执行命令行命令FPVIO或或FACCEER?出错出错退出退出FCCF?101结束结束(2)Flash命令的执行流程命令的执行流程11.5 HC08系列单片机 Flash编程方法1开始开始FACCERR?清错误标志清错误标志0设置设置FCDIV10向向FLASH地址中写入地址中写入数据数据向向FCMD中写入命令中写入命令字字FCBEF位置位置1,开始,开始执行命令执行命令2FPVIO或或FACCEER?出错出错退出退出FCC
41、F?101结束结束FCCF?10新的批量写入新的批量写入指令吗?指令吗?0GB60 Flash批量写入流程图批量写入流程图11.5 HC08系列单片机 Flash编程方法在执行以下操作时,会导致出错,在执行以下操作时,会导致出错,FACCERR自动置自动置1 1: 在向在向Flash地址写入信息前没有进行地址写入信息前没有进行FCDIV寄存器设置;寄存器设置;在向在向Flash地址写入信息前地址写入信息前FCBEF没有置没有置1;在执行命令前,执行两次向在执行命令前,执行两次向Flash地址写入信息操作;地址写入信息操作;在向在向Flash地址写入信息后,设置除地址写入信息后,设置除FCMD外
42、的其他外的其他Flash控制寄控制寄存器;存器;向向FCMD中写入表中写入表11-6以外的命令字;以外的命令字;向向FCMD中写入命令字后,试图读写除中写入命令字后,试图读写除FSTAT外的寄存器;外的寄存器;在执行命令时,在执行命令时,MCU进入进入STOP模式;模式;MCU处于保密处于保密状态时,使用背景调试接口进状态时,使用背景调试接口进行页擦除或写行页擦除或写Flash操作操作(MCU处于保密状态时,使用背景调试接口只能进行空白测试或整体处于保密状态时,使用背景调试接口只能进行空白测试或整体擦除擦除);向向FCBEF位写位写0取消一个命令的执行。取消一个命令的执行。 (3)Flash命
43、令出错情况命令出错情况11.5 HC08系列单片机 Flash编程方法HCS08系列系列MCU使用硬件电路机制来防止非法用户试图访问使用硬件电路机制来防止非法用户试图访问Flash和和RAM存储器的数据。当设置保密性后,存储器的数据。当设置保密性后,Flash和和RAM都被看作保密资都被看作保密资源,直接页寄存器、高端页寄存器、背景调试模块被认为是非保密资源。源,直接页寄存器、高端页寄存器、背景调试模块被认为是非保密资源。执行过程中,可以访问任何位置的内存数据,但通过背景调试接口或不执行过程中,可以访问任何位置的内存数据,但通过背景调试接口或不安全的方式来访问保密资源是不允许的。安全的方式来访
44、问保密资源是不允许的。保密性设置依赖于保密性设置依赖于FOPTFOPT中非易失性的数据位中非易失性的数据位SEC01SEC01:SEC00SEC00来实现。来实现。 11.5.3 Flash存储器的安全性存储器的安全性返回返回11.5 HC08系列单片机 Flash编程方法本章主要以本章主要以HC08系列中的系列中的GP32为例阐述为例阐述Flash存储器的在线编存储器的在线编程方法,也简要阐述了程方法,也简要阐述了HCS08系列中系列中GB60的在线编程方法。本章首的在线编程方法。本章首先概述了先概述了Flash存储器的基本特点,并介绍其编程模式,随后给出存储器的基本特点,并介绍其编程模式,随后给出M68HC908GP32的的Flash存储器编程的基本操作及汇编语言和存储器编程的基本操作及汇编语言和C语言语言的在线编程实例。最后讨论的在线编程实例。最后讨论MC9S08GB60的的Flash存储器编程方法。存储器编程方法。本章小结本章小结返回返回