zkl1097 发表于 2014-10-9 13:52:15

请教AK8975如何设置采样频率?

如题,在AK8975的datasheet里面好像没有发现设置采样频率的寄存器啊?
电子罗盘不需要设置采样频率么?

雨中的风铃 发表于 2014-10-9 14:27:16

同问,帮顶!

zkl1097 发表于 2014-10-9 19:36:26

雨中的风铃 发表于 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的采样频率的。

gaojunchen 发表于 2014-10-10 19:26:07

invensense控制AK89XX都是通过控制mpu内部的I2C时钟的频率来对AK89xx进行发送单次采样命令和读取的,所以如果要自己配置AK89XX的采样频率的话,直接去下载AK89XX的官方的datasheet,里面有些寄存器在mpu的数据手册里面是没有列出来的。通过那些寄存器,可以自己配置AK89XX的采样频率、精度等

zkl1097 发表于 2014-10-29 16:49:34

gaojunchen 发表于 2014-10-10 19:26
invensense控制AK89XX都是通过控制mpu内部的I2C时钟的频率来对AK89xx进行发送单次采样命令和读取的,所以如 ...

我看了一下AK8975的寄存器,就那么几个,始终没找到设置精度和采样频率的。现在没管它了,{:smile:}

ianmay 发表于 2016-3-22 00:37:48

AK8975和AK8963的采样速度基本上不能超过100Hz, 在AK8963的datasheet第9页有写着Time for measurement 在single measurement mode下,typical需要7.2ms,最多需要10ms,这个我实际读取的结果差不多,我设置8ms的读取delay就可以正常读出所有变化的磁力数据,而7ms的delay就会卡在最初的磁力数据上。应该是打断了measurement的完整过程,导致之后一次完整的测量都没法完成,寄存器里的数据也就没有变化了。其他读取模式也一样。我都试过了。有图为证。
页: [1]
查看完整版本: 请教AK8975如何设置采样频率?