




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十一章Flash存储器的在线编程,主要内容Flash存储器概述与编程模式MC68HC908GP32单片机Flash存储器编程方法GP32单片机Flash在线编程汇编语言实例GP32单片机Flash在线编程C语言实例HCS08系列单片机Flash编程方法,嵌入式应用技术基础教程课件,11.1Flash存储器概述与编程模式,11.1Flash存储器概述与编程模式,11.1.1Flash存储器的基本特点与编程模式(1)Flash存储器的基本特点固有不挥发性易更新性成本低、密度高、可靠性好(2)Flash存储器的两种编程模式监控模式(MonitorMode)或写入器模式用户模式(UserMode)或在线编程模式,嵌入式应用技术基础教程课件,11.1Flash存储器概述与编程模式,(1)M68HC08系列单片机Flash存储器的特点第一,编程速度快及可靠性高。第二,单一电源电压供电。第三,支持在线编程。,嵌入式应用技术基础教程课件,11.1.2M68HC08系列单片机Flash存储器的特点与编程模式,11.1Flash存储器概述与编程模式,嵌入式应用技术基础教程课件,M68HC908系列单片机中绝大多数型号在其内部带有监控ROM,其地址和大小取决于芯片型号。Flash存储器工作于监控模式的条件是:复位向量($FFFE$FFFF)内容为“空”($FFFF)。单片机复位时在IRQ引脚上加上高电压(1.42Vdd),并给某些I/O脚置适当值(与芯片型号有关,设计时,参考芯片手册)。M68HC908系列单片机的Flash存储器工作于用户模式不需要特别的条件,在单片机正常工作的过程中,程序可以随时转入对Flash存储器进行编程操作。这种情况下对Flash存储器的擦除与写入,不需要用户提供其它外部硬件条件。,(2)M68HC08系列单片机Flash存储器的编程模式,返回,11.2GP32Flash存储器编程方法,11.2MC68HC908GP32单片机Flash存储器编程方法,11.2.1Flash存储器编程的基本概念(1)对Flash编程的两种基本操作:擦除(Erase)和写入(Program)擦除操作的含义是将存储单元的内容由二进制的0变成1,写入操作的含义是将存储单元的内容由二进制的1变成0。擦除及写入操作都是通过设置或清除Flash存储器的控制寄存器(FLCR)中的某个或某些位来完成的。,嵌入式应用技术基础教程课件,11.2GP32Flash存储器编程方法,页和行的大小(字节数)随整个Flash存储器的大小变化而变化,但页的大小始终为行的两倍。例如MC68HC908GP32内含32K的Flash存储器(地址为$8000$FDFF),每页的大小为128字节,每行的大小为64字节;而MC68HC908JL3片内Flash存储器仅有4K,每页和每行的大小也分别变为64字节和32字节。(3)Flash的整体擦除和页擦除对于GP32单片机来说,对Flash存储器的擦除操作可以进行整体擦除也可以仅擦除某一起始地址开始的一页(128字节)。也就是说,不能仅擦除某一字节或一次擦除小于128字节。注意这一特点,在数据安排时尤为重要。GP32单片机的写入操作以行(64字节)为基础,一次连续写入数据个数只能在一行之内。当然,不经过擦除的区域,不能进行写入,这一点需特别注意。,嵌入式应用技术基础教程课件,(2)Flash片内单位:页(Page)和行(Row),11.2GP32Flash存储器编程方法,(1)Flash控制寄存器(FlashControlRegisterFLCR)FLCR的地址:$FE08,定义为:,11.2.2Flash存储器的编程寄存器,D7D4位:未定义。D3HVEN位:高压允许位(High-VoltageEnableBit)。D2MASS位:整体擦除控制位(MassEraseControlBit)。D1ERASE位:擦除控制位(EraseControlBit)。D0PGM位:编程(写入)控制位(ProgramControlBit)。,嵌入式应用技术基础教程课件,11.2GP32Flash存储器编程方法,FLBPR的地址:$FF7E,它的内容为Flash保护区域的起始地址的147位,保护区域的起始地址的最高位始终为1,而保护区域的起始地址的低7位(位60)始终为0。对FLBPR写入,可以设定被保护的Flash区域,它本身也是一个Flash字节。当Flash处于保护状态时,擦除和写入操作都是受限制的,HVEN将无法被正常置起。Flash块保护寄存器设定的只是保护区域的起始地址,保护区域的结束地址始终为Flash存储区的结束地址($FFFF)。例如,设定FLBPR的值为$02(%00000010),则保护区域为$8100$FFFF(%1000000100000000%1111111111111111)。特别情况是:FLBPR的存储内容为$00,整个Flash存储区都受到保护;如果FLBPR的存储内容为$FF,则整个Flash存储区都可以被擦除或写入。注:只有当单片机处于运行用户程序时,对FLBPR本身和Flash保护区域的擦写操作保护才是有效的。复位不影响FLBPR。,嵌入式应用技术基础教程课件,(2)Flash块保护寄存器(FlashBlockProtectRegisterFLBPR),11.2GP32Flash存储器编程方法,注:对MC68HC908GP32而言的,FLBPR设定的是16位起始地址的第147位(第15位恒为1);而对MC68HC908JL3而言,它们设定的是16位起始地址的第125位(第1513位恒为1)。,嵌入式应用技术基础教程课件,GP32与JL3芯片Flash块保护寄存器设置比较,11.2GP32Flash存储器编程方法,MC68HC908GP32的Flash编程的基本操作:(1)页擦除操作下面过程可以擦除GP32的Flash存储器的一页(128字节):$2FLCR(1ERASE位,0MASS位):进行页面擦除;读Flash块保护寄存器FLBPR;向被擦除的Flash页内任意一个地址写入任意值,一般向待擦除页首地址写入0;延时tnvs(10s);$AFLCR(1HVEN位);延时terase(1ms);$8FLCR(0ERASE位);延时tnvh(5s);$0FLCR(0HVEN位);延时trcv(1s),完成一页的擦除操作。,11.2.3Flash存储器的编程过程,嵌入式应用技术基础教程课件,11.2GP32Flash存储器编程方法,下面过程擦除GP32的整个Flash区域,以便把新的程序装入Flash存储器:$6FLCR(1ERASE位,1MASS位):进行整体擦除;读Flash块保护寄存器FLBPR;向被擦除的Flash任意一个地址写入任意值,为方便起见,一般向首地址写入0;延时tnvs(10s);$EFLCR(1HVEN位、MASS位、ERASE位);延时tMerase(4ms);$CFLCR(0ERASE位);延时tnvhl(100s);$0FLCR(0HVEN位、MASS位);延时trcv(1s),完成整体擦除操作。,(2)整体擦除操作,嵌入式应用技术基础教程课件,11.2GP32Flash存储器编程方法,MC68HC908GP32的Flash编程操作以行(64字节)为单位进行的。写入过程如下:$1FLCR(1PGM位);读Flash块保护寄存器FLBPR;向将要写入的Flash行内任意一个地址写入任意值,为方便起见,一般向行首地址写入0,这一步选定了所要编程的行,以下的目标地址必需在这一行中;延时tnvs(10s);$9FLCR(1HVEN位);延时tpgs(5s);待写数据写入对应的Flash地址;延时tprog(30s),完成一个字节的写入(编程)工作;重复、,直至同一行内各字节写入完毕;$8FLCR(0PGM位);延时tnvh(5s);$0FLCR(0HVEN位);延时trcv(1s)以后,完成本行写入工作,可以读出校验。,嵌入式应用技术基础教程课件,(3)编程操作,11.2GP32Flash存储器编程方法,MC68HC908GP32的Flash编程参数,返回,11.3GP32Flash在线编程汇编语言实例,11.3GP32单片机Flash在线编程汇编语言实例,11.3.1Flash存储器的擦除及写入汇编子程序(1)擦除子程序(2)写入子程序(3)擦除与写入子程序编程要点说明RAM中要留有足够的缓冲区,以便存放复制到RAM中的子程序,具体值是取擦除与写入子程序中的大者即可。擦除及写入子程序中要调用的延时子程序均随其后,以便同时复制到RAM中,最后一个标号是为复制方便而加入.擦除及写入子程序中对延时子程序的调用必需使用“BSR子程序名”,而不能使用“JSR子程序名”,因为这里的子程序是复制到RAM中执行,程序地址已经发生了变化,只能用相对调用。,嵌入式应用技术基础教程课件,11.3GP32Flash在线编程汇编语言实例,擦除子程序与写入子程序及其中的延时子程序,若含有跳转语句,不能使用“JMP地址”,只能使用“BRA地址”。原因同上。使用不同型号芯片时,上述子程序中延时时间应根据芯片手册予以变动。延时子程序也应根据不同的总线频率加以变化,确保时间满足时序要求。一次擦除后未被写入过的区域可以再次调用写入子程序写入,但写入过的区域,未经擦除不能重写。由于擦除是每次擦除一页(128字节),所以数据应合理安排,避免误擦。页首地址的定义须遵照保护寄存器FLBPR定义的规则,即对GP32来说,页地址的低6位为0。在线编程时使用的Flash存储区域应在程序Flash存储区域之前,因为Flash保护区为FLBPR决定的地址至末尾。,11.3GP32Flash在线编程汇编语言实例,(1)单片机方程序流程图单片机方程序的主要功能是:不断地向PC机发出握手信号,并监测PC机返回的握手信号。可以看到串行通信指示灯闪烁,表明MCU在向PC机发送握手信号。若收到握手信号,表明PC机可以发送数据,设要写入数据的个数为N,则单片机首先将接收数据个数N放入内存(接收的数据在一行之内,N小于等于64),随后接收N个数据,放入内存缓冲区。擦除指定Flash区域,将收到的N个数据写入Flash区。读出该Flash区的数据,并发送到PC机。,11.3.2Flash存储器在线编程汇编主程序及PC方程序,嵌入式应用技术基础教程课件,11.3GP32Flash在线编程汇编语言实例,单片机方程序流程图,嵌入式应用技术基础教程课件,11.3GP32Flash在线编程汇编语言实例,(3)PC机方程序及界面,(2)单片机方主程序,嵌入式应用技术基础教程课件,返回,11.4GP32Flash在线编程C语言实例,11.4GP32单片机Flash在线编程C语言实例,Flash存储器的擦除及写入C语言子程序Flash存储器在线编程C语言主函数,嵌入式应用技术基础教程课件,返回,11.5HC08系列单片机Flash编程方法,11.5HCS08系列单片机Flash编程方法,11.5.1Flash存储器的编程寄存器在MC9S08GB60单片机中,与Flash编程有关的寄存器有6个,它们是Flash时钟分频寄存器(FCDIV)、Flash选项寄存器(FOPT和NVOPT)、Flash配置寄存器(FCNFG)、Flash保护寄存器(FPROT和NVPROT)、Flash状态寄存器(FSTAT)和Flash命令寄存器(FCMD),对应的地址分别为$1820、$1821、$1823、$1824、$1825和$1826。下面分别阐述这些寄存器的功能及用法。,嵌入式应用技术基础教程课件,11.5HC08系列单片机Flash编程方法,(1)Flash时钟分频寄存器(FLashClockDividerRegisterFLCR),嵌入式应用技术基础教程课件,D7DIVLD位:分频设置状态标志位(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.5HC08系列单片机Flash编程方法,(2)Flash选项寄存器(FlashOptionsRegisterFOPT和NVOPT),D7KEYEN位:后门锁机构允许位(BackdoorKeyMechanismEnable)。KEYEN=0,表示不能用后门锁机构来解除存储器的保密性;KEYEN=1,如果用户使用固件,写入8个字节的值,并且和后门钥匙NVBACKKEYNVBACKKEY+7相匹配,在MCU复位前,存储器的保密性会暂时解除。D6FNORED位:矢量重定向禁止位(VectorRedirectionDisable)。FNORED=1,矢量重定向禁止;反之允许。D5D2位:未定义。D1D0位SEC01SEC00位:安全状态码。,嵌入式应用技术基础教程课件,FOPT的地址:$1821,定义为:,11.5HC08系列单片机Flash编程方法,(3)Flash配置寄存器(FlashConfigureRegisterFCNFG),D7D6位、D4D0位:未定义。D5KEYACC位:写访问钥匙允许位(EnableWritingofAccessKey)。KEYACC=1,表示写BVBACKKEY($FFB0-$FFB7)被认为是进行密码比较;KEYACC=0,表示写BVBACKKEY($FFB0-$FFB7)被解释为Flash擦写命令的开始。,嵌入式应用技术基础教程课件,FOPT的地址:$1823,定义为:,11.5HC08系列单片机Flash编程方法,(4)Flash保护寄存器(FlashProtectRegisterFPORT和NVPROT),D7FPOPEN位:打开Flash中的非保护区域位(OpenUnprotectedFlashforProgram/Ease),打开的这些区域可以进行擦写。FPOPEN=1,Flash中非保护区域可以进行擦写操作;FPOPEN=0,整个Flash区域都不可进行擦写操作。D6FPDIS位:Flash保护设置位(FlashProtectionDisable)。FPDIS=1,Flash不进行保护;FPDIS=0,Flash保护FPS2:FPS0所设置的区域。D5D3FPS2FPS0位:Flash保护区域设置。FPDIS=0时,这3位决定了保护区域的大小。D2D0位:未定义。,嵌入式应用技术基础教程课件,FPROT的地址:$1824,定义为:,11.5HC08系列单片机Flash编程方法,(5)Flash状态寄存器(FlashStatusRegisterFSTAT),D7FCBEF位:Flash命令缓冲区空标志位(FlashCommandBufferEmptyFlag)。D6FCCF位:Flash命令完成标志位(FlashCommandCompleteFlag)。D5FPVIO位:侵害保护标志位(ProtectionViolationFlag)。D4FACCER位:访问出错标志位(AccessErrorFlag)。D2FBLANK位:Flash空白标志位(FlashVerifiedAllBlankFlag)。D3,D1D0位:未定义。,嵌入式应用技术基础教程课件,FSTAT的地址:$1825,定义为:,11.5HC08系列单片机Flash编程方法,(6)Flash命令寄存器(FlashCommandRegisterFCMD),D7D0位:对Flash进行访问的命令字节。,Flash访问命令表,嵌入式应用技术基础教程课件,FCMD的地址:$1826,定义为:,11.5HC08系列单片机Flash编程方法,(1)Flash命令的执行步骤向Flash地址中写入一个数据。地址和数据信息都会被锁定到Flash接口中。对于空白检测和擦除命令,数据信息是一个任意值;对于页擦除命令,地址信息是擦除页(512字节)地址中的任意一个地址;对于空白检测和整体擦除命令,地址信息是Flash中的任意一个地址。向Flash命令寄存器FCMD中写入需要执行的命令。执行命令。将Flash状态寄存器FSTAT的FCBEF位置1,同时开始执行命令寄存器中的命令。,11.5.2Flash存储器的编程过程,嵌入式应用技术基础教程课件,11.5HC08系列单片机Flash编程方法,GB60Flash编程例程图,(2)Flash命令的执行流程,11.5HC08系列单片机Flash编程方法,GB60Flash批量写入流程图,11.5HC08系
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电厂防雨棚施工方案(3篇)
- 学校主题墙施工方案(3篇)
- 新疆化学考试题库及答案
- 北京市门头沟区2023-2024学年八年级上学期期末质量监测历史考试题目及答案
- 安徽省宣城市郎溪县2024-2025学年高一下学期第一次月考数学考试题目及答案
- 写升国旗应用题目及答案
- 小学作文题目试卷及答案
- 第一次买东西作文12篇
- 海燕象征意义与精神力量探究教案
- 我的校园故事300字9篇
- T/CECS 10344-2023绿色装配式边坡防护面层
- 护理分层培训体系构建与应用
- 2025建造师二级考试题库及答案
- 员工自付社保协议书
- 网络直播带货对大学生消费观的影响机制研究
- cvte2107校招笔试题目及答案
- 活鹅宰杀协议书
- AI技术提升医学人才培养质量的探索与实践
- 美宜佳转让协议合同
- 混改公司合同协议模板
- 儿童多种维生素课件
评论
0/150
提交评论