24C64读写校验失败

2019-07-20 04:07发布

移植原子最新的IIC代码操作24C64芯片,读写校验始终失败,写入的是1 2 3 4 5 6....,读出的值每次都是0A,0A,FE这些,折腾了一天都整好。看原子的代码有句话我没看懂,
//初始化IIC接口
void AT24Cxx_Init(void)
{

        AT24Cxx_PortInit();//IIC初始化
        AT24CXX_Check();
}
//在AT24CXX指定地址读出一个数据
//ReadAddr:开始读数的地址  
//返回值  :读到的数据
uint8_t AT24CXX_ReadOneByte(uint16_t ReadAddr)
{                                  
        uint8_t temp=0;                                                                                                                                                               
        IIC_Start();  
        if(EE_TYPE>AT24C16)
        {
                IIC_Send_Byte(0XA0);           //发送写命令
                IIC_Wait_Ack();
                IIC_Send_Byte(ReadAddr>>8);//发送高地址            
        }
        else
          IIC_Send_Byte(0XA0+((ReadAddr/256)<<1));   //发送器件地址0XA0,写数据           
        IIC_Wait_Ack();
        IIC_Send_Byte(ReadAddr%256);   //发送低地址
        IIC_Wait_Ack();            
        //IIC_Start();                       这里为为什么还要加个IIC起始信号
        IIC_Send_Byte(0XA1);           //进入接收模式                          
        IIC_Wait_Ack();         
        temp=IIC_Read_Byte(0);                  
        IIC_Stop();//产生一个停止条件            
        return temp;
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
wpsmart
1楼-- · 2019-07-20 07:42
本帖最后由 wpsmart 于 2019-1-17 09:58 编辑

自己顶,根据手册时序一个一个校对,问题解决。
wpsmart
2楼-- · 2019-07-20 08:49
三叶草 发表于 2019-1-17 10:37
时序有问题吧

找到问题了,在读的环节出了问题,读完EEPROM之后,主机应该发应答非信号,但我发的是应答信号,然后停止总线传输。结果就出了这样的问题,但不明白为什么是这种数据错一半的现象
wpsmart
3楼-- · 2019-07-20 12:55
 精彩回答 2  元偷偷看……
三叶草
4楼-- · 2019-07-20 18:16
时序有问题吧

一周热门 更多>