打印

IIC读写EEPROM(AT24C256C)

[复制链接]
2911|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cc474231890|  楼主 | 2013-1-7 18:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 cc474231890 于 2013-1-8 15:31 编辑

请教各位,我使用的是lpc11u14,用iic来读写外扩的EEPROM(AT24C256C),使用的是中断方式,如果我最开始把EEPROM初始化,即将我需要的内容全部写如EEPROM中,然后再对EEPROM进行读写操作都是正常的,但是,如果我不对EEPROM进行初始化,那么,我初始化之后的数据会被清空,也就是说,EEPROM再进行读写操作都会出现错误,无法写入。请问各位大神,这是什么情况呢?
补充:
    我在做的是USB键盘,EEPROM里面存放的是键盘的数据,一共有7段数据,每段数据都是由EEPROM靠后的某个地址处的内容所标识(这个地址不会被7段数据覆盖),每次程序上电时都会去读这个地址处的内容,然后根据读出来的值再去判断具体要读哪段数据。程序中,我有2种方法改变这个代表数据段的地址处的值,即通过某个按键或者通过从USB接收到某个命令,现在的问题是,我用按键的时候,可以改变这个值,并且EEPROM读写都是正常的,然而一旦我通过USB接收命令去改变这个值,整个程序就崩溃了,首先USB接收到的命令没有错误,改变这个值的实质就是改变我程序中定义的一个全局变量,然后将这个全局变量写到EEPROM的那个地址去。
    求各位大神给点意见,谢谢了,我感觉有可能是IIC的读写问题,但是,为什么按键的时候又可以正常读写呢?我在想要不要将中断方式改成IO模拟,但是,我的IO口是开漏的,硬件上没有接上拉,而且没有其他IO口可以替换了,大家有没有LPC11UXX系列的IIC模拟时序的程序啊?感谢各位!

相关帖子

沙发
jlass| | 2013-1-8 09:29 | 只看该作者
即将我需要的内容全部写如EEPROM中,然后再对EEPROM进行读写操作都是正常的,

你在同一个地址上写过不同的数据吗,我觉得你就第一次写是成功的,后面的就是只能读了。

使用特权

评论回复
板凳
dirtwillfly| | 2013-1-8 09:38 | 只看该作者
“如果我不对EEPROM进行初始化,那么,我初始化之后的数据会被清空”
这句话什么意思?没看懂。

使用特权

评论回复
地板
airwill| | 2013-1-8 11:56 | 只看该作者
这个初始化清空的说法不正确吧, 不知道你从哪里看到这么表达的.
EEPROM(AT24C256C) 器件上电是有个初始化过程, 这是 EEPROM 自己做的事情.
当然也有异常的结果, 要 MCU 去干预, 详见官方的数据手册吧

使用特权

评论回复
5
cc474231890|  楼主 | 2013-1-8 15:21 | 只看该作者
airwill 发表于 2013-1-8 11:56
这个初始化清空的说法不正确吧, 不知道你从哪里看到这么表达的.
EEPROM(AT24C256C) 器件上电是有个初始化过 ...

发现问题了,我使用的是中断方式的IIC,但是,如果我正常在程序中调用我的读写EEPROM函数是正常的,EEPROM里面的数据都能改变,但是如果我通过USB接收到一个命令,然后再去读写EEPROM,这个时候就会产生错误,数据写入和读出来的不一样

使用特权

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

本版积分规则

0

主题

0

帖子

0

粉丝