IIC读写EEPROM(AT24C256C)

[复制链接]
 楼主| 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 去干预, 详见官方的数据手册吧
 楼主| cc474231890 发表于 2013-1-8 15:21 | 显示全部楼层
airwill 发表于 2013-1-8 11:56
这个初始化清空的说法不正确吧, 不知道你从哪里看到这么表达的.
EEPROM(AT24C256C) 器件上电是有个初始化过 ...

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

本版积分规则

0

主题

0

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

0

主题

0

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部