stc12c5a60s2单片机EEPROM的问题

今天用这个单片机的EEPROM存储数据,经过测试发现,一次最多只能读写20个字节的数据,如果超过这个大小,就会导致数据丢失,不知道大家有木有遇到过这种情况。我本来是往里面... 今天用这个单片机的EEPROM存储数据,经过测试发现,一次最多只能读写20个字节的数据,如果超过这个大小,就会导致数据丢失,不知道大家有木有遇到过这种情况。
我本来是往里面存了两个数组,分别是26个数据和25个数据,发现从第20位往后就出现异常,刚开始以为这两个数据的起始地址弄错了,导致数据覆盖,后来想了想,数据不可能覆盖的,因为没有执行擦除指令,而且即便是覆盖了,在读取的时候应该会读出后面那个数组的内容。我多次检查程序,确认没有程序错误。就开始怀疑单片机自身缺陷了,后来我把那两个数组分别拆开写,拆成了四个,每个十几个数据,之后就没再出现错误。由此确认该单片机确实存在缺陷,再测试几次后发现,每次最多就能读或写20个字节,多了就会丢失。这个问题纠结了我两个下午加一晚上的时间,快让我脑子炸掉了。
有木有遇到相似情况的兄弟,或者还发现有其他问题的,在这里 说一下,以防别人再因此陷入纠结。
展开
 我来答
意法半导体(中国)投资有限公司 2023-08-25
展开全部
上面那个人乱讲。所谓单片机,就是把微处理器,存储器和输入输出接口等部件集成在一个芯片上的单片式计算机。单片机主要的功能和应用场合还是控制,比如说微波炉的控制电路啦,空调的控制电路啦等,当然手机或者PDA等也会使用到单片机,不过不能说手机GBA,PDA就是单片机! 更专业的解答可联系意法半导体,产品服务:意法半导体单片机产品线拥有业界宽广、极具创新力的32位产品系列 – STM32,覆盖超低功耗、超高性能方向.目前提供16大产品线 (F0, G0, F1, F2, F3, G4, F4, F7, H7, MP1, L0, L1, L4, L4+,L5, WB),超过1000个型号。谢谢!
高山入云
2013-08-11 · TA获得超过1072个赞
知道小有建树答主
回答量:204
采纳率:0%
帮助的人:154万
展开全部
我的eeprom是提供给用户的,允许用户通过串口连续写入16k字节的。
我有遇到写入出错的情况,但是增加延时就解决了。你试试增加几个延时指令,应该就解决了。
更多追问追答
追问
就是,我也纳闷儿,你说,我把一个25个数据的数组拆成两个,而且仍然是连续的两个for循环,写完前半部分接着写后半部分,中间没有延时,这两者有什么区别,但是一起读写不管用,分开了就管用,真是奇怪。
追答
uchar IapReadByte(uint addr)
{
uchar dat;
IAP_CONTR=ENABLE_IAP;
IAP_CMD=CMD_READ;
IAP_ADDRL=addr;
IAP_ADDRH=addr>>8;
IAP_TRIG=0x5a;
IAP_TRIG=0xa5;
_nop_(); //这儿加个延时吗?
dat=IAP_DATA;
IapIdle();
return dat;
}
void IapProg(uint addr,uchar dat)
{

IAP_CONTR=ENABLE_IAP;
IAP_CMD=CMD_PROG;
IAP_ADDRL=addr;
IAP_ADDRH=addr>>8;
IAP_DATA=dat;
IAP_TRIG=0x5a;
IAP_TRIG=0xa5;
_nop_();//这儿加个延时吗?
IapIdle();
}
意法半导体(中国)投资有限公司
2023-06-12 广告
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了A... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
GUEL86
2013-08-11 · TA获得超过5855个赞
知道大有可为答主
回答量:5538
采纳率:86%
帮助的人:2719万
展开全部
stc12c5a60s2单片机EEPROM 不存在问题,因为用汇编语言编程,可以连续读 或者 连续写
测试过 连续 写 0 ~ 255 循环写 所有存在的 全部扇区,再连续读取没有错误。
擦除是以扇区为单位 512 字节擦除的。
所谓缺陷应该说是 用 C 语言编程问题。没有按照STC单片机EEPROM的 读写要求。
更多追问追答
追问
难道是C语言有缺陷?我的程序是从技术手册里摘出来的,那个应该是按照要求写的啊。你说的擦除一个扇区我知道,我定义的那个数组就是把数据放在里面暂存的,读取完之后再擦除,然后和另外一个数组一起再写进去的
追答
C语言没有有缺陷,你可以直接用数据手册的程序试试,
数据手册 的例程 读写 一个扇区(512字节) 都没有问题,
应该你摘录有问题,或者你的 使用 区间有问题,
注意 擦除 是以扇区(512字节)为单位一次擦除的,
在同一区间 覆盖写入 数据是 会出错的,就是读出的数据 不等于 写入的数据。
要合理 使用 EEPROM 空间 需要有一些技巧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhxiufan
2013-08-11 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38384
国家科技进步奖

向TA提问 私信TA
展开全部
应该没有问题,至少我是没有遇到过,你看看是不是程序有些问题。我用的是汇编,用数据手册中的例子改编的。
追问
恩,我的也是从技术手册中摘出来的,只摘录了对eeprom操作的那部分并写成子函数,然后在别的函数中调用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式