搜索
bottom↓
回复: 80

他大爷的!MPU6050只能写操作,读出来的全部都是FF

[复制链接]

出0入0汤圆

发表于 2016-7-14 14:40:14 | 显示全部楼层 |阅读模式
操蛋的MPU6050搞几天了,还是老样子
我参考其他I2C总线代码都不下10份了,没发现我写的I2C代码有什么问题
对于MPU6050所需要注意的是初始化时要有足够的延时,我TMD都延时快10秒钟了,MPU6050就一点反应没有!
问题到底在哪?

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2016-7-14 15:05:43 | 显示全部楼层
说不定,连写都没写进去

出0入70汤圆

发表于 2016-7-14 15:07:51 | 显示全部楼层
自已焊的芯片, 还是买的模块?   焊的话 确认你没焊坏(焊接时间过长 高温损坏)????????????

出0入0汤圆

 楼主| 发表于 2016-7-14 15:07:55 | 显示全部楼层
JoshuaAstray 发表于 2016-7-14 15:05
说不定,连写都没写进去

我确定写进去了!
因为,我将最后一位器件地址A0改变高低电平的时候,是检测ACK的时候会有反应的

出0入0汤圆

 楼主| 发表于 2016-7-14 15:15:05 | 显示全部楼层
SkyGz 发表于 2016-7-14 15:07
自已焊的芯片, 还是买的模块?   焊的话 确认你没焊坏(焊接时间过长 高温损坏)???????????? ...

自己焊的板子带的芯片焊了4块板子,测试结果都一个鸟样!
最后实在是没辙了,就又买了MPU6050模块,结果也是一样。太坑爹了!

出0入0汤圆

发表于 2016-7-14 15:18:12 | 显示全部楼层
那肯定是楼主的问题了,用GPIO模拟I2C试试

出0入0汤圆

 楼主| 发表于 2016-7-14 15:19:39 | 显示全部楼层
yerrmin 发表于 2016-7-14 15:18
那肯定是楼主的问题了,用GPIO模拟I2C试试

使用的是GPIO模拟I2C实现的。

出0入0汤圆

 楼主| 发表于 2016-7-14 15:20:54 | 显示全部楼层
我用示波器查看波形,看到的时序都是正确的,就读出时的波形都是高电平

出0入0汤圆

 楼主| 发表于 2016-7-14 15:38:26 | 显示全部楼层
写器件地址
WHO_AM_I
读器件地址
读数据

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-7-14 15:38:51 | 显示全部楼层
治好了我多年的颈椎

出0入0汤圆

 楼主| 发表于 2016-7-14 15:44:18 | 显示全部楼层
huangqi412 发表于 2016-7-14 15:38
治好了我多年的颈椎

你是指什么?

出20入0汤圆

发表于 2016-7-14 15:50:00 | 显示全部楼层
哈哈,说的是你的步步高的波形图片呀,就不能打横放平吗?

出0入0汤圆

发表于 2016-7-14 15:51:06 | 显示全部楼层

网上一搜一大把有关STM32+6050的贴。。。    建议DOWN一个下来,找个C8T6飞几根线用别人的电路和程序试试。。。

出0入0汤圆

 楼主| 发表于 2016-7-14 16:04:07 | 显示全部楼层
huangqi412 发表于 2016-7-14 15:51
网上一搜一大把有关STM32+6050的贴。。。    建议DOWN一个下来,找个C8T6飞几根线用别人的电路和程序试试 ...

我没想明白的是我的I2C库有什么问题?我对比了别人的库,没发现有什么不对的地方啊

出0入0汤圆

 楼主| 发表于 2016-7-14 16:06:45 | 显示全部楼层
波形没看出有不对的地方啊

出0入0汤圆

 楼主| 发表于 2016-7-14 16:11:12 | 显示全部楼层
本帖最后由 yiwei0397 于 2016-7-14 16:13 编辑
newlife2lyf 发表于 2016-7-14 15:50
哈哈,说的是你的步步高的波形图片呀,就不能打横放平吗?


