IMX6ULL裸机篇之SPI实验-ICM20608传感器

一.  SPI实验

SPI实验:使用 I.MX6U 的 SPI 接口来驱动 ICM-20608,读取 ICM-20608 的六轴数据

本文来了解一下ICM20608传感器,是一个六轴传感器,作为 SPI从设备使用。

二.   ICM2068传感器

1.  ICM20608传感器

ICM20608传感器的参考文档在 /硬件资料/芯片资料 目录下,分别为“ICM-20608-G Datasheet Revision 1.0.pdf”与 “ICM-20608-G Register Maps and Description Revision V1.0.pdf” 两个文档。

“ICM-20608-G Datasheet Revision 1.0.pdf”文档是数据手册。

“ICM-20608-G Register Maps and Description Revision V1.0.pdf” 文档是寄存器描述的手册。

通过参考 ““ICM-20608-G Datasheet Revision 1.0.pdf ” 数据手册文档可知:

ICM20608是六轴传感器。包括 3 轴陀螺仪和 3 轴加速度(三轴的意思:支持 X,Y 和 Z 三轴输出)。

ICM20608传感器特点

(1)   ICM-20608 内部有一个 512 字节的 FIFO

(2)  陀螺仪的量程范围可以编程设置,可选择±250,±500,±1000 和±2000°/s

加速度的量程范围也可以编程设置,可选择±2g,±4g,±8g 和±16g

(3)  陀螺仪和加速度计都是16 位的 ADC

(4)  并且支持 I2C SPI 两种协议,使用 I2C 接口的话通信速度最高可以达到 400KHz,使用 SPI 接口的话通信速度最高可达到 8MHz

所以,在后面用代码来配置IMX6ULL的SPI外设时,时钟就不可以超过 8MHz。

(5)  ICM-20608G的 “WHO_AM_I ”寄存器,地址为 0X75,默认值是0XAF。这个寄存器保存了器件的ID。(参考 “ICM-20608-G Register Maps and Description Revision V1.0.pdf” 寄存器文档)

如果开发板上用的另外一个传感器ICM20608D,那么“WHO_AM_I ”寄存器的值可能是为0XAE。

2.  ICM-20608G的寄存器

后面需要做一些参数的配置。地址0X3B~0X48 就是我们需要读取的寄存器的值。下面介绍通过ADC 的值来计算陀螺仪的角速度或加速度计的加速度值。

陀螺仪

如果陀螺仪所设置的分辨率范围为 ±250,即 -250~+250,也就是 500°/s

ADC数据的位数为 16位,即 0~65535,也就是 65536。那么一度对应多大的数据呢?

65536/500 = 131.07

举例说明:

如果所设置的分辨率范围为 ±250,读取到的  ADC值是 1000,那么陀螺仪的角速度是多少?

当前陀螺仪的角速度为:

1000 / 131  = 7.6°/s

加速度计

加速度计计算公式与陀螺仪相似。

 举例说明:

如果加速度计设置的分辨率范围为 ±2,即 -2~+2,也就是 4

ADC值的位数为 16位,即 0~65535,也就是 65536。一度则对应多大的 ADC值呢?

65536/4 = 16384

如果此时读取到的 ADC值为 2,则这时的加速度计的加速度是多少?

3 * 16384  = 32767

你可能感兴趣的:(嵌入式C开发,裸机开发,arm开发)