通常被寻址的接收器在接收到的每个字节后,除了用CBUS 地址开头的数 据,必须产生一个响应。当从机不能响应从机地址时(例如它正在执行一些实时函数不能接收或发送),从机必须使数据线保持高电平,主机然后产生一个停止条件终止传输或者产生重复起始条件开始新的传输
以上是i2c协议
版主的程序中等待应答,如果没有应答返回0,接着发送数据,并没有停止发送,对返回值也没有继续操作,这样会不会有错误?
u8 AT24CXX_ReadOneByte(u16 ReadAddr)
{
u8 temp=0;
IIC_Start();
if(EE_TYPE>AT24C16)
{
IIC_Send_Byte(0XA0); //发送写命令
IIC_Wait_Ack();
IIC_Send_Byte(ReadAddr>>8);//发送高地址
IIC_Wait_Ack();
}else IIC_Send_Byte(0XA0+((ReadAddr/256)<<1)); //发送器件地址 0XA0,写数据
IIC_Wait_Ack();
IIC_Send_Byte(ReadAddr%256); //发送低地址
IIC_Wait_Ack();
2019-11-4 09:02:32
不好意思,没看仔细,IIC_Wait_Ack()里面有stop函数,
不好意思,没看仔细,IIC_Wait_Ack()里面有stop函数,
举报