我重新上传图片

写器件
=====================

写地址
=====================

读器件
=====================

读数据

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入70汤圆

发表于 2016-7-14 16:28:55 | 显示全部楼层
是不是 IIC地址 不对, 所以读不到数据, 我以前也试过..
地址有两种方式...

#define        MPU6050_Addr   0xD0          //定义器件在IIC总线中的从地址,根据ALT  ADDRESS地址引脚不同修改 0x68

出0入0汤圆

 楼主| 发表于 2016-7-14 16:37:19 | 显示全部楼层
SkyGz 发表于 2016-7-14 16:28
是不是 IIC地址 不对, 所以读不到数据, 我以前也试过..
地址有两种方式...

从波形上已经看出,地址是0xD0了。我写的代码应该是没错的

出0入0汤圆

 楼主| 发表于 2016-7-14 17:23:14 | 显示全部楼层
MPU6050初始化还需要注意什么吗?

出0入0汤圆

发表于 2016-7-14 17:27:03 | 显示全部楼层
MPU6050会不会很容易坏?

出0入0汤圆

发表于 2016-7-14 17:51:37 来自手机 | 显示全部楼层
软硬都要排查        

出0入0汤圆

发表于 2016-7-14 17:55:52 | 显示全部楼层
核对下IC的工作电压和IO电压,我碰到过IO电平超过额定电压就只能读写,IC不工作的情况

出0入0汤圆

发表于 2016-7-14 18:08:33 | 显示全部楼层
买了模块都一样,用的什么MCU?IIC电路是什么样的,我焊过几个上去都没事

出0入0汤圆

 楼主| 发表于 2016-7-14 18:38:21 | 显示全部楼层
zengyi703 发表于 2016-7-14 18:08
买了模块都一样,用的什么MCU?IIC电路是什么样的,我焊过几个上去都没事

中间那个模块是我买的,买了4块
两边的模块,是我自己做的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2016-7-14 18:40:07 | 显示全部楼层
我做的模块和买的模块,读出来的数据都是0xFF
问题是用示波器查看,没发现时序有问题!

出0入0汤圆

 楼主| 发表于 2016-7-14 18:43:12 | 显示全部楼层
zengyi703 发表于 2016-7-14 18:08
买了模块都一样,用的什么MCU?IIC电路是什么样的,我焊过几个上去都没事

芯片使用的是STM32F103C8T6

出0入0汤圆

发表于 2016-7-14 18:48:41 | 显示全部楼层
这芯片焊得……

出0入0汤圆

 楼主| 发表于 2016-7-14 18:54:25 | 显示全部楼层

总共焊接5个。5个都焊接成功。
只是有1个无法写操作ACK响应,其余4个写操作有ACK响应但是都是读操作为0xFF

出0入0汤圆

 楼主| 发表于 2016-7-14 18:56:44 | 显示全部楼层
测试版,电烙铁焊接无所谓的。只要通了就行。
等成品时,再过回流焊.

出0入0汤圆

发表于 2016-7-14 19:07:28 | 显示全部楼层
感觉还是楼主的IIC协议(软件)有问题,再好好找原因吧。注意一下AD0怎么接的,确定好对应地址

出0入0汤圆

 楼主| 发表于 2016-7-14 19:14:14 | 显示全部楼层
shiyuzuxia1111 发表于 2016-7-14 19:07
感觉还是楼主的IIC协议(软件)有问题,再好好找原因吧。注意一下AD0怎么接的,确定好对应地址 ...

从波形上,没看出协议问题在哪。
器件地址0xD0要是不对,是不会有ACK响应的。但是在波形上看,确实是响应ACK了。
我将0xD0的最低位A0引脚接到高电平,立马就出现器件不响应ACK。说明我写入的地址是对的。

出0入0汤圆

 楼主| 发表于 2016-7-14 19:36:12 | 显示全部楼层
