打印

用PIC18读取MPU6050数据问题

[复制链接]
4746|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenyuejian|  楼主 | 2013-2-26 15:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 chenyuejian 于 2013-2-27 09:46 编辑

我用PIC18F4550的I2C来采集MPU6050的数据。PIC主模式数据接收是一个很简单的硬件过程。我发现在读取的时候,程序停在了Readi2c()处。分析原因是MPU6050一直未发送数据,硬件也就无法接收完成,程序停在了BF判别的地方(看源程序)。所以原因还是定位为传感器未初始化成功。但是传感器在先前的writeI2C时是提供了ACK响应信号的(是根据寻址成功来判断的)。跪求高手们指点!

附:REG_data = ReadI2C();                //read in single byte
ReadI2C() 源程序:
unsigned char ReadI2C( void )
{
    SSPCON2bits.RCEN = 1;     // enable master for 1byte reception
    while ( !SSPSTATbits.BF );      // wait untilbyte received  
    return( SSPBUF );              // return withread byte
}
传感器初始化:
Single_WriteI2C(PWR_MGMT_1, 0x00); //解除休眠状态
Single_WriteI2C(SMPLRT_DIV, 0x07); //陀螺仪采样率,典型值:0x07(125Hz)
Single_WriteI2C(F_CONFIG, 0x06); //低通滤波频率,典型值:0x06(5Hz)
Single_WriteI2C(GYRO_CONFIG, 0x18); //陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s)   0x00  250
Single_WriteI2C(ACCEL_CONFIG, 0x01);

相关帖子

沙发
chenyuejian|  楼主 | 2013-2-27 15:08 | 只看该作者
已经成功解决,是自己没有设置有I2C程序!

使用特权

评论回复
板凳
refee| | 2013-2-27 15:26 | 只看该作者
搞定就好 结贴散分 :lol

使用特权

评论回复
地板
chenyuejian|  楼主 | 2013-2-27 15:48 | 只看该作者
refee 发表于 2013-2-27 15:26
搞定就好 结贴散分

我次奥。。。还不到一天!耐心!

使用特权

评论回复
5
cyf_1991| | 2013-5-6 23:07 | 只看该作者
厉害

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

45

帖子

1

粉丝