SGP30数据显示不对

SGP30读到的数据全是0,这个是我的代码,请问是什么问题


uint8_t Data;
    
    MyI2C_Start();
    MyI2C_SendByte(0xB0);
    MyI2C_ReceiveAck();
    MyI2C_SendByte(0x36);
    MyI2C_ReceiveAck();
    MyI2C_SendByte(0x82);
    MyI2C_ReceiveAck();
    
    MyI2C_Start();
    MyI2C_SendByte(0xB1);
    MyI2C_ReceiveAck();
    Data = MyI2C_ReceiveByte();
    MyI2C_SendAck(1);
    MyI2C_Stop();
    
    OLED_ShowHexNum(1,1,Data,8);

可以在MyI2C_ReceiveAck()函数中添加延时,可以使用delay函数或者使用硬件定时器进行延时。
修改后的代码如下:

void MyI2C_ReceiveAck(void)
{
    SDA_IN();    //设置SDA为输入模式
    SDA_HIGH();  //释放总线
    SCL_HIGH();  //拉高时钟线
    delay_us(2); //添加延时
    SCL_LOW();   //拉低时钟线
}

其中delay_us(2)表示延时2微秒,可以根据实际情况调整延时时间。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^