I2C地址问题求助!

2019-07-20 05:41发布

大神们,请教一个I2C问题,关于阿波罗板子上的AT24C02的I2C通信问题

123.jpg

在原理图中,写的IIC地址是0X50, 但是代码里边却是0XA0,代码如下

void AT24CXX_WriteOneByte(u16 WriteAddr,u8 DataToWrite)
{                                                                                                                                                                                          
    IIC_Start();  
        if(EE_TYPE>AT24C16)
        {
                IIC_Send_Byte(0XA0);            //发送写命令
                IIC_Wait_Ack();
                IIC_Send_Byte(WriteAddr>>8);//发送高地址          
        }else IIC_Send_Byte(0XA0+((WriteAddr/256)<<1));   //发送器件地址0XA0,写数据          
        IIC_Wait_Ack();          
    IIC_Send_Byte(WriteAddr%256);   //发送低地址
        IIC_Wait_Ack();                                                                                                              
        IIC_Send_Byte(DataToWrite);     //发送字节                                                          
        IIC_Wait_Ack();                                
    IIC_Stop();//产生一个停止条件
        delay_ms(10);         
}


问题1:这两个地址为什么不一样呢?
问题2:标如果换一个其他器件,我拿到器件原理图,该怎么确认代码该使用哪个地址呢?
希望大佬们不吝赐教啊!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
正点原子
1楼-- · 2019-07-20 07:46
1,因为芯片不一样。
2,看芯片datasheet
GAOSIY
2楼-- · 2019-07-20 11:28
 精彩回答 2  元偷偷看……
GAOSIY
3楼-- · 2019-07-20 15:06
正点原子 发表于 2018-10-17 21:08
1,因为芯片不一样。
2,看芯片datasheet

早上起来突然想明白了,左移一位是因为要给第8位留出读写位。。实际上5-7位的地址还是0X50,我这么理解应该是对的吧

一周热门 更多>