打印
[51单片机]

24C128的读写问题

[复制链接]
3736|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
popeye021|  楼主 | 2013-11-24 09:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 popeye021 于 2013-11-24 09:39 编辑

每次要存储的数据大小从4到20个字节,为了方便,采用的定长20个字节。
所以往24C128里写数据时,每一个数据包的起始写地址是从0,20,40.......开始的。
写数据和读数据都是采用的单独写和读,即一次只读写一个字节的数据。
出现的问题是测量一次获得数据,然后保存,当第14次测量完成后,保存数据时系统就死机了,应该是单片机对24C128写数据的时候出现了问题。关机重启,系统也进入不了正常状态,屏蔽掉系统启动时读24C128里面数据的代码,程序就能执行下去了。综上,问题就出现在存储和读取第14次数据的时候。
对24C128应该可以进行任意地址的单字节读写操作吧?有什么特殊要求吗?

找到一个程序的bug,在计算存储首地址时使用了unsigned char 变量,地址会越界。
不过这样也只是导致存储数据时,存储到错误的地址上,不应该引起类似死机的状态吧?

相关帖子

沙发
NE5532| | 2013-11-24 11:05 | 只看该作者
1.注意看你的数据手册,你用的是E2还是铁电,E2是要分页的,每次写入的数据必须在同一个页面内,否则数据会“回旋”到该页的首地址上的。
2.当机是你自己单片机程序的问题,不关人家存储器的事。
3.请仔细寻找你的程序里什么地方有死循环的可能。
4.程序设计中需要考虑最坏情况下,外部存储器数据出现问题,程序指示错误并停止致命操作,而非一死了之。

使用特权

评论回复
板凳
dirtwillfly| | 2013-11-24 16:33 | 只看该作者
建议楼主把程序传上来

使用特权

评论回复
地板
popeye021|  楼主 | 2013-11-24 18:03 | 只看该作者
本帖最后由 popeye021 于 2013-11-24 18:05 编辑
NE5532 发表于 2013-11-24 11:05
1.注意看你的数据手册,你用的是E2还是铁电,E2是要分页的,每次写入的数据必须在同一个页面内,否则数据会 ...


如何区分是E2还是铁电?24C128不都是E2的吗?
你说的每次必须同一个页面,是指写数据时,如果数据是连续写入的情况吧?
我的数据写入是random模式的,就是写入一个字节后,又重新开始首先写入地址,再写入一个字节,这样也需要满足在同一页的要求吗?

使用特权

评论回复
5
ningling_21| | 2013-11-24 18:55 | 只看该作者
popeye021 发表于 2013-11-24 18:03
如何区分是E2还是铁电?24C128不都是E2的吗?
你说的每次必须同一个页面,是指写数据时,如果数据是连续 ...

铁电的 经常用FM开头...

地址是16位的,分开2次写入地址,再写数据...

使用特权

评论回复
6
NE5532| | 2013-11-24 19:15 | 只看该作者
popeye021 发表于 2013-11-24 18:03
如何区分是E2还是铁电?24C128不都是E2的吗?
你说的每次必须同一个页面,是指写数据时,如果数据是连续 ...

是E2还是铁电,请看数据手册,铁电确实常用FM开头,倒是自己好歹要确认一下吧。如果每次都是重复整个写入过程的启动,而不是一次送入多个字节,没有页面的问题。

使用特权

评论回复
7
ayb_ice| | 2013-11-25 08:20 | 只看该作者
popeye021 发表于 2013-11-24 18:03
如何区分是E2还是铁电?24C128不都是E2的吗?
你说的每次必须同一个页面,是指写数据时,如果数据是连续 ...

这样的话,每个字节写都需要延时,整个速度太慢的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

86

主题

455

帖子

4

粉丝