首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[求助]HC908JK3中FLASH擦写问题

[求助]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]这两种波形交替出现,但是结果是只出现第二种波形,说明了第一次写入是成功的,但是后面的擦写是不成功的。
这里请教各位高手,是我的测试程序错误还是怎么回事?
JK3可以直接调用ROM中的flash操作程序,可以参考应用笔记AN2874和其范例程序
呵呵,是的,程序里的$FC06和$FC09就是擦写程序入口地址~
我想第一次能够写入成功是因为0xEC00段初始值为FF,后面写入不成功是因为擦除程序没有起作用。
问题是为什么擦除会不成功。AN1831、AN2183、AN2346、AN2874都看了。
没有看到你对$88地址的操作,告诉程序是mass erase还是page erase
还是需要专门从$88开始,开一段空间来存放你操作的内容,按照AN2874的方式来做,你这样写有些乱。一般都是从base address逐一填写内容
我按照AN2874的文档来做,结果还是一样,擦写不成功。
你有没有关掉COP和中断?
海纳百川  有容乃大
返回列表