这个MPU6050芯片还有什么需要注意的地方吗?

出0入0汤圆

发表于 2016-7-14 20:02:38 | 显示全部楼层
你是DMP嘛,可以尝试初始化后延时一段时间,最好来个十来秒

出0入0汤圆

发表于 2016-7-14 20:18:22 | 显示全部楼层
IIC驱动不对

出0入0汤圆

发表于 2016-7-14 20:18:53 | 显示全部楼层
IIC驱动不对

出0入0汤圆

 楼主| 发表于 2016-7-14 20:20:36 | 显示全部楼层
shiyuzuxia1111 发表于 2016-7-14 20:02
你是DMP嘛,可以尝试初始化后延时一段时间,最好来个十来秒

试过了,不行

出0入0汤圆

 楼主| 发表于 2016-7-14 20:21:38 | 显示全部楼层

哪里不对?请指点一下

出0入0汤圆

发表于 2016-7-14 20:26:53 | 显示全部楼层
把代码贴出来让大家参考

出0入17汤圆

发表于 2016-7-14 20:37:21 | 显示全部楼层
LZ淡定。 一定先用你最熟悉的MCU搞定,有时不一定是时序的问题。

出0入0汤圆

发表于 2016-7-14 21:00:31 | 显示全部楼层
拿逻辑分析仪看看,6050这么多人用,不用怀疑它的问题

出0入0汤圆

 楼主| 发表于 2016-7-14 21:41:22 | 显示全部楼层
lanlibo 发表于 2016-7-14 20:26
把代码贴出来让大家参考


