I2C从主机到从机的通讯问题

时间:2019-06-04 13:58:45

标签: c i2c infineon

我正在使用TC237,并且该板卡不提供I2C通信,因此我将其实现为GPIO。 通过寄存器读取和写入,但没有主从通信。

根据I2C通信协议,创建了起止ACK NACK功能代码。 我还创建了一个1字节的读写代码,并在此基础上创建了用于读写从设备寄存器的代码。

我不知道如何上传图片,但是当我用示波器检查SDA和SCL时,当我读取它时,似乎要读取两个字节,其余的都可以。第一个字节读取0x00,下一个字节读取0xEF。

I2C_Start();
waitTime(1*TimeConst_100us);

I2C_WriteByte((uint8)(Slave_addr|0x01));//LIDAR : 0xC5/BH1750 : 0x27
I2C_ACK();//I2C_GetACK();

I2C_ReadData_H = I2C_ReadByte();
I2C_ACK();

waitTime(1*TimeConst_100us);

I2C_ReadData_L = I2C_ReadByte();
waitTime(1*TimeConst_100us);
if(I2C_NACK() == BUSY)
{
return RESET;
}
I2C_Stop();
return SET;

结果应该由内部IC接收,但是接收到一个奇怪的值。 可疑部分在读取第一个字节后似乎未从设备收到ACK,该怎么办?

0 个答案:

没有答案