智能车制作

标题: 想用MHC5883。但k60 i2c连续读取数据读不明白 [打印本页]

作者: HHHvictor    时间: 2014-7-2 13:47
标题: 想用MHC5883。但k60 i2c连续读取数据读不明白
用的K60野火的库读I2C,野火库里i2c只有单个读取数据的,自己写了个连续读取数据的,但读回来的总是255。
附上程序,明白的朋友给看看,找找毛病。
void Multiple_read_HMC5883()
{   
        unsigned char i;
                            
    i2c_Start(I2C0);//起始信号

    i2c_write_byte(I2C0,0x3C);//发送设备地址+写信号
    i2c_Wait(I2C0);

    i2c_RepeatedStart(I2C0);


    i2c_write_byte(I2C0,0x03); //发送存储单元地址,从0x3开始       
    i2c_Wait(I2C0);

    i2c_Start(I2C0);   //起始信号

    i2c_write_byte(I2C0,0x3D);//发送设备地址+读信号
    i2c_Wait(I2C0);       

    I2C_C1_REG(I2Cx[I2C0]) &= ~I2C_C1_TX_MASK;//接受模式

    for (i=0; i<7; i++)                      //连续读取6个地址数据,存储中BUF
    {
           
            if (i == 6)
        {            
                    I2C_C1_REG(I2Cx[I2C0]) |= I2C_C1_TXAK_MASK;  //最后一个数据需要回NOACK
        }
        else
        {
                I2C_C1_REG(I2Cx[I2C0]) &= ~I2C_C1_TXAK_MASK;  //回应ACK
       }
           
            BUF[i]=I2C_D_REG(I2Cx[I2C0]);
            i2c_Wait(I2C0);
            BUF_1[i]=I2C_D_REG(I2Cx[I2C0]);
           
   }

    i2c_Stop(I2C0);   //停止信号
    Pause();

}






欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2