void I2C_Start(void)
{
  I2C_SDA_0;            
  Delay(I2C_Delay);
  
  I2C_SCL_0;           
  Delay(I2C_Delay);
}
////////////////////////////////////////
void I2C_W_8Bit(u8 WriteData)
{
  u8 i,j;
  
  j = WriteData;
  
  for(i=0; i<8; ++i)
  {
    if((j&0x80)==0)   
    {
      I2C_SDA_0;      
    }
    else
    {
      I2C_SDA_1;  
    }
    j <<= 1;
    Delay(I2C_Delay);
   
    I2C_SCL_1;   
    Delay(I2C_Delay);
   
    I2C_SCL_0;     
    Delay(I2C_Delay);
  }
}
////////////////////////////////////////
u8 I2C_Check_ACK(void)
{
  u8 Ack_Max;
  
  Ack_Max = 0;  
  
  //输入模式
  Set_I2C_SDA_IN;
  
  I2C_SDA_1;     
  
  I2C_SCL_1;                  //拉高
  Delay(I2C_Delay);
  
  //应答位
  while( I2C_SDA_CaiJi_1 )    //
  {
    if(Ack_Max < 3 )          //
    {
      ++Ack_Max;              //
    }
    else
    {
      Set_I2C_SDA_OUT;
      
      Delay(I2C_Delay);
      
      I2C_Stop();
      
      return U_DEFEAT;     //返回
    }
  }
  
  I2C_SCL_0;        
  Set_I2C_SDA_OUT;
  
  return U_SUCCEED;        //返回
}
////////////////////////////////////////
u8 I2C_R_8Bit(void)
{
  u8 i;
  u8 TempData;
  
  TempData = 0;
  
  //输入
  Set_I2C_SDA_IN;            //输入
  
  for(i=0; i<8; i++)          //一个字节
  {
    I2C_SCL_1;            
    Delay(I2C_Delay);
   
    TempData <<= 1;        
   
    if( I2C_SDA_CaiJi_0 )     //如果“1”,则加“1”
    {
    }
    else
    {
      TempData++;             //自加“1”
    }
   
    I2C_SCL_0;         
    Delay(I2C_Delay);
  }
  
  Set_I2C_SDA_OUT;            //输出模式
  
  return(TempData);           //返回数据
}
////////////////////////////////////////
void I2C_Ack(void)
{
  I2C_SDA_0;             //
  Delay(I2C_Delay);
   
  I2C_SCL_1;             //
  Delay(I2C_Delay);
  
  I2C_SCL_0;             //
  Delay(I2C_Delay);
}
void I2C_NoAck(void)
{
  I2C_SDA_1;         
  Delay(I2C_Delay);
  
  I2C_SCL_1;
  Delay(I2C_Delay);
  
  I2C_SCL_0;             //
  Delay(I2C_Delay);
}
void I2C_Stop(void)
{
  I2C_SDA_0;             //
  Delay(I2C_Delay);
  
  I2C_SCL_1;             //
  Delay(I2C_Delay);
  
  I2C_SDA_1;             //
  Delay(I2C_Delay);
}
////////////////////////////////////////
u8 MPU6050_R_Data(
                   u8   I2C_Device_No,
                   u8   Start_Addr,
                   u8  *Array_Data,
                    )
{
  u8 temp_Addr1;
  u8 temp_I2C_Device;     //
  
  temp_Addr1 = Start_Addr;
  
  I2C_Start();
  
  temp_I2C_Device  = (I2C_Device_No&I2C_W); //写
  I2C_W_8Bit( temp_I2C_Device );        //
  if(I2C_Check_ACK() == U_DEFEAT)       //应答位
  {
    return U_DEFEAT;                    //返回
  }
  
  I2C_W_8Bit( temp_Addr1 );             //
  if(I2C_Check_ACK() == U_DEFEAT)       //应答位
  {
    return U_DEFEAT;                    //返回
  }

  I2C_Start();
  
  I2C_W_8Bit( I2C_Device_No|I2C_R );    //读
  if(I2C_Check_ACK() == U_DEFEAT)  
  {
    return U_DEFEAT;                    //返回
  }
  
  //接收8位
  *Array_Data       = I2C_R_8Bit();    //数据
  
  I2C_NoAck();                         //非应答
  
  I2C_Stop();            
  
  return U_SUCCEED;                    //返回
}
////////////////////////////////////////
u8 MPU6050_W_Byte(
                   u8   I2C_A012_No,
                   u8   Start_Addr,
                   u8  *Array_Data
                 )
{
  I2C_Start();
  
  temp_I2C_Device  = (I2C_Device_No&I2C_W); //写
  I2C_W_8Bit( temp_I2C_Device );        //
  if(I2C_Check_ACK() == U_DEFEAT)       //应答位
  {
    return U_DEFEAT;                    //返回
  }
  
  I2C_W_8Bit( temp_Addr1 );             //
  if(I2C_Check_ACK() == U_DEFEAT)       //应答位
  {
    return U_DEFEAT;                    //返回
  }
  
  //写1个字节
  I2C_W_8Bit( *Array_Data );        //
  if(I2C_Check_ACK() == U_DEFEAT)
  {
          return U_DEFEAT;                //返回
  }
  
  I2C_Stop();               
  
  return U_SUCCEED;                 //返回
}
////////////////////////////////////////
u8 Init_MPU6050(void)
{
  u8 temp;
  
  //复位MPU6050
  temp = 0x80;
  MPU6050_W_Byte(MPU6050_No,PWR_MGMT_1,&temp);     //
//  Delay_M(150);
//  Delay_M(100);
  Delay_M(20); //NOP延时实现,时间足够长。
  
  //写入解除休眠状态
  temp = 0x00;
  MPU6050_W_Byte(MPU6050_No,PWR_MGMT_1,&temp);     // 解除休眠状态
//  Delay_M(150);
//  Delay_M(100);
  Delay_M(30);
  
  // 陀螺仪采样率设置(125HZ)
  temp = 0x07;
  MPU6050_W_Byte(MPU6050_No,SMPLRT_DIV,&temp);     // 陀螺仪采样率设置(125HZ)
  Delay_K(10);
  
  // 低通滤波器频率设置(5HZ)
  temp = 0x06;
  MPU6050_W_Byte(MPU6050_No,CONFIG,&temp);         // 低通滤波器频率设置(5HZ)
  Delay_K(10);
  
  // 陀螺仪自检及检测范围设置
  temp = 0x18;
  MPU6050_W_Byte(MPU6050_No,GYRO_CONFIG,&temp);    // (不自检,16.4LSB/DBS/S)
  Delay_K(10);
  
  temp = 0x01;
  MPU6050_W_Byte(MPU6050_No,ACCEL_CONFIG,&temp)
  Delay_K(10);
}
////////////////////////////////////////
u8 MPU6050_ID(void)
{
  u8 temp;
  
  //检查MPU6050
  if(MPU6050_R_Data(MPU6050_No,WHO_AM_I,&temp) == U_DEFEAT)    //应答
  {
    return U_DEFEAT;                    //返回
  }
  
  //检查MPU6050的ID
  if( temp != 0x68) //检查MPU6050的ID是否正常
  {
    return U_DEFEAT;                    //返回
  }
  
  return U_SUCCEED;                     //返回
}

