泥土上的生命 2025-01-11 10:53 采纳率: 0%
浏览 23

IIC_VIP收到地址不返回ack

DW_APB_IIC作为master,IIC_VIP作为slave,mastr发出地址后,VIP端返回NACK,master发出的地址就是slave_cfg设置的地址,并且全都没有使能10bit寻址。

img

  • 写回答

2条回答 默认 最新

  • 道友老李 JWE233286一种基于机器视觉的水表指针读数识别及修正的方法 专利发明者 2025-01-11 10:54
    关注
    让【道友老李】来帮你解答,本回答参考gpt编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
    如果答案让您满意,请采纳、关注,非常感谢!
    问题描述及分析:
    • DW_APB_IIC作为master,IIC_VIP作为slave;
    • master发出地址后,VIP端返回NACK;
    • 发出的地址就是slave_cfg设置的地址;
    • 未使能10bit寻址。 解决方案:
    • 检查slave的地址配置是否正确;
    • 检查master发送的地址是否正确;
    • 确认是否正确使能了7bit地址寻址;
    • 检查通信时序是否正确;
    • 如果以上均正确,可能是硬件或者线路问题,需要检查硬件连线是否正常。 案例:
    // master发送地址给slave
    void master_send_address(uint8_t slave_addr) {
        // 写入从机地址
        I2C_WriteData(DW_APB_IIC, slave_addr << 1);
        // 标记要发送数据
        I2C_SetDirection(DW_APB_IIC, I2C_DIRECTION_WRITE);
        // 产生起始信号
        I2C_GenerateStart(DW_APB_IIC);
        
        // 等待ACK位
        while (!I2C_CheckEvent(DW_APB_IIC, I2C_EVENT_MASTER_ACKNOWLEDGEMENT_FAILURE));
        
        // 产生停止信号
        I2C_GenerateStop(DW_APB_IIC);
    }
    

    以上是解答问题的基本格式,如果需要更具体的代码实现或者其他方面的帮助,请提供更多信息。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月11日