找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

STM32 模拟I2C学习问题,发送3个器件地址,只一个回应

查看数: 1563 | 评论数: 1 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-2-10 00:04

正文摘要:

初学i2c接口,编写个程序i2c读器件ACK  如:"ack=i2c_SendData(0x46);“反复尝试了3个I2C器件,始终只有MPU6050(Addr:0xD0)返回ACK为低电平。反复尝试N次后使本人失去了学习的勇气,太诡异了。请各位 ...

回复

ID:353115 发表于 2020-2-10 14:57
1.线接对了没有;2.速率是否符合要求;3.给你发一下我的这个发送函数你对照着看看吧
bit I2C_Write(unsigned char dat)
{
    bit ack;
    unsigned char pos;
   
    for (pos=0x80; pos; pos>>=1)
    {
        if (dat & pos)
            I2C_SDA = 1;
        else
            I2C_SDA = 0;
        I2C_Delay(0);
        I2C_SCL = 1;
        I2C_Delay(1);
        I2C_SCL = 0;
        I2C_Delay(0);
    }
    I2C_SDA = 1;  //释放SDA
    I2C_Delay(0);
    I2C_SCL = 1;
    I2C_Delay(0);
    ack = I2C_SDA;  //
    I2C_Delay(0);
    I2C_SCL = 0;
    I2C_Delay(1);

    return !ack;
}

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表