原子哥在I2C的代码有些没有看懂下面这段代码里,IIC_Wait_Ack()函数应该会返回一个0或1,这里并没有用它的返回值,而是直接往下运行了,那如果这里的返回值是0,代码里并没有给出相应的处理啊,求大佬帮助一下,多谢多谢
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);//发送高地址,即WriteAddr高八位
}else IIC_Send_Byte(0XA0+((WriteAddr/256)<<1)); //发送器件地址0XA0,写数据
IIC_Wait_Ack();
IIC_Send_Byte(WriteAddr%256); //发送低地址,即WriteAddr低八位
IIC_Wait_Ack();
IIC_Send_Byte(DataToWrite); //发送字节
IIC_Wait_Ack();
IIC_Stop();//产生一个停止条件
delay_ms(10);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
“发送相应的电平”,指的是主机发送SCL上升下降的脉冲,来读由从机发来的应答信号吗
然后再问一下,主机如果是发送设备,是不需要用IIC_NAck()的对吧?只有从机是接受设备,而且接受完一个字节的时候,才需要发送一个IIC_NAck(),用来释放SDA
一周热门 更多>