ICM-20608-G是一个6轴传感器芯片,由3轴陀螺仪和3轴加速度计组成。陀螺仪可编程的满量程有:±250,±500,±1000和±2000度/秒。加速度计可编程的满量程有:±2g,±4g,±8g和±16g。学习Linux之SPI之前,先要了解这个芯片。
ICM-20608芯片具有16位adc、可编程数字滤波器、嵌入式温度传感器和可编程中断。可选择I2C或SPI串行通讯,其中I2C通讯速度为400kHz,SPI的通讯速度为8MHz。VDD工作范围为1.71V至3.45V。
如果ICM-20608使用I2C通讯,则其从地址为b110100X,长度为7位。这个X,是由引脚AD0上的逻辑电平决定。当AD0=0时,ICM-20608的从设备地址为0x68;当AD0=1时,ICM-20608的从设备地址为0x69;这样,就可以允许两个ICM-20608连接到同一I2C总线上。
ICM-20608是通过读写寄存器来配置和读取传感器数据,如果使用SPI接口读写一个寄存器,只需要16个时钟。如果要读写多个寄存器,就需要更多时钟。第一个字节包含“读写的寄存器地址”,寄存器地址最高位是读写标志位。寄存器地址最高位为1,就表示读寄存器;寄存器地址最高位为0,就表示写寄存器,剩下的7位才是实际的寄存器地址。寄存器地址后面跟着的就是“读写的数据”。
ICM-20608检测轴方向和极性
1、陀螺仪SELF_TEST_X_GYRO寄存器
地址:0x00,类型:读/写
位 | 名称 | 描述 |
[7:0] | XG_ST_DATA[7:0] | XG_ST_DATA[7:0]表示在制造测试期间“X轴每秒角速率”的自检输出,也是最终用户执行的自检输出。 |
2、陀螺仪SELF_TEST_Y_GYRO寄存器
地址:0x01,类型:读/写
位 | 名称 | 描述 |
[7:0] | YG_ST_DATA[7:0] | YG_ST_DATA[7:0]表示在制造测试期间“Y轴每秒角速率”的自检输出,也是最终用户执行的自检输出。 |
3、陀螺仪SELF_TEST_Z_GYRO寄存器
地址:0x02,类型:读/写
位 | 名称 | 描述 |
[7:0] | ZG_ST_DATA[7:0] | ZG_ST_DATA[7:0]表示在制造测试期间“Z轴每秒角速率”的自检输出,也是最终用户执行的自检输出。 |
4、加速度计SELF_TEST_X_ACCEL寄存器
地址:0x0D,类型:读/写
位 | 名称 | 描述 |
[7:0] | XA_ST_DATA[7:0] | XA_ST_DATA[7:0]表示在制造测试期间“X轴加速度”的自检输出,也是最终用户执行的自检输出。 |
5、加速度计SELF_TEST_Y_ACCEL寄存器
地址:0x0E,类型:读/写
位 | 名称 | 描述 |
[7:0] | YA_ST_DATA[7:0] | YA_ST_DATA[7:0]表示在制造测试期间“Y轴加速度”的自检输出,也是最终用户执行的自检输出。 |
6、加速度计SELF_TEST_Z_ACCEL寄存器
地址:0x0F,类型:读/写
位 | 名称 | 描述 |
[7:0] | ZA_ST_DATA[7:0] | ZA_ST_DATA[7:0]表示在制造测试期间“Z轴加速度”的自检输出,也是最终用户执行的自检输出。 |
7、陀螺仪XG_OFFS_USRH偏移调整寄存器
地址:0x13,类型:读/写
位 | 名称 | 描述 |
[7:0] | X_OFFS_USR[15:8] | X_OFFS_USR[15:8]表示X轴陀螺仪16位偏移量的第15位到第8位(2的补码)。用于消除传感器输出的直流偏置,在进入传感器寄存器之前,它被添加到陀螺仪传感器值中。 |
8、陀螺仪XG_OFFS_USRL偏移调整寄存器
地址:0x14,类型:读/写
位 | 名称 | 描述 |
[7:0] | X_OFFS_USR[7:0] | X_OFFS_USR[7:0]表示X轴陀螺仪16位偏移量的第7位到第0位(2的补码)。用于消除传感器输出的直流偏置,在进入传感器寄存器之前,它被添加到陀螺仪传感器值中。 |
9、陀螺仪YG_OFFS_USRH偏移调整寄存器
地址:0x15,类型:读/写
位 | 名称 | 描述 |
[7:0] | Y_OFFS_USR[15:8] | Y_OFFS_USR[15:8]表示Y轴陀螺仪16位偏移量的第15位到第8位(2的补码)。用于消除传感器输出的直流偏置,在进入传感器寄存器之前,它被添加到陀螺仪传感器值中。 |
10、陀螺仪YG_OFFS_USRL偏移调整寄存器
地址:0x16,类型:读/写
位 | 名称 | 描述 |
[7:0] | Y_OFFS_USR[7:0] | Y_OFFS_USR[7:0]表示Y轴陀螺仪16位偏移量的第7位到第0位(2的补码)。用于消除传感器输出的直流偏置,在进入传感器寄存器之前,它被添加到陀螺仪传感器值中。 |
11、陀螺仪ZG_OFFS_USRH偏移调整寄存器
地址:0x17,类型:读/写
位 | 名称 | 描述 |
[7:0] | Z_OFFS_USR[15:8] | Z_OFFS_USR[15:8]表示Z轴陀螺仪16位偏移量的第15位到第8位(2的补码)。用于消除传感器输出的直流偏置,在进入传感器寄存器之前,它被添加到陀螺仪传感器值中。 |
12、陀螺仪ZG_OFFS_USRL偏移调整寄存器
地址:0x18,类型:读/写
位 | 名称 | 描述 |
[7:0] | Z_OFFS_USR[7:0] | Z_OFFS_USR[7:0]表示Y轴陀螺仪16位偏移量的第7位到第0位(2的补码)。用于消除传感器输出的直流偏置,在进入传感器寄存器之前,它被添加到陀螺仪传感器值中。 |
13、SMPLRT_DIV采样率分配器
地址:0x19,类型:读/写
位 | 名称 | 描述 |
[7:0] | SMPLRT_DIV[7:0] | 当FCHOICE_B [1:0]=00和(0 < DLPF_CFG < 7)时,该寄存器配置才有效。 FIFO采样率:SAMPLE_RATE=INTERNAL_SAMPLE_RATE/ (1 + SMPLRT_DIV) INTERNAL_SAMPLE_RATE = 1kHz |
14、CONFIG寄存器
地址:0x1A,类型:读/写
位 | 名称 | 描述 |
[7] | - | 总是设置为0 |
[6] | FIFO_MODE | 当设置为’1’时,当FIFO已满时,将不会向FIFO写入额外的写操作。 当设置为’0’时,当FIFO已满时,将向FIFO写入额外的写操作,替换旧的数据。 |
[5:3] | EXT_SYNC_SET[2:0] | 启用FSYNC引脚数据采样。 当EXT_SYNC_SET[2:0]=0时,不启用FSYNC引脚数据采样。 当EXT_SYNC_SET[2:0]=1时,TEMP_OUT_L[0]。 当EXT_SYNC_SET[2:0]=2时,GYRO_XOUT_L[0]。 当EXT_SYNC_SET[2:0]=3时,GYRO_YOUT_L[0]。 当EXT_SYNC_SET[2:0]=4时,GYRO_ZOUT_L[0]。 当EXT_SYNC_SET[2:0]=5时,ACCEL_XOUT_L[0]。 当EXT_SYNC_SET[2:0]=6时,ACCEL_YOUT_L[0]。 当EXT_SYNC_SET[2:0]=7时,ACCEL_ZOUT_L[0]。 |
[2:0] | DLPF_CFG[2:0] | 当FCHOICE_B [1:0]=00时,设置陀螺仪低通滤波,见下表。 |
FCHOICE_B[1:0] | DLPF_CFG[2:0] | 陀螺仪滤波 | 温度滤波 | ||
3-dB BW(Hz) | Noise BW(Hz) | Rate(kHz) | 3-dB BW(Hz) | ||
1 | X | 8173 | 8595.1 | 32 | 4000 |
2 | X | 3281 | 3451.0 | 32 | 4000 |
0 | 0 | 250 | 306.6 | 8 | 4000 |
0 | 1 | 176 | 177.0 | 1 | 188 |
0 | 2 | 92 | 108.6 | 1 | 98 |
0 | 3 | 41 | 59.0 | 1 | 42 |
0 | 4 | 20 | 30.5 | 1 | 20 |
0 | 5 | 10 | 15.6 | 1 | 10 |
0 | 6 | 5 | 8.0 | 1 | 5 |
0 | 0 | 3281 | 3451.0 | 8 | 4000 |
15、GYRO_CONFIG陀螺仪量程设置
地址:0x1B,类型:读/写
位 | 名称 | 描述 |
[7] | XG_ST | 陀螺仪X轴自检 |
[6] | YG_ST | 陀螺仪Y轴自检 |
[5] | ZG_ST | 陀螺仪Z轴自检 |
[4:3] | FS_SEL[1:0] | 陀螺仪满量程选择: 当FS_SEL[1:0]=00时,陀螺仪满量程为±250dps; 当FS_SEL[1:0]=01时,陀螺仪满量程为±500dps; 当FS_SEL[1:0]=10时,陀螺仪满量程为±1000dps; 当FS_SEL[1:0]=11时,陀螺仪满量程为±2000dps; |
[2] | - | 保留 |
[1:0] | FCHOICE_B[1:0] | 当FCHOICE_B[1:0]=00时,用来设置DLPF滤波 |
16、ACCEL_CONFIG加速度计量程设置
地址:0x1C,类型:读/写
位 | 名称 | 描述 |
[7] | XA_ST | 加速度计X轴自检 |
[6] | YA_ST | 加速度计Y轴自检 |
[5] | ZA_ST | 加速度计Z轴自检 |
[4:3] | ACCEL_FS_SEL[1:0] | 加速度计满量程选择: 当ACCEL_FS_SEL[1:0]=00时,加速度计满量程为±2g; 当ACCEL_FS_SEL[1:0]=01时,加速度计满量程为±4g; 当ACCEL_FS_SEL[1:0]=10时,加速度计满量程为±8g; 当ACCEL_FS_SEL[1:0]=11时,加速度计满量程为±16g; |
[2:0] | - | 保留 |
17、ACCEL_CONFIG2加速度计低通设置
地址:0x1D,类型:读/写
位 | 名称 | 描述 |
[7:6] | - | 保留 |
[5:4] | DEC2_CFG[1:0] | 低功率加速度计模式的平均滤波器设置: 当DEC2_CFG[1:0]=00时,平均采样4次; 当DEC2_CFG[1:0]=01时,平均采样8次; 当DEC2_CFG[1:0]=10时,平均采样16次; 当DEC2_CFG[1:0]=11时,平均采样32次; |
[3] | ACCEL_FCHOICE_B | 用来设置“加速度计数据速率和带宽”,见下表。 |
[2:0] | A_DLPF_CFG[2:0] |
“加速度计数据速率和带宽”设置:
ACCEL_FCHOICE_B | A_DLPF_CFG[2:0] | 加速度计 | ||
3-dB BW(Hz) | Noise BW(Hz) | Rate(kHz) | ||
1 | X | 1046.0 | 1100.0 | 4 |
0 | 0 | 218.1 | 235.0 | 1 |
0 | 1 | 218.1 | 235.0 | 1 |
0 | 2 | 99.0 | 121.3 | 1 |
0 | 3 | 44.8 | 61.5 | 1 |
0 | 4 | 21.2 | 31.0 | 1 |
0 | 5 | 10.2 | 15.5 | 1 |
0 | 6 | 5.1 | 7.8 | 1 |
0 | 7 | 420.0 | 441.6 | 1 |
在低噪声模式下,加速度计配置:
ACCEL_FCHOICE_B | 1 | 0 | 0 | 0 | 0 | |
A_DLPF_CFG[2:0] | X | 7 | 7 | 7 | 7 | |
DEC2_CFG[1:0] | X | 0 | 1 | 2 | 3 | |
Averages | 1X | 4X | 8X | 16X | 32X | |
Ton (ms) | 1.084 | 1.84 | 2.84 | 4.84 | 8.84 | |
Noise BW (Hz) | 1100.0 | 441.6 | 235.0 | 121.3 | 61.5 | |
Noise (mg) TYP based on 250μg/√Hz | 8.3 | 5.3 | 3.8 | 2.8 | 2.0 | |
SMPLRT_DIV[7:0] | ODR(Hz) | 电流消耗(μA)TYP | ||||
255 | 3.9 | 8.4 | 9.4 | 10.8 | 13.6 | 19.2 |
127 | 7.8 | 9.8 | 11.9 | 14.7 | 20.3 | 31.4 |
63 | 15.6 | 12.8 | 17.0 | 22.5 | 33.7 | 55.9 |
31 | 31.3 | 18.7 | 27.1 | 38.2 | 60.4 | 104.9 |
15 | 62.5 | 30.4 | 47.2 | 69.4 | 113.9 | 202.8 |
7 | 125.0 | 57.4 | 87.5 | 132.0 | 220.9 | N/A |
3 | 250.0 | 100.9 | 168.1 | 257.0 | N/A | N/A |
1 | 500.0 | 194.9 | 329.3 | N/A | N/A | N/A |
18、LP_MODE_CFG低功耗模式配置寄存器
地址:0x1E,类型:读/写
位 | 名称 | 描述 |
[7] | GYRO_CYCLE | 当GYRO_CYCLE=1时,启用低功耗陀螺仪模式。默认设置为GYRO_CYCLE=0 |
[6:4] | G_AVGCFG[2:0] | 低功耗陀螺仪模式的平均滤波器配置。默认G_AVGCFG[2:0]=000 |
[3:0] | LPOSC_CLKSEL[3:0] | 低功率加速度输出数据率: 当LPOSC_CLKSEL[3:0]=0时,输出频率为0.24Hz; 当LPOSC_CLKSEL[3:0]=1时,输出频率为0.49Hz; 当LPOSC_CLKSEL[3:0]=2时,输出频率为0.98Hz; 当LPOSC_CLKSEL[3:0]=3时,输出频率为1.95Hz; 当LPOSC_CLKSEL[3:0]=4时,输出频率为3.91Hz; 当LPOSC_CLKSEL[3:0]=5时,输出频率为7.81Hz; 当LPOSC_CLKSEL[3:0]=6时,输出频率为15.63Hz; 当LPOSC_CLKSEL[3:0]=7时,输出频率为31.25Hz; 当LPOSC_CLKSEL[3:0]=8时,输出频率为62.5Hz; 当LPOSC_CLKSEL[3:0]=9时,输出频率为125Hz; 当LPOSC_CLKSEL[3:0]=10时,输出频率为250Hz; 当LPOSC_CLKSEL[3:0]=11时,输出频率为500Hz; 当LPOSC_CLKSEL[3:0]=12~15时,保留; |
若要陀螺仪工作在低功耗模式或6轴低功耗模式下,则应将GYRO_CYCLE设置为1。陀螺仪滤波器配置由G_AVGCFG[2:0]确定,设置平均滤波器配置。它不依赖于DLPF_CFG[2:0]。
下表显示了陀螺仪低功耗模式的一些示例配置:
FCHOICE_B[1:0] | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
G_AVGCFG[2:0] | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
Averages | 1X | 2X | 4X | 8X | 16X | 32X | 64X | 128X | |
Ton (ms) | 1.73 | 2.23 | 3.23 | 5.23 | 9.23 | 17.23 | 33.23 | 65.23 | |
Noise BW (Hz) | 650.8 | 407.1 | 224.2 | 117.4 | 60.2 | 30.6 | 15.6 | 8.0 | |
Noise (dps) TYP based on 0.008º/s/√Hz | 0.2 | 0.16 | 0.12 | 0.09 | 0.06 | 0.04 | 0.03 | 0.02 | |
SMPLRT_DIV[7:0] | ODR(Hz) | 电流消耗典型值(mA) | |||||||
255 | 3.9 | 1.3 | 1.3 | 1.3 | 1.3 | 1.4 | 1.4 | 1.5 | 1.8 |
99 | 10.0 | 1.3 | 1.3 | 1.4 | 1.4 | 1.5 | 1.6 | 1.9 | 2.5 |
64 | 15.4 | 1.4 | 1.4 | 1.4 | 1.5 | 1.6 | 1.8 | 2.2 | N/A |
32 | 30.3 | 1.4 | 1.4 | 1.5 | 1.6 | 1.8 | 2.2 | N/A | N/A |
19 | 50.0 | 1.5 | 1.5 | 1.6 | 1.8 | 2.1 | 2.8 | N/A | N/A |
9 | 100,0 | 1.6 | 1.7 | 1.9 | 2.2 | 3.0 | N/A | N/A | N/A |
7 | 125.0 | 1.7 | 1.8 | 2.0 | 2.5 | N/A | N/A | N/A | N/A |
4 | 200.0 | 1.9 | 2.1 | 2.5 | N/A | N/A | N/A | N/A | N/A |
3 | 250.0 | 2.1 | 2.3 | 2.7 | N/A | N/A | N/A | N/A | N/A |
2 | 333.3 | 2.3 | 2.6 | N/A | N/A | N/A | N/A | N/A | N/A |
1 | 500.0 | 2.9 | N/A | N/A | N/A | N/A | N/A | N/A | N/A |
19、ACCEL_WOM_THR唤醒运动阈值寄存器
地址:0x1F,类型:读/写
位 | 名称 | 描述 |
[7:0] | WOM_THR[7:0] | 这个寄存器保存的是加速度计的“运动中断唤醒的阈值”。 |
20、FIFO_EN寄存器
地址:0x23,类型:读/写
位 | 名称 | 描述 |
[7] | TEMP_FIFO_EN | 当TEMP_FIFO_EN=1时,将TEMP_OUT_H和TEMP_OUT_L温度数据以采样率写入FIFO;如果启用,即使数据路径处于备用状态,也会发生数据缓冲。 当TEMP_FIFO_EN=0时,功能被禁用。 |
[6] | XG_FIFO_EN | 当XG_FIFO_EN=1时,将GYRO_XOUT_H和GYRO_XOUT_L陀螺仪X轴数据以采样率写入FIFO;如果启用,即使数据路径处于备用状态,也会发生数据缓冲。 当XG_FIFO_EN=0时,功能被禁用。 |
[5] | YG_FIFO_EN | 当YG_FIFO_EN=1时,将GYRO_YOUT_H和GYRO_YOUT_L陀螺仪Y轴数据以采样率写入FIFO;如果启用,即使数据路径处于备用状态,也会发生数据缓冲。 当YG_FIFO_EN=0时,功能被禁用。 注意:启用陀螺仪或温度数据路径任何一个位,即使该数据路径未启用,数据也被缓冲到FIFO中。 |
[4] | ZG_FIFO_EN | 当ZG_FIFO_EN=1时,将GYRO_ZOUT_H和GYRO_ZOUT_L陀螺仪Z轴数据以采样率写入FIFO;如果启用,即使数据路径处于备用状态,也会发生数据缓冲。 当ZG_FIFO_EN=0时,功能被禁用。 |
[3] | ACCEL_FIFO_EN | 当ACCEL_FIFO_EN=1时,将ACCEL_XOUT_H, ACCEL_XOUT_L, ACCEL_YOUT_H,ACCEL_YOUT_L,ACCEL_ZOUT_H,和ACCEL_ZOUT_L加速度数据以采样率写入FIFO; 当ZG_FIFO_EN=0时,功能被禁用。 |
[2:0] | - | 保留 |
21、FSYNC_INT为FSYNC中断状态寄存器
地址:0x36,类型:读/写
位 | 名称 | 描述 |
[7] | FSYNC_INT | 当FSYNC中断产生时,这个位自动设置为1。 在读取寄存器后,该位清除为0。 |
22、INT_PIN_CFG为INT/DRDY引脚/ bypass使能配置寄存器
地址:0x36,类型:读/写
位 | 名称 | 描述 |
[7] | INT_LEVEL | 当INT_LEVEL=1时,INT/DRDY引脚被配置为低电平; 当INT_LEVEL=0时,INT/DRDY引脚被配置为高电平; |
[6] | INT_OPEN | 当INT_OPEN=1时,INT/DRDY引脚被配置为开漏极; 当INT_OPEN=0时,INT/DRDY引脚被配置为推完输出; |
[5] | LATCH_INT_EN | 当LATCH_INT_EN=1时,在中断状态被清除之前,INT/DRDY引脚保持电平不变。 当LATCH_INT_EN=0时,中断脉宽为50us。 |
[4] | INT_RD_CLEAR | 当INT_RD_CLEAR=1时,如果有读操作,中断状态被清除。 当INT_RD_CLEAR=0时,只有通过读取INT_STATUS寄存器才能清除中断状态。 |
[3] | FSYNC_INT_LEVEL | 当中断被激活低时,FSYNC_INT_LEVEL=1表示FSYNC引脚的逻辑电平。 当中断被激活高时,FSYNC_INT_LEVEL=0表示FSYNC引脚的逻辑电平。 |
[2] | FSYNC_INT_MODE_EN | 当FSYNC_INT_MODE_EN=1时,使能FSYNC引脚触发中断,并令FSYNC引脚转换到FSYNC_INT_LEVEL指定的电平。 当FSYNC_INT_MODE_EN=0时,FSYNC引脚被禁止引起中断。 |
[1] | - | 保留 |
[0] | - | 总是0 |
23、INT_ENABLE为中断使能寄存器
地址:0x38,类型:读/写
位 | 名称 | 描述 |
[7:5] | WOM_INT_EN[7:5] | 当WOM_INT_EN[7:5]=111时,使能加速度计运动中断; 当WOM_INT_EN[7:5]=000时,不使能加速度计运动中断; |
[4] | FIFO_OFLOW_EN | 当FIFO_OFLOW_EN=1时,使能FIFO缓冲区溢出产生中断。 当FIFO_OFLOW_EN=0时,不使能FIFO缓冲区溢出产生中断。 |
[3] | - | 保留 |
[2] | GDRIVE_INT_EN | 当GDRIVE_INT_EN=1时,陀螺仪驱动系统就绪中断使能。 |
[1] | - | 保留 |
[0] | DATA_RDY_INT_EN | 当DATA_RDY_INT_EN=1时,数据就绪中断使能。 |
24、INT_STATUS为中断状态寄存器
地址:0x3A,类型:读/写
位 | 名称 | 描述 |
[7:5] | WOM_INT[7:5] | 当加速度计的运动中断时,WOM_INT[7:5]=111; 在读取寄存器后,WOM_INT[7:5]=000。 |
[4] | FIFO_OFLOW_INT | 当FIFO缓冲区溢出产生时,FIFO_OFLOW_INT=1。 在读取寄存器后,FIFO_OFLOW_INT=0。 |
[3] | - | 保留 |
[2] | GDRIVE_INT | 当陀螺仪驱动系统就绪中断时,GDRIVE_INT=1。 |
[1] | - | 保留 |
[0] | DATA_RDY_INT | 当产生数据就绪中断时,DATA_RDY_INT=1。 在读取寄存器后,DATA_RDY_INT=0。 |
25、ACCEL_XOUT_H加速度X轴数据高8位寄存器
地址:0x3B,类型:只读
位 | 名称 | 描述 |
[7:0] | ACCEL_XOUT_H[7:0] | 加速度X轴数据高8位 |
26、ACCEL_XOUT_L加速度X轴数据低8位寄存器
地址:0x3C,类型:只读
位 | 名称 | 描述 |
[7:0] | ACCEL_XOUT_L[7:0] | 加速度X轴数据低8位 |
X轴实际加速度:accel_x_act =(float)(accel_x_adc)/2048;
27、ACCEL_YOUT_H加速度Y轴数据高8位寄存器
地址:0x3D,类型:只读
位 | 名称 | 描述 |
[7:0] | ACCEL_YOUT_H[7:0] | 加速度Y轴数据高8位 |
28、ACCEL_YOUT_L加速度Y轴数据低8位寄存器
地址:0x3E,类型:只读
位 | 名称 | 描述 |
[7:0] | ACCEL_YOUT_L[7:0] | 加速度Y轴数据低8位 |
Y轴实际加速度:accel_y_act =(float)(accel_y_adc)/2048;
29、ACCEL_ZOUT_H加速度Z轴数据高8位寄存器
地址:0x3F,类型:只读
位 | 名称 | 描述 |
[7:0] | ACCEL_ZOUT_H[7:0] | 加速度Z轴数据高8位 |
30、ACCEL_ZOUT_L加速度Z轴数据低8位寄存器
地址:0x40,类型:只读
位 | 名称 | 描述 |
[7:0] | ACCEL_ZOUT_L[7:0] | 加速度Z轴数据低8位 |
.Z轴实际加速度:accel_z_act =(float)(accel_z_adc)/2048;
31、TEMP_OUT_H温度传感器输出高8位寄存器
地址:0x41,类型:只读
位 | 名称 | 描述 |
[7:0] | TEMP_OUT_H[7:0] | 温度传感器输出高8位 |
32、TEMP_OUT_L温度传感器输出低8位寄存器
地址:0x42,类型:只读
位 | 名称 | 描述 |
[7:0] | TEMP_OUT_L[7:0] | 温度传感器输出低8位。 温度= ( (TEMP_OUT[15:0]-RoomTemp_Offset)/Temp_Sensitivity ) +25度 查表得RoomTemp_Offset=25,Temp_Sensitivity=326.8。 |
实际温度值temp_act = ((float)(temp_adc)-25)/326.8 + 25;
33、GYRO_XOUT陀螺仪X轴输出寄存器
1)、GYRO_XOUT_H陀螺仪X轴输出高8位寄存器
地址:0x43,类型:只读
位 | 名称 | 描述 |
[7:0] | GYRO_XOUT[15:8] | 陀螺仪X轴输出高8位。 |
2)、GYRO_XOUT_L陀螺仪X轴输出低8位寄存器
地址:0x44,类型:只读
位 | 名称 | 描述 |
[7:0] | GYRO_XOUT[7:0] | 陀螺仪X轴输出低8位。 GYRO_XOUT = Gyro_Sensitivity * X_angular_rate 当FS_SEL[1:0]=00时,陀螺仪满量程为±250dps,Gyro_Sensitivity = 131 LSB/(º/s) |
陀螺仪X轴实际角度:gyro_x_act = (float)(gyro_x_adc) / 16.4;
34、GYRO_YOUT陀螺仪Y轴输出寄存器
1)、GYRO_YOUT_H陀螺仪Y轴输出高8位寄存器
地址:0x45,类型:只读
位 | 名称 | 描述 |
[7:0] | GYRO_YOUT[15:8] | 陀螺仪Y轴输出高8位。 |
2)、GYRO_YOUT_L陀螺仪Y轴输出低8位寄存器
地址:0x46,类型:只读
位 | 名称 | 描述 |
[7:0] | GYRO_YOUT[7:0] | 陀螺仪Y轴输出低8位。 GYRO_YOUT = Gyro_Sensitivity * Y_angular_rate 当FS_SEL[1:0]=00时,陀螺仪满量程为±250dps,Gyro_Sensitivity = 131 LSB/(º/s) |
陀螺仪Y轴实际角度:gyro_y_act = (float)(gyro_y_adc) / 16.4;
35、GYRO_ZOUT陀螺仪Z轴输出寄存器
1)、GYRO_ZOUT_H陀螺仪Z轴输出高8位寄存器
地址:0x47,类型:只读
位 | 名称 | 描述 |
[7:0] | GYRO_ZOUT[15:8] | 陀螺仪Z轴输出高8位。 |
2)、GYRO_ZOUT_L陀螺仪Z轴输出低8位寄存器
地址:0x48,类型:只读
位 | 名称 | 描述 |
[7:0] | GYRO_ZOUT[7:0] | 陀螺仪Z轴输出低8位。 GYRO_ZOUT = Gyro_Sensitivity * Z_angular_rate 当FS_SEL[1:0]=00时,陀螺仪满量程为±250dps,Gyro_Sensitivity = 131 LSB/(º/s) |
陀螺仪Z轴实际角度:gyro_z_act = (float)(gyro_z_adc) / 16.4;
36、SIGNAL_PATH_RESET为信号通路复位寄存器
地址:0x68,类型:读/写
位 | 名称 | 描述 |
[7:2] | - | 保留 |
[1] | ACCEL_RST | 复位加速数字信号路径。注意:传感器寄存器不会被清除。可使用SIG_COND_RST清除传感器寄存器。 |
[0] | TEMP_RST | 复位温度数字信号路径。注意:传感器寄存器不会被清除。可使用SIG_COND_RST清除传感器寄存器。 |
37、ACCEL_INTEL_CTRL为加速度计智能控制寄存器
地址:0x69,类型:读/写
位 | 名称 | 描述 |
[7] | ACCEL_INTEL_EN | 这位启用了运动唤醒检测逻辑。 |
[6] | ACCEL_INTEL_MODE | 当ACCEL_INTEL_MODE=1时,将当前的样本与之前的样本进行比较。 当ACCEL_INTEL_MODE=0时,将当前的样本与之前的样本不进行比较。 |
[5:0] | - | 保留 |
38、USER_CTRL为用户控制寄存器
地址:0x6A,类型:读/写
位 | 名称 | 描述 |
[7] | - | 保留 |
[6] | FIFO_EN | 当FIFO_EN=1时,使能FIFO操作模式。 当FIFO_EN=0时,不使能从SPI串口访问FIFO。 要禁用DMA的FIFO写入,则令FIFO_EN=0。 |
[5] | - | 保留 |
[4] | I2C_IF_DIS | I2C_IF_DIS=1 ,禁用I2C从模块,并将串行接口置于SPI模式。 |
[3] | - | 保留 |
[2] | FIFO_RST | FIFO_RST=1,复位FIFO模块。复位是异步的。该位在内部20MHz时钟的一个时钟周期后自动清除。 |
[1] | - | 保留 |
[0] | SIG_COND_RST | SIG_COND_RST=1 ,复位所有陀螺仪数字信号路径,加速数字信号路径,和临时数字信号路径。 这个位也会清除所有的传感器寄存器。 |
39、PWR_MGMT_1为电源管理寄存器1
地址:0x6B,类型:读/写
位 | 名称 | 描述 |
[7] | DEVICE_RESET | DEVICE_RESET=1,重置内部寄存器,并恢复默认设置。一旦复位完成,该位自动清除为0。 |
[6] | SLEEP | 当SLEEP=1时,使能芯片进入睡眠模式。 注意:默认值为1,芯片从睡眠模式启动。 |
[5] | ACCEL_CYCLE | 当ACCEL_CYCLE=1时,且SLEEP=0和STANDBY=0时,芯片将在睡眠和采集单个加速度计样本之间循环,取单个加速度计样本的速率由SMPLRT_DIV决定。 注意:当通过PWR_MGMT_2寄存器位禁用所有加速度计轴并启用周期时,芯片将以上述各自寄存器确定的速率唤醒,但不会采集任何样本。 |
[4] | GYRO_STANDBY | 当GYRO_STANDBY=1时,陀螺仪驱动和锁相环电路被启用,但感测路径被禁用。这是一个低功耗模式,允许快速启用陀螺仪。 |
[3] | TEMP_DIS | 当TEMP_DIS=1时,禁用温度传感器。 |
[2:0] | CLKSEL[2:0] | 当CLKSEL[2:0]=0,内部振荡器为20MHz。 当1<=CLKSEL[2:0]<=5,自动选择最佳的可用时钟源,如果准备好就使用这个锁相环,否则使用内部振荡器。 当CLKSEL[2:0]=6,内部振荡器为20MHz。 当CLKSEL[2:0]=7,停止时钟并保持定时发生器复位。 |
40、PWR_MGMT_2为电源管理寄存器2
地址:0x6C,类型:读/写
位 | 名称 | 描述 |
[7] | FIFO_LP_EN | FIFO_LP_EN=1,在低功耗加速度计模式下使能FIFO。 默认值为FIFO_LP_EN=0。 |
[6] | - | 保留 |
[5] | STBY_XA | 当STBY_XA=1时,X轴加速计被禁用。 当STBY_XA=0时,X轴加速计被打开。 |
[4] | STBY_YA | 当STBY_YA=1时,Y轴加速计被禁用。 当STBY_YA=0时,Y轴加速计被打开。 |
[3] | STBY_ZA | 当STBY_ZA=1时,Z轴加速计被禁用。 当STBY_ZA=0时,Z轴加速计被打开。 |
[2] | STBY_XG | 当STBY_XG=1时,X轴陀螺仪被禁用。 当STBY_XG=0时,X轴陀螺仪被打开。 |
[1] | STBY_YG | 当STBY_YG=1时,Y轴陀螺仪被禁用。 当STBY_YG=0时,Y轴陀螺仪被打开。 |
[0] | STBY_ZG | 当STBY_ZG=1时,Z轴陀螺仪被禁用。 当STBY_ZG=0时,Z轴陀螺仪被打开。 |
41、FIFO_COUNT为FIFO写入的字节数寄存器
1)、FIFO_COUNTH为FIFO写入的字节数高4位寄存器
地址:0x72,类型:只读
位 | 名称 | 描述 |
[7:5] | - | 保留 |
[4:0] | FIFO_COUNT[12:8] | FIFO_COUNT[12:8]为FIFO写入的字节数高4位。 注意:为了将新数据锁存到FIFO_COUNTH和FIFO_COUNTL,必须读FIFO_COUNTH。 |
2)、FIFO_COUNTL为FIFO写入的字节数低8位寄存器
地址:0x73,类型:只读
位 | 名称 | 描述 |
[7:0] | FIFO_COUNT[7:0] | FIFO_COUNT[7:0]为FIFO写入的字节数低8位。 注意:为了将新数据锁存到FIFO_COUNTH和FIFO_COUNTL,必须读FIFO_COUNTH。 |
42、FIFO_R_W为FIFO读写寄存器
1)、FIFO_COUNTH为FIFO写入的字节数高4位寄存器
地址:0x74,类型:读/写
位 | 名称 | 描述 |
[7:0] | FIFO_DATA[7:0] | Read/Write命令为FIFO提供读或写操作。 |
43、WHO_AM_I为ID寄存器
地址:0x75,类型:读/写
位 | 名称 | 描述 |
[7:0] | WHOAMI[7:0] | ICM-20608G的ID为0XAF; ICM-20608D的ID为0XAE。 |
44、XA_OFFSET为X轴加速度计偏移寄存器
1)、XA_OFFSET_H为X轴加速度计偏移抵消XA_OFFS[14:7]
地址:0x77,类型:读/写
位 | 名称 | 描述 |
[7:0] | XA_OFFS[14:7] | X轴加速度计的上位偏移抵消。 在所有满量程模式下,可抵消+/- 16g偏移,15位0.98毫克步骤。 |
2)、XA_OFFSET_L为X轴加速度计偏移抵消XA_OFFS[6:0]
地址:0x78,类型:读/写
位 | 名称 | 描述 |
[7:1] | XA_OFFS[6:0] | X轴加速度计的下位偏移抵消。 在所有满量程模式下,可抵消+/- 16g偏移,15位0.98毫克步骤。 |
[0] | - | 保留。 |
45、YA_OFFSET为Y轴加速度计偏移寄存器
1)、YA_OFFSET_H为Y轴加速度计偏移抵消YA_OFFS[14:7]
地址:0x7A,类型:读/写
位 | 名称 | 描述 |
[7:0] | YA_OFFS[14:7] | Y轴加速度计的上位偏移抵消。 在所有满量程模式下,可抵消+/- 16g偏移,15位0.98毫克步骤。 |
2)、YA_OFFSET_L为Y轴加速度计偏移抵消YA_OFFS[6:0]
地址:0x7B,类型:读/写
位 | 名称 | 描述 |
[7:1] | YA_OFFS[6:0] | Y轴加速度计的下位偏移抵消。 在所有满量程模式下,可抵消+/- 16g偏移,15位0.98毫克步骤。 |
[0] | - | 保留。 |
46、ZA_OFFSET为Z轴加速度计偏移寄存器
1)、ZA_OFFSET_H为Z轴加速度计偏移抵消ZA_OFFS[14:7]
地址:0x7D,类型:读/写
位 | 名称 | 描述 |
[7:0] | ZA_OFFS[14:7] | Z轴加速度计的上位偏移抵消。 在所有满量程模式下,可抵消+/- 16g偏移,15位0.98毫克步骤。 |
2)、ZA_OFFSET_L为Z轴加速度计偏移抵消ZA_OFFS[6:0]
地址:0x7E,类型:读/写
位 | 名称 | 描述 |
[7:1] | ZA_OFFS[6:0] | Z轴加速度计的下位偏移抵消。 在所有满量程模式下,可抵消+/- 16g偏移,15位0.98毫克步骤。 |
[0] | - | 保留。 |