关于XEP100中flash驱动的读写和擦除问题...
- UID
- 846090
|
关于XEP100中flash驱动的读写和擦除问题...
Flash.rar (934 Bytes)
1.写flash时,需要分页,设置PPAGE吗?如果要,怎样由逻辑地址转换成全局地址? 比如:1)当PPAGE=0xC0时,对应的全局地址就是:0x70_0000--0x70_3FFFF;
2)当PPAGE=0xFF时,对应的全局地址就是:0x7F_C000--0x7F_FFFF;
那么,在程序里面该怎么进行由逻辑地址到全局地址之间的转换.(求转换的代码)
2.写flash时,是在程序里面写入4个word并发送后再对地址加8?还是每入写一个word就对地址加2,写完4个word再发送?
3.擦除flash时,需要需要分页,设置PPAGE吗?擦除程序里面的全局地址是直接给,还是通过PPAGE分页以后由逻辑地址转换而来?
4.实验板上的晶振是4MHZ的,初始化的时候对寄存器FCLKDIV应该赋值0x03还是0x04?
程序已经调试快3个月了,一直没通过,恳请大家帮帮小弟,谢谢...(附件里面是我写的代码,麻烦各位大牛帮小弟看看) |
|
|
|
|
|
- UID
- 846090
|
|
|
|
|
|
- UID
- 846090
|
另外的问题:如果我在全局地址0x700000开始写入4word的数据,比如0x1122,0x3344,0x5566,0x7788.
然后执行下面的语句:
unsigned char i;
i=*((unsigned char*)0x700000);
为什么读不出来地址为0x700000的值???我已经把数据写进去了,但是就是读不出来...我试过延时一两秒钟以后在读数据,结果还是读不出来...麻烦大家指教指教,谢谢... |
|
|
|
|
|
- UID
- 846090
|
还有一个问题:如何取消当前对flash的操作???我尝试过三种方式.
1)写入:FSTAT = 0x80; (测试过,未能取消当前正在对flash所执行的操作)
2)写入:FSTAT = 0x30; (测试过,也未能取消当前正在对flash所执行的操作)
3)写入:FSTAT = 0x80|0x30; (测试过,还是未能取消当前正在对flash所执行的操作)
恳请各位指教,该如何取消对flash的操作.... |
|
|
|
|
|
- UID
- 846090
|
关于flash写和查出的问题已经解决:
不需要分页,命令里面的地址都是全局地址.而debug环境里面地址栏默认的是逻辑地址,点击右键将逻辑地址改成全局地址就可以观察数据了.... |
|
|
|
|
|
- UID
- 843325
|
请教,我使用的MC68HC912B32CFUE8芯片,
下载程序是提示没有编程电压(flash),当时我测了VFP引脚有5v,这是什么回事,先谢了? |
|
|
|
|
|
- UID
- 846090
|
对于读数据的问题...已经解决...两种方法:
1.给定全局地址读取数据...2.给定逻辑地址读取数据...
下面仅仅介绍第一种...
unsigned char i;
i=*((unsigned char *__far)0x700000;
这样就可以读出全局地址为0x700000的值了...因为far指针的长度是32位,可得到的寻址范围是1M...而普通指针的寻址范围是64K... |
|
|
|
|
|
- UID
- 852707
|
你要是还没解决的话,加我QQ吧,XEP100的FLASH我算是研究透了,还有建议你静下心去看芯片手册,这是王道!714296759 |
|
|
|
|
|