立咨灰灰 2023-03-30 11:21 采纳率: 0%
浏览 27

关于#单片机#的问题:请问有朋友使用过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();
    
}

  • 写回答

2条回答 默认 最新

  • H3T 2023-03-30 13:45
    关注

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

    评论

报告相同问题?

问题事件

  • 创建了问题 3月30日

悬赏问题

  • ¥15 远程访问linux主机超时
  • ¥15 odoo17存货管理优势于中国国内该行业传统ERP或MES的详细解读和举例
  • ¥15 CPU卡指令整合指令数据都在图片上
  • ¥15 火车票关联12306问题
  • ¥15 odoo17处理受托加工产品
  • ¥15 如何用MATLAB编码图三的积分
  • ¥15 圆孔衍射光强随孔径变化
  • ¥15 MacBook pro m3max上用vscode运行c语言没有反应
  • ¥15 ESP-PROG配置错误,ALL ONES
  • ¥15 结构功能耦合指标计算