|
求助:HMC5883L的X,Y,Z数据寄存器的读出值不准确,而其他的寄存器的数据读出是准确的
void HMC5883_Init(void)
{
I2C_WriteByte(0x01, 0x20);
I2C_WriteByte(0x02, 0x00);
I2C_WriteByte(0x00, 0x18);
}
配置寄存器B初始化为:0x20 //默认值
模式寄存器MR初始化为:0x00 //连续测量
配置寄存器A初始化为:0x18 //正常测量模式 75HZ
while(1)
{
myDelay(10);
I2C_ReadNByte(0x09, &temp, 1);
if(temp&0x01) break;
}
uartSendStr(&temp, 1);
I2C_ReadNByte (0x03, Data_Buf, 6); // 读xyz
myDelay(500);
uartSendStr(Data_Buf, 6); //向串口发送数据
结果发现读出的 STAT X Z Y 值如下:
11 00 00 00 04 FF FE
11 00 02 00 01 00 03
11 FF FE FF FE 00 00
11 00 04 00 00 00 01
11 FF FE 00 04 00 00
11 00 FE 00 01 00 00
11 00 00 00 00 FF FA
11 00 02 00 00 00 02
11 FF FE 00 00 00 02
11 00 03 00 00 00 02
11 00 00 FF FF 00 03
XYZ的值明显不对,可是其他寄存器A B MR STAT读出的值是正确的
对XY值求角度,发现角度都是45°的倍数,哪位大侠能告诉我,这是为什么啊?》 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|