TI论坛
直播中

蒋牛钱

7年用户 281经验值
私信 关注
[问答]

5509a无法读取eeprom 24c256的原因是什么?

我使用csl对24c256操作
写了下面两个函数,一个保存,一个读取
//保存设置 0失败 1成功 最快写入速度5ms 调用后要延时!!!!
int SaveSetting(unsigned char * buf,unsigned int len)
[
        Uint16 datareceive[2];  
        int x,i;
        //1.要写的地址
        datareceive[0]=0;
        datareceive[1]=0;
        x=I2C_write(datareceive,2,1,0x50,3,30000);
        //2写数据内容                        
        for(i=0;i         [
                while (!I2C_xrdy());
                I2C_writeByte (buf);
        ]
        //3.写停止
        I2C_sendStop();
        return x;
]
//读取设置 0失败 1成功
int LoadSetting(unsigned char * buf,unsigned int len)
[
        Uint16 datareceive[2];  
        int z;
        //1. 要读取的地址
        datareceive[0]=0;
        datareceive[1]=0;
z=I2C_write(datareceive,2,1,0x50,3,30000);
//2.读取
z=I2C_read((Uint16 *)buf,len,1,0x50,1,30000,0);
        return z;
]
系统时钟按照论坛里面的修正了,写数据没有问题(用编程器读取的),用示波器看速度50K
但是用 LoadSetting 就无法读取,第一个执行
z=I2C_write(datareceive,2,1,0x50,3,30000);
返回z=0
执行下面一句 返回z=2   时钟线一直拉低 后面就无法用了
看文档说 在主接收 用模式1 应该没问题啊
按照SPRA785A的例子也只能读一次,也是时钟线一直拉低
已经卡了很久了,希望专家予以解答,谢谢

回帖(2)

李艳

2020-8-4 14:53:37
建议不要用CCS自带的I2C_write/I2C_read函数对EEPROM 24c256进行写/读,不太稳定。
在对5509a的I2C初始化时可参考blog.21ic.com/.../85617.html
再根据24c256手册中的读写操作进行,比如页写模式下:先发设备地址,然后字节地址,再发数据。其中可以用到
while (!I2C_xrdy());
I2C_writeByte (xxx);和
while (!I2C_rrdy());
I2C_readByte (xxx);
举报

蒋牛钱

2020-8-4 15:03:12
引用: zyh34997 发表于 2020-8-4 19:17
建议不要用CCS自带的I2C_write/I2C_read函数对EEPROM 24c256进行写/读,不太稳定。
在对5509a的I2C初始化时可参考blog.21ic.com/.../85617.html
再根据24c256手册中的读写操作进行,比如页写模式下:先发设备地址,然后字节地址,再发数据。其中可以用到

初始化没有问题
用I2C_writeByte  I2C_readByte  能读写字节
但是最后的NACK没法发送,会导致eeprom挂起,后面就无法操作了
举报

更多回帖

发帖
×
20
完善资料,
赚取积分