关于陀螺仪和加速度计
下面这段来自知乎:https://zhuanlan.zhihu.com/p/146188127
首先我们先理解一下相关的概念:
1、传感器的带宽:
通俗的讲,传感器的带宽是指传感器能够测量到的信号的最大变化率(传感器所能感受到信号最大的变化频率,高于该频率传感器则认为该信号没有变化),高于带宽的信号传感器无法通过采样还原真实的信号变化。
原理:
传感器的测量通常包含噪声,以加速度测量为例,即使将传感器静止放置,测量出来的值也会在平均值上下波动,为了降低噪声,传感器内部通常会自带一个低通滤波器(LPF)来过滤高频分量,传感器的带宽就是指低通滤波器的带宽,高于带宽的信号变化将无法测量出来。
如何设置:
带宽的设置需根据实际测量的物体的实际变化快慢来定,在能够满足测量要求的情况下应尽量设置低的带宽,以获取更加平稳的测量数据,降低噪声,但需要高于需要测量的有效信号的变化频率。
2、关于陀螺仪的输出频率和采样频率到底指的是什么?
陀螺仪的输出频率为8Khz或者为1Khz,数字低通滤波器(DLPF)的设置有关,当 DLPF_CFG=0/7 的时候,频率为 8Khz,
采样频率才是采到寄存器的值,是由输出频率分频得到,而滤波器的带宽一般设置为采样频率的一半,感觉关系好绕啊。
首先从上面的简介大致了解ICM-20690共有两组接口:主接口(UI)和辅助接口(OIS)。并配备1Kbyte的FIFO。
一:说下这两组接口
1、主接口(UI)
4.8、 I2C AND SPI HOST INTERFACE
The ICM-20690 communicates to the application processor using either a SPI or an I2C serial interface. The ICM-20690 always acts as a slave when communicating to the application processor. The LSB of the I2C slave address is set by pin 1 (AD0).
ICM-20690主接口支持spi和iic,ICM-20690通过主接口和处理器通信时总是作为从机。
主接口可直接作为SPI和IIC从设备使用。作为IIC从设备是地址为:b110100x,最后一位由引脚PA0决定。
所以处理器可以接两个ICM-20690设备。
Note:
== To prevent switching into I2C mode when using SPI, the I2C interface should be disabled by setting the I2C_IF_DIS configuration bit ==
2、辅助接口(OIS)
4.9、 SPI OIS INTERFACE AND AUXILIARY I2C INTERFACE
The ICM-20690 has an SPI interface for communicating to OIS controllers. This interface supports 3-wire SPI. The ICM-20690 always acts as a slave when communicating to OIS controllers over this interface. The SPI interface is multiplexed with an auxiliary I2C busthat can be used for communicating to off-chip sensors. This bus has two operating modes:
I2C Master Mode: The ICM-20690 acts as a master to any external sensors connected to the auxiliary I2C bus. The ICM-20690 can directly access the data registers of external digital sensors. In this mode, the ICM-20690 directly obtains data from auxiliary sensors without intervention from the application processor. The I2C Master can be configured to read up to 12 bytes from up to 3 auxiliary sensors.
Pass-Through Mode: The ICM-20690 directly connects the primary and auxiliary I2C buses together, allowing the application processor to directly communicate with any external sensors connected to the auxiliary I2C interface. Pass-through mode is useful for configuring external sensors.
辅助接口可配置作为:(通过OIS_ENABLE (112) 存器)来配置辅助接口作为IIC还是SPI)
1、SPI(三线)从属光学图像稳定(OIS)应用(此时ICM-20690为从设备)。这种模式没用过。
2、作为IIC接口,配置为IIC接口后又分两种模式 1:IIC主机模式,来接其他的传感器(如罗盘或压力传感器),2: pass-through 模式,此模式使能后,该IIC接口就直接和主(UI)的IIC直接连接在了一起,这样处理器就可以直接操作ICM-20690上外接的传感器了。
二、self_test
4.10 SELF-TEST
Self-test allows for the testing of the mechanical and electrical portions of the sensors. The self-test for each measurement axis can be activated by means of the gyroscope and accelerometer self-test registers.When the self-test is activated, the electronics cause the sensors to be actuated and produce an output signal. The output signal is used to observe the self-test response.
The self-test response is defined as follows:
&emspSelf-test response = Sensor output with self-test enabled – Sensor output with self-test disabled
When the value of the self-test response is within the specified min/max limits of the product specification, the part has passed selftest. When the self-test response exceeds the min/max values, the part is deemed to have failed self-test.
自检允许对传感器的机械和电气部分进行测试。GYRO_CONFIG寄存器和ACCEL_CONFIG寄存器使能自检,此时芯片内部会自动模拟外力施加给加速度计和陀螺仪。
自检测试的输出 = 使能后自检输出寄存器的值 - 使能前自检输出寄存器的值
来确定该值是否在规定的范围之内,用来确定是否自检成功。手册上给出的公式:
三、FIFO
4.13 、FIFO
The ICM-20690 contains a 1K-byte FIFO register that is accessible via the Serial Interface. The FIFO configuration register determines which data is written into the FIFO. Possible choices include gyro data, accelerometer data, temperature readings, and FSYNC input. A FIFO counter keeps track of how many bytes of valid data are contained in the FIFO. The FIFO register supports burst reads. The interrupt function may be used to determine when new data is available.The ICM-20690 allows FIFO read in low-power accelerometer mode.
FIFO:
英文First In First Out 的缩写。本质上还是RAM,是一种先进先出的数据缓存器;与普通存储器的区别:没有外部读写地址线,这样使用起来非常简单。但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。
二、用途
(1)跨时钟域多bit数据传输
解决一个系统多个时钟,所带来的问题:异步时钟之间的接口电路。异步FIFO是解决这个问题的一种便捷简单的方案,使用异步FIFO可以在两个不同时钟系统之间快速方便地传输实时数据。
(2)达到数据匹配问题
对于不同宽度的数据接口也可以使用FIFO,例如单片机的8位输出而DSP可能是16位输入,在单片机与DSP连接时就可以使用FIFO来达到数据匹配的目的。
这里我们的使用FIFO可以可以降低串行总线接口的流量,并通过允许系统处理器突发(连续读取)读取传感器数据,然后进入低功耗模式来降低功耗。我们的SPI或IIC的时钟频率一般都是上MHz的,而ICM-20690数据寄存器(陀螺仪、加速度计、温度计)的更新频率一般为KHZ所以连续读取的意义不大,所以可以用使能我们所需要的通道,将数据写入FIFO,数据准备好时产生中断,我们可以去读取。
使用fifo时,所使能的通道的数据将以自己的采样率写入
FIFO WATERMARK THRESHOLD
FIFO watermark threshold, FIFO_WM_TH, is limited to 8 bits but the FIFO size is 1Kbytes. This limits the use of FIFO watermark to 256 out of a possible 1024 bytes.
阈值由FIFO_WM_TH 寄存器设定八位数据寄存器设定。(没有第八位寄存器)所以范围只能是256 - 1024
FIFO_WM_TH 为0时 watermark interrupt中断就自动失能了。关于fifo大小的设置是在寄存器:
三、传感器输出频率和滤波频率的设置
1、陀螺仪
内部采样速率分频寄存器:这个寄存器的作用是将内部的输出频率分频产生采样速率(采样频率控制着写入传感器数据输出寄存器,写入FIFO的速率)。
采样率是通过将陀螺仪输出速率除以 SMPLRT_DIV 产生的:
采样率=陀螺仪输出速率/(1 + SMPLRT_DIV)
当DLPF使能时(见下表)陀螺仪的输出速率为1kHz。这个FCHOICE_B是用来旁路DLP_CFG的。
当DLPF(数字滤波器)禁用这(个FCHOICE_B不等00)是输出频率为32Khz
DLPF_CFG = 0或7时,陀螺仪输出速率= 8kHz,此时采样速率和输出速率一样(此时分频寄存器是无效的)
DLPF_CFG = 1–6时,陀螺仪的输出频率为1Khz ,采样频率为1/(1+SMPLRT_DIV)。
(这个表格在ODR栏里面写1/(1+SMPLRT_DIV)实属让我迷了很久,我还以为1/(1+SMPLRT_DIV)是输出频率
还是MPU6500写的清楚)。
当滤波器使能时通过SMPLRT_DIV来配置采样频率,滤波器的频率一般要为输出频率的一半。所以根据字节设置的采样频率选择合适的滤波频率。
FCHOICE_B用来旁路陀螺仪的低通数字滤波器位。
2、加速度计
OIS口的设置也是这么个套路,去找对应寄存器就行了。
以上都是个人理解,欢迎指正。