中级会员
 
- 积分
- 241
- 金钱
- 241
- 注册时间
- 2012-8-27
- 在线时间
- 21 小时
|
qmc5883l的初始化OK,设为200hz输出,void qmc5883l_init(void)
{
qmc5883l_write_byte(QMC5883L_ADDRESS,0X09, 0x0d);//0x05);//0X0D);
qmc5883l_write_byte(QMC5883L_ADDRESS, 0X0B, 0X01);
qmc5883l_write_byte(QMC5883L_ADDRESS, 0X20, 0X40);
qmc5883l_write_byte(QMC5883L_ADDRESS, 0X21, 0X01);
}
void qmc5883l_get_mag(u8 *pbuf)
{
u8 ucStatus;
qmc5883l_read_byte(QMC5883L_ADDRESS,0x06,&ucStatus);
if(ucStatus & 0x01)
{
qmc5883l_read_reg_multi(0x00, pbuf, 6);
wmagx = ((u16)pbuf[1] << 8) + pbuf[0];
wmagy = ((u16)pbuf[3] << 8) + pbuf[2];
wmagz = ((u16)pbuf[5] << 8) + pbuf[4];
}
}
读取出来的原始数据范围是在 wmagx 在 -7300 ~ 3000 之间,和资料上-32768 ~ 32768之间不符,请教下是什么原因造成的呀
而且变化的数值和转动的角度不是线性的,在某个方向时变化时,变化角度很小,但是数值变化大,在另一个方向时变化,数值变化又很小。真是搞不明白了,就几个寄存器,还有什么地方存在问题。
特来论坛请教,请搞过的大神帮忙指导一下,非常感谢。
|
|