出0入0汤圆

 楼主| 发表于 2016-7-14 21:44:46 | 显示全部楼层
HZKJ 发表于 2016-7-14 20:37
LZ淡定。 一定先用你最熟悉的MCU搞定,有时不一定是时序的问题。

我用的是STM32F103C8T6,这可芯片是使用的比较多的

出50入0汤圆

发表于 2016-7-14 22:43:53 来自手机 | 显示全部楼层
记得IO设置为开漏输出,可以直接读状态,不用切换输入模式

出0入0汤圆

发表于 2016-7-14 22:50:29 来自手机 | 显示全部楼层
楼主,是你的问题,别怪6050,哈哈

出0入0汤圆

 楼主| 发表于 2016-7-14 22:51:13 | 显示全部楼层
一飞 发表于 2016-7-14 22:43
记得IO设置为开漏输出,可以直接读状态,不用切换输入模式

我已经试过了

1,SCL SDA都设置成开漏模式
2,SCL推挽模式 SDA开漏模式,

两种方式都试过了

出0入0汤圆

 楼主| 发表于 2016-7-14 22:52:35 | 显示全部楼层
chenliangliang_ 发表于 2016-7-14 22:50
楼主,是你的问题,别怪6050,哈哈

关键是,我想知道问题在哪。

出0入8汤圆

发表于 2016-7-14 22:54:09 | 显示全部楼层
在mpu6050模块的电源加上个电解电容试试看

出0入0汤圆

 楼主| 发表于 2016-7-14 23:16:42 | 显示全部楼层
xujihu 发表于 2016-7-14 22:54
在mpu6050模块的电源加上个电解电容试试看

我使用新买的MPU6050模块,也是我做的板子一样只读出0xFF

出0入0汤圆

 楼主| 发表于 2016-7-14 23:17:14 | 显示全部楼层
我使用新买的MPU6050模块,也是和我做的板子一样只读出0xFF

出0入8汤圆

发表于 2016-7-15 00:45:02 | 显示全部楼层
yiwei0397 发表于 2016-7-14 23:17
我使用新买的MPU6050模块,也是和我做的板子一样只读出0xFF

以前碰到过这个问题,可能是你电源不够好,试试用电脑供电看看

出0入0汤圆

 楼主| 发表于 2016-7-15 00:50:38 | 显示全部楼层
xujihu 发表于 2016-7-15 00:45
以前碰到过这个问题,可能是你电源不够好,试试用电脑供电看看

刚看了一下,我做的板子上面使用的是AMS1117,我买的模块上面是一个LDO,电源都很简洁,感觉不像是电源问题。

出0入8汤圆

发表于 2016-7-15 01:01:12 | 显示全部楼层
用松香还是焊膏焊板?用洗板水洗干净试试。

出0入0汤圆

 楼主| 发表于 2016-7-15 01:18:01 | 显示全部楼层
