初级会员

- 积分
- 120
- 金钱
- 120
- 注册时间
- 2017-10-7
- 在线时间
- 25 小时
|

楼主 |
发表于 2019-5-15 11:04:49
|
显示全部楼层
//得到磁力计值(原始值)
//mx,my,mz:磁力计x,y,z轴的原始读数(带符号)
//返回值:0,成功
// 其他,错误代码
u8 MPU_Get_Magnetometer(short *mx,short *my,short *mz)
{
u8 buf[6],res;
res=MPU_Read_Len(AK8963_ADDR,MAG_XOUT_L,6,buf);
if(res==0)
{
*mx=((u16)buf[1]<<8)|buf[0];
*my=((u16)buf[3]<<8)|buf[2];
*mz=((u16)buf[5]<<8)|buf[4];
}
MPU_Write_Byte(AK8963_ADDR,MAG_CNTL1,0X11); //AK8963每次读完以后都需要重新设置为单次测量模式
return res;;
}
例程配置完全没有修改,用上面的MPU_Get_Magnetometer() 函数读取,单步调试,到这个res=MPU_Read_Len(AK8963_ADDR,MAG_XOUT_L,6,buf)里面就死了,
if(IIC_Wait_Ack()) //等待应答
{
IIC_Stop();
return 1;
}
等待应答时出错误。 |
|