在使用IIC读取传感器数据时,给从机读取命令并收到从机应答,接收到第一个字节后给从机应答信号,但此时接收不到第二个字节的数据。
这种情况可能是应答信号的问题。
原本应答函数为
void IIC_Ack(void)
{
IIC_SCL=0;
SDA_OUT();
IIC_SDA=0;
delay_us(2);
IIC_SCL=1;
delay_us(2);
IIC_SCL=0;
}
在主机应答后,要将SDA拉高,一遍下一次传输,改成这样。
void IIC_Ack(void)
{
IIC_SCL=0;
SDA_OUT();
IIC_SDA=0;
delay_us(2);
IIC_SCL=1;
delay_us(2);
IIC_SCL=0;
delay_us(2);
IIC_SDA=1;
delay_us(2);
}
修改应答信号后即可解决问题。