一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 4727|回复: 6
收起左侧

STC单片机eeprom写入问题请教

[复制链接]
发表于 2011-8-31 21:48 | 显示全部楼层 |阅读模式
由于STC单片机eeprom的写入只能整个扇区(512字节)擦除后再写入数据,一般在写入少量数据时好像问题也并不大,现在的问题是:要接收从串口送来的10K左右的数据,并存入STC11F32XE的eeprom中,也就是说要存入到20几个扇区中保存,现在在数据存储器中设置一个512字节的数组用于接收串口的数据,当接收到512个字节时再对确定的一个扇区进行擦除后写入,然后清零数组再接收串口的数据,实际情况看接收第一个512字节是没有问题的,后面的就不对了有数据丢失。是不是在擦除和写入时的时间影响了串口数据的接收。这个问题不知有不有朋友了解,能不能够解决?串口上位机也是发送的一个数组过来,能不能不再动上位机程序解决这个问题呢?谢谢先!
发表于 2011-9-4 14:07 | 显示全部楼层
我的方法是:

       1。上位机先发确定要写入扇区的地址。STC接收后先擦除相应的扇区。      
       2。上位机再发送数据。写入相应的扇区。



        如你不想改动上位机软件。可用串口中断一试!

       当确认当接收到512个字节后即关中断。待擦除相应的扇区写入数据后,再开中断以接收下一个扇区数据。
发表于 2011-9-18 11:17 | 显示全部楼层
这个问题是不是单片机RAM不够啊?
 楼主| 发表于 2011-9-18 13:03 | 显示全部楼层
回复 3# mytomatoes

不是。是因为STC单片机的EEPROM要求即使是写入一个字节也要整个扇区擦除后才能写入引起的。所以有的朋友不爱用stc的eeprom,而外接存储器,我是为了节约成本而为。
发表于 2011-9-19 01:19 | 显示全部楼层
回复  mytomatoes

不是。是因为STC单片机的EEPROM要求即使是写入一个字节也要整个扇区擦除后才能写入引 ...
fxhfxh 发表于 2011-9-18 13:03 https://www.yleee.com.cn/images/common/back.gif


不是写入一个字节也要擦出整个扇区。。。。是只能把1改为0 不能把0改为1,除非扇区擦除(全部置为1),如果某个字节原来全是1,是可以直接写入的。

我的放电器也是用stc的内部的空间来存放电数据的,放完后再传回电脑。
发表于 2011-9-19 01:23 | 显示全部楼层
再仔细看来你的问题描述,问题应该就是 擦除的时候,串口还有数据发给单片机,所以丢失数据。。
解决办法就是先全部清空flash 然后一个一个字节顺序写下去就行了。 不用理会扇区了。
 楼主| 发表于 2011-9-19 01:33 | 显示全部楼层
回复 5# mytomatoes


    对的,但是我连续写入的数据量比较大,不可能去判断要写入的地址处是0或1.

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-4-29 18:02 , Processed in 0.063560 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表