24C16C读写不成功

[复制链接]
403|11
手机看帖
扫描二维码
随时随地手机跟帖
18576478035|  楼主 | 2021-4-10 17:16 | 显示全部楼层 |阅读模式
Rand_Write_Eeprom(0,0X55);
a2b_test_data = Rand_Read_Eepeom(0);
//at24c16CËæ»úд
void        Rand_Write_Eeprom(u16 data_addr,u8 data)
{
          u8 ret ;
          u8 addr ;
                iic2key_Start();
                iic2key_SendByte(0xA0);
          ret = iic2key_Wait_Ack();
        //  addr = data_addr>>8;
//          iic2key_SendByte(addr);                                //¼Ä´æÆ÷¸ßλ
//          ret = iic2key_Wait_Ack();
          addr = data_addr ;
          iic2key_SendByte(addr);                                //¼Ä´æÆ÷µÍλ
          ret = iic2key_Wait_Ack();                  
          iic2key_SendByte(data);
          ret = iic2key_Wait_Ack();                  
          iic2key_Stop();

}
//AT24C16CËæ»ú¶Á
u8        Rand_Read_Eepeom(u16 data_addr)
{
          u8 ret ;
          u8 addr ;
          u8 rec_data ;
                iic2key_Start();
                iic2key_SendByte(0xa0);
          ret = iic2key_Wait_Ack();
//          addr = data_addr>>8;
//          iic2key_SendByte(addr);                                //¼Ä´æÆ÷¸ßλ
//          ret = iic2key_Wait_Ack();
          addr = data_addr ;
          iic2key_SendByte(addr);                                //¼Ä´æÆ÷µÍλ
          ret = iic2key_Wait_Ack();                  
          iic2key_Start();
         iic2key_SendByte(0xa1);
          ret = iic2key_Wait_Ack();       
          rec_data = iic2key_RecvByte(1);
          iic2key_Stop();       
          return rec_data ;
}
调用24C16C随机读写函数ACK都是正常的,但是读取的值一直是0XFF是怎么回事??

使用特权

评论回复

相关帖子

ayb_ice| | 2021-4-12 13:34 | 显示全部楼层
写是需要时间的,虽然应答是成功的

使用特权

评论回复
cainiao518| | 2021-4-12 15:26 | 显示全部楼层
或许根本没写进去

使用特权

评论回复
18576478035|  楼主 | 2021-4-13 09:45 | 显示全部楼层
已经做了延时处理了啊

使用特权

评论回复
18576478035|  楼主 | 2021-4-13 09:47 | 显示全部楼层
正常的话是5MS,我已经在中间延时了500MS

使用特权

评论回复
ayb_ice| | 2021-4-13 09:50 | 显示全部楼层
18576478035 发表于 2021-4-13 09:47
正常的话是5MS,我已经在中间延时了500MS

那就是真有问题,检查程序

使用特权

评论回复
ayb_ice| | 2021-4-13 09:52 | 显示全部楼层
18576478035 发表于 2021-4-13 09:47
正常的话是5MS,我已经在中间延时了500MS

读写都发送0xa0地址肯定是不对的

使用特权

评论回复
18576478035|  楼主 | 2021-4-13 11:12 | 显示全部楼层
ayb_ice 发表于 2021-4-13 09:52
读写都发送0xa0地址肯定是不对的

有啥问题呢?读的时候先发送A0在发送A1,

使用特权

评论回复
18576478035|  楼主 | 2021-4-13 11:13 | 显示全部楼层
这个程序读写24C02和24C256都没有问题,这个C16C也是够奇怪的

使用特权

评论回复
ayb_ice| | 2021-4-13 11:24 | 显示全部楼层
18576478035 发表于 2021-4-13 11:12
有啥问题呢?读的时候先发送A0在发送A1,

是的,理解错了,

但你的程序并没有判断返回值,可能并没有正确返回,返回值判断调试的关键
其次要注意读取后要发送非应答位,

使用特权

评论回复
18576478035|  楼主 | 2021-4-13 14:32 | 显示全部楼层
ayb_ice 发表于 2021-4-13 11:24
是的,理解错了,

但你的程序并没有判断返回值,可能并没有正确返回,返回值判断调试的关键

仿真的时候可以看到ret都是0 ,而且rec_data = iic2key_RecvByte(1);这个函数参数是1的时候就是非应答位

使用特权

评论回复
ayb_ice| | 2021-4-13 15:22 | 显示全部楼层
18576478035 发表于 2021-4-13 14:32
仿真的时候可以看到ret都是0 ,而且rec_data = iic2key_RecvByte(1);这个函数参数是1的时候就是非应答位 ...

返回都正确的话,就应该是正确的,现在不正确,肯定是有问题

仿真不代表真实情况,当然也可能是其它问题引起的

使用特权

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

本版积分规则

55

主题

187

帖子

2

粉丝