关于#单片机#的问题:请问有朋友使用过PCA9539读取引脚的电平吗?(语言-c语言)

请问有朋友使用过PCA9539读取读取引脚的电平吗?我现在是能够正常通过写入通过PCA9539取控制电平拉高拉低;但是读取引脚的电平一直是00FF,我设置引脚是输入,读取其他如配置寄存器的数据也是)0X00FF;我现在不知道是读取的哪个步骤出了问题,请各位帮忙解答。

//==========读多个字节============================================================
void pca9539_read_bytes(u16 PCA9539_ADDR,u8 command_byte,u8 *bytes,u8 len)
{
    u8 ack;
    
    //启动信号
    iic_start();
    
    //发送设备地址,执行写操作
    iic_send_byte(PCA9539_ADDR|PCA9539_W);
    ack=iic_wait_ack();    
    if(ack==1)
    {
        //停止信号
        iic_stop();
        return;
    }
    
    //发送命令字节
    iic_send_byte(command_byte);
    ack=iic_wait_ack();    
    if(ack==1)
    {
        //停止信号
        iic_stop();
        return;
    }
    
    //启动信号
    iic_start();
    
    //发送设备地址,执行读操作
    iic_send_byte(PCA9539_ADDR|PCA9539_R);
    ack=iic_wait_ack();    
    if(ack==1)
    {
        //停止信号
        iic_stop();
        return;
    }
    
    while(len--)
    {
        if(len > 0)
        {
            //接受一个字节数据    
            *bytes = iic_read_byte(0);
        }
        else
        {
            //接受一个字节数据    
            *bytes = iic_read_byte(1);
        }
        //数据地址加1,地址指向下一个数据空间
        bytes++;
    }
    
    //停止信号
    iic_stop();
    
}

可能是I2C通信存在问题,可以考虑检查I2C总线的连接和信号波形。