M68HC08 Flash存储器编程
1 编程方法
M68HC08具有 Flash存储器,它一般用作程序存储器,不能在运行时随时擦除、写入。
许多单片机应用场合需要使用掉电不丢失内容的数据存储器,这一般用 EEPROM实现。为
节省成本,可使用 M68HC08 的 Flash 存储器作这种数据的存储器。由于擦除、写入 Flash
存储器的程序不能位于 Flash 存储器中,所以必须把该程序放于 RAM或 ROM 中,这种程
序应使用特殊的编程方法。
一、一般MC68HC908的 Flash存储器的在线擦除、编程方法
MC68HC908 具有 Flash 编程寄存器(FLCR),它控制 Flash 存储器的擦除和编程。一般
位 0为 PGM位,编程时置位;位 1为 ERASE位,擦除时置位;位 2为MASS位,用作数
据存储器,不应使用(0);位 3位 HVEN位,执行编程或擦除操作时置位,在 FLCR不为零
时不能读出 Flash存储器(包括执行程序)。
M68HC908还有 Flash块保护寄存器,它对应于 Flash保护区首地址的高位地址线。用
户程序必须位于保护区内,而需改写的数据存储区应位于保护区外。
注意:有的芯片的该寄存器采用 Flash单元,有的采用 RAM单元。后者在复位后应写
入保护地址。
M68HC908的 Falsh擦除、编程方法见第二章,这里不再重复。
二、GP32等 Flash编程方法
对于有较大 RAM的M68HC908,如 GP32、SR12、MR32等,可采取以下编程方法:
(1)在用户程序(Flash保护区)内编写、存放 Flash的擦除和编程子程序。
(2)在对 Flash编程前,把擦除子程序从 Flash拷贝至 RAM中。
(3)在对 Flash编程前,把将擦除的 Flash数据区的内容拷贝至 RAM中。它的大小取决
于所使用芯片型号,例如 GP32擦除时一块大小为 128字节。对需改写的单元,应在 RAM
中进行修改。
(4)转至 RAM执行控除 Flash的子程序,执行完返回主程序(Flash中)。
(5)把编程子程序从 Flash拷贝至 RAM中。
(6)转至 RAM 执行编程子程序,完成把 RAM 中数据(包括新数据和不改写但已被擦除
的数据)写入 Flash中。执行完返回主程序,即完成了一次编程操作。
三、GP32等 Flash的在线擦除、编程程序
WBF1 EQU $50 ;Working Buffer 1
WBF2 EQU $51 ; Working Buffer 2
COUNT EQU $52 ; Write Counter1~128
WTME EQU $53 ; Wait Time 32MHz: 24,16MHz: 12
TMP EQU $54
DBUF EQU $100 ; Data to be writen to Flash
CBUF EQU $180
FLCR EQU $FE08
FLSPR EQU $FF7E
FLSH EQU $8000
FRGM: SEI ;Flash memory PGM Subroutine
CLRH
CLRX
PRGM1: LDA EFLASH,X ;Erase Flash Code→RAM:CBUF
STA CBUF,X
INCX
CPX #EFEND-EFLASH
BLO PRGM1
LDHX #FLSH ;Erase Address
MOV #24,WTIME ;32MHz
JSR CBUF ;Execute Flash erase
CLRX
CLRH
PRGM2: LDA WFLASH,X ;Write Flash Code→RAM:CBUF
STA CBUF,X
INCX
CPX #EFLASH-WFLASH
BLO PRGM2
LDHX #FLSH ;Programming address
MOV #24,WTIME ;32MHz
MOV #128,COUNT ;128 Bytes
JSR CBUF ;Execute Flash Write
RTS
WFLASH: CLR WBF2 ;Entry:H:X Flash Address
LDA COUNT
CMP #64
BLS WFLSH0
SUB $64
STA COUNT
LDA #64
BRA WFLSH1
WFLSH0: CLRA
WFLSH1: PSHA
LDA #1 ;1→PGM
STA FLCR
LDA FLSPR ;Read Flash Protect Reg
STA ,X
BSR P1DL10
LDA #9 ;1→HVEN
STA FLCR
BSR P1DL10
WFLSH2: PSHH
PSHX
CLRH
LDX WBF2
LDA DBUF,X ;Read DATA
PULX
PULH
STA ,X ;Write to Flash
BSR P1DL30
AIX #1
INC WBF2
DBNZ COUNT,WFLSH2;Loop 1 Page(1—64 Bytes)
LDA #8
STA FLCR
BSR P1DL10
LDA #0
STA FLCR
PULA
TSTA
BEQ WFLSH3
STA COUNT ;Second Write
BRA WFLSH0
WFLSH3: RTS
P1DL30: MOV #3,WBF1 ;Delay 30 s
BRA P1DL1
P1DL10: MOV #1,WBF1 ;Delay 10 s
P1DL1: LDA WTIME
P1DL2: DBNZA P1DL2
DEC WBF1
BNE P1DL1
RTS
EFLASH: LDA #2 ;H:X=Erase Address
STA FLCR ;1→ERASE
LDA FLSPR ;Read Flash Protect Reg
STA ,X
EFLASH0: BSR EDL10
LDA # $A ;1→HVEN
STA FLCDR
BSR EDLK
LDA #8
STA FLCR
BSR EDL10
CLRA
STA FLCR
RTS
EDLK: MOV #100,WBF1
BRA EDL1
EDL10: MOV #1,WBF1
EDL1: LDA WTIME
EDL2: DBNZA EDL2
DBNZ WBF1,EDL1
RTS
EFEND: NOP
程序中 EFLASH为 Flash擦除程序,WFLASH为 Flash写入程序(编程),它们必须拷贝
至 RAM中执行。PRGM为擦除、写入执行程序。它先把 Eflash拷贝至 RAM的 CBUF中,
再执行CBUF的程序擦除Flash $8000~$807F的数据,然后把WFLASH拷贝至RAM的CBUF
中,最后执行 CBUF的马 DBUF中的数据(128字节)写入 Flash的$8000~$807F中。WTIME
中存放延时参数(与晶振频率有关)(32MHz为 24,10MHz为 8)。执行 PRGM前,应先把 Flash
$8000~$807F的内容拷贝至 RAM的 DBUF中,并按需修改其中的数据。执行本程序时,应
禁止中断和 COP,否则应加入清 COP的指令。
2 JL3等 Flash的编程方法
JL3/JK3有 4K字节 Flash,但它的 RAM仅有 128字节。而它一次擦除的 Flash块大小
为 64字节,剩余 RAM不足以放入擦除或编程程序。但 JL3/JK3的监控 ROM比较大,它包
含了许多子程序,包括擦除和写入子程序。
一、擦除子程序
入口地址:$FC06
入口时,RAM$89为延时参数(与晶振频率有关,32MHz为 32,10MHz为 10),$88应为
0,H:X指向擦除地址。
调用它,擦除 H:X指向的 64字节块 Flash存储器。
二、写入子程序
入口地址:$FC09
入口时,RAM$89为延时参数(同上),H:X为写入开始地址,$8A:$8B为写入结束地
址,$8C开始为写入数据。
调用后,把 RAM从$8C开始的数据写入从(H:X)开始到($8A:$8B)为止的 Flash存储
器中。
三、使用方法
首先把要写入的 Flash存储器所在的一页(64字节)内容拷贝到 RAM的从$8C开始的单
元中,按需要修改其中的数据,然后执行以下子程序(假设写入$EC00~$EC3F)。
四、JL3等 Flash的在线控除编程程序
PRGM: LDA # $62 ;保护区为$EC40~$FFFF
STA $FE09 ;FLSPR
MOV $32,$89 ;32MHz
LDHX # $EC00 ;Flash擦除子程序
JSR $FC06 ;擦除子程序
MOV #32,$89 ;32MHz
LDHX # $EC3F ;Flash写入结束地址
STHX $8A
LDHX # $EC00 ;Flash写入首地址
JSR $FC09 ;写入子程序
RTS
五、其他M68HC908编程、擦除子程序
除了 JL3/JK3外,其他片内 RAM较少的M68HC908的监控 ROM中也有编程、擦除子
程序。但它们的入口地址和数据地址与 JL3/JK3略有不同,见下表:
JL3/JK3 JB8 GR8 KX8
擦除子程序入口地址 $FC06 $FC06 $1C06 $1006
写入子程序入口地址 $FC09 $FC09 $1C09 $1009
全局控除控制单元 $88 $48 $48 $48
延时参数存放单元 $89 $49 $49 $49
写入结束地址存放单元 $8A:$8B $4A:$4B $4A:$4B $4A:$4B
写入数据开始地址 $8C $4C $4C $4C
本文档为【68HC08Flash存储器的使用方法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。