野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16959|回复: 2

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

[复制链接]
发表于 2020-2-10 00:45:13 | 显示全部楼层 |阅读模式
初学i2c接口,编写个程序i2c读器件ACK  如:"ack=i2c_SendData(0x46);“反复尝试了3个I2C器件,始终只有MPU6050(Addr:0xD0)返回ACK为低电平。
反复尝试N次后使本人失去了学习的勇气,太诡异了。请各位大神指教问题所在。谢谢!
三个器件为 MPU6050(Addr:0xD0) ,BH1750(Addr:0x46) ,24c02(Addr:0xA0)
其中 24c02(Addr:0xA0) 与 MPU6050(Addr:0xD0)器件确定是好的,使用STM32标准库编程,器件可以正常使用。
代码如下 :
void I2C_Test(void)
{
       u8 ack=0x55;
       i2c_Start();
      //ack=i2c_SendData(0xA0);
      //printf("\n24c020(0xA0) Ack :0x%02x\n",ack);
      //ack=i2c_SendData(0xD0);
      //printf("\nMPU6050(0xD0) Ack :0x%02x\n",ack);
      ack=i2c_SendData(0x46);
      printf("\nBH1750(0x46) Ack :0x%02x\n",ack);
      
       i2c_Stop();
}
/***   以下是模拟i2c程序    ***/   
void i2c_Start(void)
{
      i2c1_SDA_Out_High;
      i2c1_SCL_Out_High;
       Delay_us(3);
      i2c1_SDA_Out_Low;
       Delay_us(3);
      i2c1_SCL_Out_Low;
       Delay_us(3);
}
void i2c_Stop()
{
      i2c1_SDA_Out_Low;
      i2c1_SCL_Out_Low;
       Delay_us(3);
      i2c1_SCL_Out_High;
       Delay_us(3);
      i2c1_SDA_Out_High;
       Delay_us(3);
}
u8 i2c_SendData(u8 Dat)
{
       unsignedcharack=0x44,mask;
      i2c1_SCL_Out_Low;
      for(mask=0x80;mask!=0;mask>>=1)
       {     
             if(0==(mask&Dat))
                    i2c1_SDA_Out_Low;
             else
                    i2c1_SDA_Out_High;
             Delay_us(3);
             i2c1_SCL_Out_High;//waiting for the Slave readdata.
             Delay_us(3);
             i2c1_SCL_Out_Low;//start the next bit data totransmit.
      
       }
             i2c1_SDA_Out_High;
             Delay_us(3);
             i2c1_SCL_Out_High;
      
             i2c1_SDA_InMode;   
             Delay_us(3);
             ack=(GPIOB->IDR  & GPIO_Pin_7);
             i2c1_SCL_Out_Low;
      
             i2c1_SDA_OutMode;
      
       returnack;
}

搜狗截图20年02月09日2330_1.jpg

Test.rar

1.45 MB, 下载次数: 7

测试工程文件上传

回复

使用道具 举报

发表于 2020-2-10 10:40:49 | 显示全部楼层
把所有地址搜一下,反正也就1-127,并用逻辑分析仪看一下,没反应就是接反了或没有上电,或被复位。
回复 支持 反对

使用道具 举报

发表于 2020-3-2 16:44:10 | 显示全部楼层
打扰一下:指南针的视频盘中没有资料啊,只有视频,没有i2c总线协议(中文)PDF资料

我用的这个网盘链接 https://pan.baidu.com/s/1hij6XjCiPYoXVLg7-bpxuw
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-26 06:32 , Processed in 0.062200 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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