请教AK8975如何设置采样频率?
如题,在AK8975的datasheet里面好像没有发现设置采样频率的寄存器啊?电子罗盘不需要设置采样频率么? 同问,帮顶! 雨中的风铃 发表于 2014-10-9 14:27
同问,帮顶!
/**
*@brief Set compass sampling rate.
*The compass on the auxiliary I2C bus is read by the MPU hardware at a
*maximum of 100Hz. The actual rate can be set to a fraction of the gyro
*sampling rate.
*
*\n WARNING: The new rate may be different than what was requested. Call
*mpu_get_compass_sample_rate to check the actual setting.
*@paramrate Desired compass sampling rate (Hz).
*@return 0 if successful.
*/
int mpu_set_compass_sample_rate(unsigned short rate)
{
#ifdef AK89xx_SECONDARY
unsigned char div;
if (!rate || rate > st.chip_cfg.sample_rate || rate > MAX_COMPASS_SAMPLE_RATE)
return -1;
div = st.chip_cfg.sample_rate / rate - 1;
if (i2c_write(st.hw->addr, st.reg->s4_ctrl, 1, &div))
return -1;
st.chip_cfg.compass_sample_rate = st.chip_cfg.sample_rate / (div + 1);
return 0;
#else
return -1;
#endif
}
我看invensense 提供的eMPL里面,用上面的代码配置了AK8975的采样频率,实际上是控制mpu6050辅助I2C总线对AK8975的读写周期。依旧没有搞明白到底是怎样配置AK8975的采样频率的。 invensense控制AK89XX都是通过控制mpu内部的I2C时钟的频率来对AK89xx进行发送单次采样命令和读取的,所以如果要自己配置AK89XX的采样频率的话,直接去下载AK89XX的官方的datasheet,里面有些寄存器在mpu的数据手册里面是没有列出来的。通过那些寄存器,可以自己配置AK89XX的采样频率、精度等 gaojunchen 发表于 2014-10-10 19:26
invensense控制AK89XX都是通过控制mpu内部的I2C时钟的频率来对AK89xx进行发送单次采样命令和读取的,所以如 ...
我看了一下AK8975的寄存器,就那么几个,始终没找到设置精度和采样频率的。现在没管它了,{:smile:} AK8975和AK8963的采样速度基本上不能超过100Hz, 在AK8963的datasheet第9页有写着Time for measurement 在single measurement mode下,typical需要7.2ms,最多需要10ms,这个我实际读取的结果差不多,我设置8ms的读取delay就可以正常读出所有变化的磁力数据,而7ms的delay就会卡在最初的磁力数据上。应该是打断了measurement的完整过程,导致之后一次完整的测量都没法完成,寄存器里的数据也就没有变化了。其他读取模式也一样。我都试过了。有图为证。
页:
[1]