8724|16

75

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

STC12c5a单片机外扩flash,使用XBYTE读取flash的数据 [复制链接]

我最近遇到一个问题,请教各位高手。
STC12c5a单片机,外扩flash,p0口复用为低8位地址线和8位数据位,p2为高8位地址线。

我使用XBYTE读取flash的数据,总有读错的情况发生。程序如下:
ReadData=XBYTE[BankAddress];
  _nop_();
  _nop_();
_nop_();
  _nop_();
_nop_();
五个 _nop_();的时候错误最少,但也有读错为BF,FF的情况。4个或者6个都错的比5个多。
不知道怎么办?请各位大侠指点,感激不尽。

最新回复

读不需要指令的. 写才要指令序列.  详情 回复 发表于 2010-7-1 10:24
点赞 关注

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
4个或者6个都错的比5个多?这怎么理解啊?
个人认为单片机读取错误的话多半有可能是读向了一个非法的区域,或者电压不稳
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
楼主你的问题不应该是4个或者5个nop的问题,而是你读flash本来就不成功,而这种不成功不在你的延时上,有可能是在你的硬件连接上。应该你读个bf ,ff出来,都不说明你是否成功了。只有你写个0x53进去,然后读出来还是0x53,那就正常了。
看看你的硬件连接,还有mcu是否需要配置其他东西怎么的。。。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

4
 
我将flash全部字节写为0xaa,使用编程器读全部是0xaa,可是用我的单片机程序读就会有把aa读错成bf,ff的情况。4个,5个,6个指的是XBYTE之后等待的时间,_nop_()的个数;。
在keil里我设置了外部时钟22.1184;编译优化默认的是8。
我认为是跟XBYTE有关系。
请各位大侠指点。谢了。

 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

5
 
并且我怕外部RAM影响读取,所以在读之前我还禁止了外部RAM的使用;
并且先将p0口置高。
真不知道是什么原因。郁闷中。
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

6
 
我觉得和那些NOP没什么关系. 你用的FLASH太慢了,无法正确访问,STC好像又无法配置存储器接口,应该换单片机了.
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(中级)

7
 
换什么型号的单片机啊?我用的是w29c020c的flash。
还有就是,同样的板子,别人编的程序好用,没有问题。我编的就存在偶尔读错的情况。真郁闷。别人的代码我得不到。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

8
 
不用MEMORY访问指令,就是说不要用XBYTE之类的东东. 用IO仿真MEMORY访问.

P0=0xff;
nOE = 0;
delay(); // 延时以满足你的FLASH时序
ByteRead = P0;
nOE = 1;
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

9
 
还是有问题....这样吧,
P2=HIBYTE(BankAddress);
ReadData=XBYTE[BankAddress];   // 这里只是让地址锁存器锁存地址. 如果用外部程序存储器,此方法失败
P0=0xff;
nOE = 0;
delay(); // 延时以满足你的FLASH时序
ByteRead = P0;
nOE = 1;
// 如果被中断,并且ISR里面有MEMORY访问,可能会有错误发生.....
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

10
 
看了一下STC的DATASHEET....12C5A有MEMORY访问配置功能啊,仔细看一下吧.....
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

11
 
great_Bug,你好!你觉得如果增加MEMORY访问配置功能就能解决我的问题吗?
另外,呵呵。我由于是新手,MEMORY访问配置还不太会改啊。拜托您百忙之中指导一下。谢谢。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

12
 
首先,老FLASH通常是100ns左右或更慢,访问频率超过5MHz就很勉强了,如果时序配置的不够好,就更差.

而且你说在同样的板子上别人的程序都没问题,只你的程序不能正确读取,那多半是访问时序不合适.

通过写寄存器BUS_SPEED来控制...不过它的复位默认值并不是太快的,似乎该可以访问100ns左右的FLASH.

 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

13
 
友情up
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

14
 
帮你顶,感觉因该是时序的问题,

stc单片机,如果外扩flash,感觉就没有必要用stc单片机了,

stc做些小的项目可以,做大项目,可要慎用,

有很多朋友都说这个芯片有很多问题,估计你用了就知道了,同样型号,不同批次都有所差异
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

15
 
我前天试了一下将BUS_SPEED里的MOVX速度变为6个时钟,p0速度两个时钟,结果读错的更多了。
应该设置成什么数值最合适啊?
真愁啊。别人总说单片机简单,其实学的精通一点都不简单啊。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

16
 
我用的是w29c020c的flash ,这个FLASH读的话 不能用XBYTE吧好像有什么指令吧
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

17
 
读不需要指令的. 写才要指令序列.
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表