qiufeng 发表于 2016-7-15 01:01
用松香还是焊膏焊板?用洗板水洗干净试试。

我用的是松香,焊膏没敢用,担心吸潮。
电路板上和MPU6050的连线引脚焊盘太细。担心板子质量问题,洗板水的话会引起焊盘脱落,已经废掉了一块板子(洗掉了焊盘),所以没有再用洗板水

玩了这么多年单片机,竟然掉沟里了

出0入8汤圆

发表于 2016-7-15 01:21:37 | 显示全部楼层
yiwei0397 发表于 2016-7-15 01:18
我用的是松香,焊膏没敢用,担心吸潮。
电路板上和MPU6050的连线引脚焊盘太细。担心板子质量问题,洗板水 ...

哪里做的板子?怕焊盘脱落可以用棉球蘸洗板水来擦洗。

出0入0汤圆

 楼主| 发表于 2016-7-15 01:28:11 | 显示全部楼层
qiufeng 发表于 2016-7-15 01:21
哪里做的板子?怕焊盘脱落可以用棉球蘸洗板水来擦洗。

捷多邦做的,这种厂家只能算是便宜,质量谈不上。
我新买的模块输出也是一样只读出0xFF

出0入8汤圆

发表于 2016-7-15 03:52:38 来自手机 | 显示全部楼层
scl和sda接上拉了没?

出0入8汤圆

发表于 2016-7-15 03:57:43 来自手机 | 显示全部楼层
我估计你是没接……如果没接的话接上。如果已经接了的话,调整一下阻值,哈。我

出0入0汤圆

发表于 2016-7-15 04:10:45 来自手机 | 显示全部楼层
b3,b4,b5,a15这几个口不要用

出0入0汤圆

发表于 2016-7-15 08:52:18 来自手机 | 显示全部楼层
肯定是程序问题

出0入0汤圆

发表于 2016-7-15 09:17:58 | 显示全部楼层
理论上的时序如下:
START
器件地址&写
寄存器地址
第二个START         <-----你没有这一步
器件地址&读
数据内容
END
+++++++++++++++++
原因:
你的驱动程序中START部分仅仅是将SDA拉低后再将SCL拉低,没有保证此时SCL处于高电平状态,
只有当SCL为高电平时SDA的下降沿才表示起始信号,
所以START函数应该先将SCL置高,在将SDA拉低,然后SCL拉低。

你试试,不确定还有没有其他问题。

出0入0汤圆

发表于 2016-7-15 09:29:53 | 显示全部楼层
我也出现过这种情况。。如果你确认程序问题。一个是你看看初始化每条语句加上延迟。二。是把编译器的优化等级关掉。~~~还不行就啦啦啦啦啦啦

出50入0汤圆

发表于 2016-7-15 09:46:54 | 显示全部楼层
用过几次,taobao随便买的货,没出现过FF的问题

出0入0汤圆

发表于 2016-7-15 10:31:32 | 显示全部楼层
用过没出现读不出来的问题啊,我现在用MPU6500,用原子哥的程序就能读

出0入0汤圆

发表于 2016-7-15 11:22:06 | 显示全部楼层
对了楼主,还可以尝试一下上电延一段时间后 再初始化

出0入0汤圆

发表于 2016-7-15 11:54:28 来自手机 | 显示全部楼层
不要死钻牛角尖  赶紧网上下两个工程测试

出0入0汤圆

 楼主| 发表于 2016-7-15 16:50:06 | 显示全部楼层
tongdayusu 发表于 2016-7-15 03:57
我估计你是没接……如果没接的话接上。如果已经接了的话,调整一下阻值,哈。我 ...

可以确认,不是上拉电阻的事,新买的MPU6050模块也是只读出0xFF

出0入0汤圆

 楼主| 发表于 2016-7-15 16:50:50 | 显示全部楼层
恋芜 发表于 2016-7-15 04:10
b3,b4,b5,a15这几个口不要用

用的是PB10,PB11

