智能车制作
标题:
想用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