打印

STC15系列单片机操作eeprom问题

[复制链接]
4130|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
各位大神,我手上10个stc15W104单片机,我把我的程序下载进去,程序下载都成功,但是有4个开机没反应。再用其他的程序验证,芯片没有问题。一开始怀疑频率有问题,修改了频率,又有一个可以了,但是剩下3个死活不行。我再排查,我程序里面操作了eeprom,我把eeprom这一部分去掉后,全部单片机都能正常开机了。求解疑,谢谢

相关帖子

沙发
ningling_21| | 2016-11-24 12:00 | 只看该作者
操作EEPROM需要延时,是不是延时不固定造成的

使用特权

评论回复
板凳
autopccopy| | 2016-11-24 12:11 | 只看该作者
调试一下。反正我用STC15使用官方例程操作EEPROM没问题。

使用特权

评论回复
地板
yzy6651301|  楼主 | 2016-11-24 15:44 | 只看该作者
ningling_21 发表于 2016-11-24 12:00
操作EEPROM需要延时,是不是延时不固定造成的

我现在继续调试,发现了问题,我主程序的开头读eeprom,我第一次下载程序成功,但是开不了机;第二次我把读eeprom屏蔽,可以正常下载程序开机实现功能;第三次重新使能读eeprom,可以正常下载程序开机实现功能,后面继续下载都正常了。
所以我现在认为的方向就是:我第一次执行读eeprom时,eeprom里面事先并没有写入操作,读出的是未知量,所以开不了机。我屏蔽之后再次下载执行时已经有了写eeprom的操作,eeprom里面已经有了数据保存,所以我后面的下载都没有问题了。
那这个初次执行读eeprom的问题该如何解决呢??

使用特权

评论回复
5
ningling_21| | 2016-11-24 16:03 | 只看该作者
yzy6651301 发表于 2016-11-24 15:44
我现在继续调试,发现了问题,我主程序的开头读eeprom,我第一次下载程序成功,但是开不了机;第二次我把 ...

发现是初次读取EEP时,加载默认值并写入EEP,不要发现是未知量就一直等待

使用特权

评论回复
6
NE5532| | 2016-11-24 16:18 | 只看该作者
读E2不会出现未知数,除非是单片机有寻址BUG,你应该检查是否存在E2需要配置及标志位死轮询的现象,比如STM8在忘了配置E2空间的情况下写E2就可以导致标志位死等。

使用特权

评论回复
7
yzy6651301|  楼主 | 2016-11-24 16:42 | 只看该作者
ningling_21 发表于 2016-11-24 16:03
发现是初次读取EEP时,加载默认值并写入EEP,不要发现是未知量就一直等待 ...

如何判断是初次读取eeprom呢?哪一个寄存器是控制这个的呢

使用特权

评论回复
8
ningling_21| | 2016-11-24 17:58 | 只看该作者
yzy6651301 发表于 2016-11-24 16:42
如何判断是初次读取eeprom呢?哪一个寄存器是控制这个的呢

没有寄存器控制,有些EEP初次读取时内容是FF,具体参考芯片手册

使用特权

评论回复
9
yzy6651301|  楼主 | 2016-11-24 21:44 | 只看该作者
ningling_21 发表于 2016-11-24 17:58
没有寄存器控制,有些EEP初次读取时内容是FF,具体参考芯片手册

好的,谢谢

使用特权

评论回复
10
robter| | 2016-11-25 08:21 | 只看该作者
我没有遇到这个问题,学习了

使用特权

评论回复
11
freeelectron| | 2016-11-25 08:52 | 只看该作者
stc的内部EEPROM并不是真正的EEPROM,是flash

使用特权

评论回复
12
yzy6651301|  楼主 | 2016-11-25 10:28 | 只看该作者
本帖最后由 yzy6651301 于 2016-11-25 10:31 编辑
ningling_21 发表于 2016-11-24 17:58
没有寄存器控制,有些EEP初次读取时内容是FF,具体参考芯片手册

C:\Users\Administrator\Desktop\11111111111我再stc-isp界面上这样设置,解决了问题,这样是否可行

11111111111.jpg (519.59 KB )

11111111111.jpg

使用特权

评论回复
13
ningling_21| | 2016-11-25 14:16 | 只看该作者
yzy6651301 发表于 2016-11-25 10:28
我再stc-isp界面上这样设置,解决了问题,这样是否可行

可以做多次测试验证有无问题

使用特权

评论回复
14
coody| | 2016-11-25 15:38 | 只看该作者
经常看到类似的读EEPROM或FLASH,读到非法值后还去使用这些非法值的。

我的做法:读一条记录,判断是否合法,不合法就初始化这条记录。
我一般采用的格式:
标识字节  数据域长度字节 数据域  CRC16校验2字节。

使用特权

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

本版积分规则

1

主题

11

帖子

0

粉丝