出0入0汤圆

 楼主| 发表于 2016-7-15 16:53:09 | 显示全部楼层

问题出在哪,是我想知道的。请指出来。我已经卡在MPU6050,没办法做后面的算法程序,有些无奈

出0入0汤圆

 楼主| 发表于 2016-7-15 16:54:46 | 显示全部楼层
samo110 发表于 2016-7-15 09:17
理论上的时序如下:
START
器件地址&写

我上面的帖子已经贴出来我的程序了。读操作是有加再次“开始”的代码

出0入8汤圆

发表于 2016-7-15 17:07:53 | 显示全部楼层
如果是标准IIC时序  那就换个其他常用的IIC接口的芯片  来测试下 程序方面。    这种掉坑里,很正常的,哪有不掉坑的工程师,不管工作年限多少。

出0入0汤圆

发表于 2016-7-15 22:27:13 | 显示全部楼层
yiwei0397 发表于 2016-7-15 16:53
问题出在哪,是我想知道的。请指出来。我已经卡在MPU6050,没办法做后面的算法程序,有些无奈  ...

不想看程序。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-7-16 20:09:10 | 显示全部楼层
yiwei0397 发表于 2016-7-15 16:54
我上面的帖子已经贴出来我的程序了。读操作是有加再次“开始”的代码

真是对你无语了,你贴出问题来,坛友帮你分析问题,你都不认真看的么。。。

出0入0汤圆

发表于 2016-7-16 20:51:55 | 显示全部楼层
本人觉得软件模拟的I2C延迟不对就很容易这样

出0入0汤圆

发表于 2016-7-16 21:37:25 来自手机 | 显示全部楼层
网上不是一堆这种代码

出0入0汤圆

发表于 2016-7-17 11:11:12 | 显示全部楼层
yiwei0397 发表于 2016-7-14 22:52
关键是,我想知道问题在哪。

把I2C接口设置为推挽输出?
从这里看,我认为问题的关键是:楼主已经乱了阵脚。
  

出0入0汤圆

发表于 2016-7-18 09:51:25 | 显示全部楼层
yiwei0397 发表于 2016-7-15 16:54
我上面的帖子已经贴出来我的程序了。读操作是有加再次“开始”的代码

楼主搞定了吗,友情提醒一下,不是你加了再次开始的代码就一定有再次开始的时序,你的开始代码就不对的。

出0入0汤圆

 楼主| 发表于 2016-7-18 20:23:11 | 显示全部楼层
samo110 发表于 2016-7-18 09:51
楼主搞定了吗,友情提醒一下,不是你加了再次开始的代码就一定有再次开始的时序,你的开始代码就不对的。 ...

你好,问题出在我的IO口设置上面,我现在使用的是库函数GPIO_ResetBits和GPIO_SetBits,还改动了“开始”函数,现在好了。

出0入0汤圆

发表于 2016-7-19 08:09:30 | 显示全部楼层
yiwei0397 发表于 2016-7-18 20:23
你好,问题出在我的IO口设置上面,我现在使用的是库函数GPIO_ResetBits和GPIO_SetBits,还改动了“开始” ...

好了就对了

出0入0汤圆

发表于 2016-7-19 08:36:33 | 显示全部楼层
huangqi412 发表于 2016-7-14 15:38
治好了我多年的颈椎

我也想说点什么,没什么说的,你这句搞笑

出0入0汤圆

 楼主| 发表于 2016-7-20 12:20:52 | 显示全部楼层
laoshuhunya 发表于 2016-7-17 11:11
把I2C接口设置为推挽输出?
从这里看,我认为问题的关键是:楼主已经乱了阵脚。
  

在输出时,我使用推挽是可行的!
I2C没有说不允许推挽,而且在输出时推挽的信号要比其他抗干扰能力强一些.

出0入0汤圆

发表于 2016-7-21 09:14:29 | 显示全部楼层
mpu6050 的确太小 焊工不好搞···
·找出问题的过程值得学习··

回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 13:08

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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