Board logo

标题: [求助]HC908JK3中FLASH擦写问题 [打印本页]

作者: duck_02    时间: 2007-4-3 16:49     标题: [求助]HC908JK3中FLASH擦写问题

我已经查过前面关于FLASH擦写的帖子了,而且相关文档也看过了,还是没有搞懂。我只有一台示波器来测试芯片的擦写性能。主要测试代码如下:
MOV #%00011001,CONFIG1
MOV #%00000011,DDRB
MOV #1,PTB
LDA $EC00 ;如果第一次读取这里的内容,应该是FF

CMP #1
BEQ stat1

MOV #1,$8C
JMP flash_test
stat1:
NOP
MOV #2,$8C

flash_test:
LDA #$62
STA $FE09

;擦除
MOV #10,$89 ;用了个9.8MHZ的晶体
LDHX #$EC00
JSR $FC06

;写入
MOV #10,$89
LDHX #$EC01
STHX $8A
LDHX #$EC00
JSR $FC09

MOV #3,PTB
MOV #$64,$80
last_test:
nop
nop
nop
nop
DBNZ $80,last_test

LDA $EC00
STA PTB
程序是从EC40开始的,EC00段开始为FF,所以如果运行以上程序的话,示波器上的波形应该是[PTB0,PTB1]=[1,0][1,1][1,0] 和 [1,0][1,1][0,1]这两种波形交替出现,但是结果是只出现第二种波形,说明了第一次写入是成功的,但是后面的擦写是不成功的。
这里请教各位高手,是我的测试程序错误还是怎么回事?
作者: seuafu2005    时间: 2007-4-3 17:40

JK3可以直接调用ROM中的flash操作程序,可以参考应用笔记AN2874和其范例程序
作者: duck_02    时间: 2007-4-4 00:58

呵呵,是的,程序里的$FC06和$FC09就是擦写程序入口地址~
作者: duck_02    时间: 2007-4-4 10:24

我想第一次能够写入成功是因为0xEC00段初始值为FF,后面写入不成功是因为擦除程序没有起作用。
问题是为什么擦除会不成功。AN1831、AN2183、AN2346、AN2874都看了。
作者: seuafu2005    时间: 2007-4-4 14:19

没有看到你对$88地址的操作,告诉程序是mass erase还是page erase
还是需要专门从$88开始,开一段空间来存放你操作的内容,按照AN2874的方式来做,你这样写有些乱。一般都是从base address逐一填写内容
作者: duck_02    时间: 2007-4-7 08:41

我按照AN2874的文档来做,结果还是一样,擦写不成功。
作者: strongchen    时间: 2007-4-9 10:02

你有没有关掉COP和中断?




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0