有人用过24C02和24C512共用一条总线吗

2019-07-21 04:40发布

24c20的地址是0xA0,24C512的地址是0xA4,有没有人这样用过,单片单独读写都是可以的,虽然地址不同两片连起来存储的数据会乱,不知道是我程序问题还是不可以这样串起来?
用的模拟iic,原子的例程修改的
[mw_shl_code=c,true]#define Package_Base_Addr 512
void Write_24C512_Byte(unsigned int WriteAddr,unsigned char DataToWrite)
{
WriteAddr= WriteAddr+ Package_Base_Addr;
          I2C_Start();
                I2C_SendByte(0xA4);            //发送写命令
                I2C_WaitAck();
                I2C_SendByte(WriteAddr>>8);//发送高地址
    I2C_WaitAck();
    I2C_SendByte(WriteAddr%256);   //发送低地址
    I2C_WaitAck();
    I2C_SendByte(DataToWrite);     //发送字节
    I2C_WaitAck();
    I2C_Stop();//产生一个停止条件
    delay_ms(5);
}

unsigned char Read_24C512_Byte (unsigned int ReadAddr)
{
          u8 temp=0;
ReadAddr = ReadAddr+ Package_Base_Addr;
    I2C_Start();
                I2C_SendByte(0xA4);           //发送写命令
                I2C_WaitAck();
                I2C_SendByte(ReadAddr>>8);//发送高地址
    //I2C_WaitAck();
    I2C_SendByte(ReadAddr%256);   //发送低地址
    I2C_WaitAck();
    I2C_Start();
    I2C_SendByte(0xA5);           //进入接收模式
    I2C_WaitAck();
    temp=I2C_ReceiveByte();
                I2C_NoAck();
    I2C_Stop();//产生一个停止条件
    return temp;
}[/mw_shl_code]

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。