大神们,请教一个I2C问题,关于阿波罗板子上的AT24C02的I2C通信问题
在原理图中,写的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:标如果换一个其他器件,我拿到器件原理图,该怎么确认代码该使用哪个地址呢?
希望大佬们不吝赐教啊!
2,看芯片datasheet
早上起来突然想明白了,左移一位是因为要给第8位留出读写位。。实际上5-7位的地址还是0X50,我这么理解应该是对的吧
一周热门 更多>