六轴传感器ICM-20608
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] | - | 保留。 |
相关文章:
六轴传感器ICM-20608
ICM-20608-G是一个6轴传感器芯片,由3轴陀螺仪和3轴加速度计组成。陀螺仪可编程的满量程有:250,500,1000和2000度/秒。加速度计可编程的满量程有:2g,4g,8g和16g。学习Linux之SPI之前,…...
TikTok Shop欧洲市场爆发,欧洲TikTok 运营网络专线成运营关键
TikTok在欧洲的影响力还在持续攀升,日前,TikTok发布了最新的欧盟执行和使用数据报告,报告中提到: 2024年7~12月期间,TikTok在欧盟地区的月活用户达1.591亿,较上一报告期(2024年10月发布…...
专业工具,提供多种磁盘分区方案
随着时间的推移,电脑的磁盘空间往往会越来越紧张,许多人都经历过磁盘空间不足的困扰。虽然通过清理垃圾文件可以获得一定的改善,但随着文件和软件的增多,磁盘空间仍然可能显得捉襟见肘。在这种情况下,将其他磁盘的闲置…...
你会测量管道液体流阻吗?西-魏斯巴赫方程(Darcy-Weisbach Equation)、Colebrook-White 方程帮你
测量管道液体流阻需要测量以下关键量: 需要测量的量 压力差(ΔP):管道入口和出口之间的压力差,通常通过压力传感器或差压计测量。流量(Q):流经管道的液体体积流量,可通…...
SQL命令详解之多表查询(连接查询)
目录 1 简介 2 内连接查询 2.1 内连接语法 2.2 内连接练习 3 外连接查询 3.1 外连接语法 3.2 外连接练习 4 总结 1 简介 连接的本质就是把各个表中的记录都取出来依次匹配的组合加入结果集并返回给用户。我们把 t1 和 t2 两个表连接起来的过程如下图所示: …...
导入 Excel 规则批量修改或删除 Excel 表格内容
我们前面介绍过按照规则批量修改 Excel 文档内容的操作,可以对大量的 Excel 文档按照一定的规则进行统一的修改,可以很好的解决我们批量修改 Excel 文档内容的需求。但是某些场景下,我们批量修改 Excel 文档内容的场景比较复杂,比…...
字节码是由什么组成的?
Java字节码是Java程序编译后的中间产物,它是一种二进制格式的代码,可以在Java虚拟机(JVM)上运行。理解字节码的组成有助于我们更好地理解Java程序的运行机制。 1. Java字节码是什么? 定义 Java字节码是Java源代码经过…...
【Spring Boot 应用开发】-04-02 自动配置-数据源-手撸一个最简持久层工具类
设计概述 有时候我们不需要太重的持久层,就像要一个最简的、轻量的持久层,便于维护和扩展,代码掌握在自己手里,那么我们可以基于springboot的自动配置,快速的构建一个自己的持久层轻量框架,不说废话&#…...
学之思社区版考试系统docker-compose部署
参考 开源项目-Docker部署学之思管理系统 安装docker sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Bas…...
1.11.信息系统的分类【DSS】
决策支持系统(DSS)技术解析 一、DSS核心定义 🚀 智能决策引擎 由三大智能模块构成的复合系统: #mermaid-svg-UdoVtlw3MrxynK6Q {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#me…...
mfc140u.dll是什么?当程序遭遇mfc140u.dll问题:快速恢复正常的秘诀
在使用Windows操作系统运行某些软件时,不少用户会遇到令人头疼的mfc140u.dll文件丢失错误。mfc140u.dll这个错误一旦出现,往往导致相关程序无法正常启动或运行,给用户带来诸多不便。这天的这篇文章将给大家分析mfc140u.dll是什么?…...
傅里叶变换:跨越时空的数学魔法
引言:从振动到信息——傅里叶的智慧 傅里叶变换(Fourier Transform)是数学与工程领域最具影响力的工具之一。它的核心思想是将复杂的信号分解为简单的正弦波和余弦波的叠加,从而揭示隐藏在数据背后的频率信息。自19世纪法国数学家…...
【YOLOv12改进trick】StarBlock引入YOLOv12,创新涨点优化,含创新点Python代码,方便发论文
🍋改进模块🍋:StarBlock 🍋解决问题🍋:采用StarBlock将输入数据映射到一个极高维的非线性特征空间,生成丰富的特征表示,使得模型在处理复杂数据时更加有效。 🍋改进优势🍋:简单粗暴的星型乘法涨点却很明显 🍋适用场景🍋:目标检测、语义分割、自然语言处理…...
基于大数据的电影情感分析推荐系统
【大数据】基于大数据的电影情感分析推荐系统(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 本系统通过结合Flask框架、Vue前端、LSTM情感分析算法以及pyecharts和numpy、pandas等技术&#x…...
手写一个Tomcat
Tomcat 是一个广泛使用的开源 Java Servlet 容器,用于运行 Java Web 应用程序。虽然 Tomcat 本身功能强大且复杂,但通过手写一个简易版的 Tomcat,我们可以更好地理解其核心工作原理。本文将带你一步步实现一个简易版的 Tomcat,并深…...
清华北大推出的 DeepSeek 教程(附 PDF 下载链接)
清华和北大分别都有关于DeepSeek的分享文档,内容非常全面,从原理和具体的应用,大家可以认真看看。 北大 DeepSeek 系列 1:提示词工程和落地场景.pdf 北大 DeepSeek 系列 2:DeepSeek 与 AIGC 应用.pdf 清华 Deep…...
用CMake编译glfw进行OpenGL配置,在Visual Studio上运行
Visual Studio的下载 Visual Studio 2022 C 编程环境 GLFW库安装 GLFW官网地址 GLFW官网地址:https://www.glfw.org下载相应版本,如下图: CMake软件进行编译安装 下载CMake 下载的如果是源码包,需要下载CMake软件进行编译安装…...
使用MPU6050产生中断,唤醒休眠中的STM32
本篇文章源码:STM32L431_RT_Thread_PM_mpu6050_wakeup: 使用MPU6050产生中断,唤醒休眠中的STM32L4 书接上回【笔记】STM32L4系列使用RT-Thread Studio电源管理组件(PM框架)实现低功耗-CSDN博客 上一篇文章使用PA0外接一个按键实…...
如何借助人工智能AI模型开发一个类似OpenAI Operator的智能体实现电脑自动化操作?
这几天关于Manus的新闻铺天盖地,于是研究了一下AI智能体的实现思路,发现Openai 的OpenAI Operator智能体已经实现了很强的功能,但是每月200美金的价格高不可攀,而Manus的邀请码据说炒到了几万块!就想能不能求助人工智能…...
蓝桥杯备赛:炮弹
题目解析 这道题目是一道模拟加调和级数,难的就是调和级数,模拟过程比较简单。 做法 这道题目的难点在于我们在玩这个跳的过程,可能出现来回跳的情况,那么为了解决这种情况,我们采取的方法是设定其的上限步数。那么…...
Mysql中的常用函数
1、datediff(date1,date2) date1减去date2,返回两个日期之间的天数。 SELECT DATEDIFF(2008-11-30,2008-11-29) AS DiffDate -- 返回1 SELECT DATEDIFF(2008-11-29,2008-11-30) AS DiffDate -- 返回-1 2、char_length(s) 返回字符串 s 的字符数 3、round(x,d)…...
安孚科技携手政府产业基金、高能时代发力固态电池,开辟南孚电池发展新赛道
安孚科技出手,发力固态电池。 3月7日晚间,安孚科技(603031.SH)发布公告称,公司控股子公司南孚电池拟与南平市绿色产业投资基金有限公司(下称“南平绿色产业基金”)、高能时代(广东横…...
前端知识点---库和包的概念
1. 什么是库(Library)? 库(Library) 是一组可复用的代码集合,提供特定功能(如网络请求、UI 组件、数据处理等)。 特点: 只是代码的集合,没有完整的应用结构…...
【AD】5-14 多跟走线设置
多跟走线 快捷键UM 先拉出线头并框选或线选(快捷键SL),点击交互式总线布线(快捷键UM),走线过程中CtrlB调小线间距,shiftB调大线间距或按TAB键直接修改...
生物电阻抗技术:精准洞察人体营养的“智能窗口”
生物电阻抗技术:精准洞察人体营养的“智能窗口” 引言:营养监测的新兴力量 在健康管理日益受到重视的今天,人体营养监测成为保障健康的关键环节。 传统营养评估方法往往依赖于主观问卷或侵入性检测,存在诸多局限性。 而生物电阻…...
国产操作系统之系统分区及分区的作用
国产操作系统之系统分区及分区的作用和挂载 Linux的系统分区跟Windows有着本质区别,在windows中大家知道c盘一般为系统盘,除c盘系统盘外,我们再分为D、E等文件存储盘,而在Linux中虽然是以文件目录著称的系统,但思路也一样的,比如针对系统分区中 /home、/var 和 /opt 等文…...
大模型AI平台DeepSeek 眼中的SQL2API平台:QuickAPI、dbapi 和 Magic API 介绍与对比
目录 1 QuickAPI 介绍 2 dbapi 介绍 3 Magic API 介绍 4 简单对比 5 总结 统一数据服务平台是一种低代码的方式,实现一般是通过SQL能直接生成数据API,同时能对产生的数据API进行全生命周期的管理,典型的SQL2API的实现模式。 以下是针对…...
快速理清 Attention 注意力和 Encoder, Decoder 概念
之前一直以为 Attention 和 RNN 没关系是凭空蹦出来的新概念;以为 Transformer, Encoder, Decoder 这几个概念是绑在一起的。并不尽然。 Encoder 和 Decoder RNN 里就有 Encoder Decoder 的概念。其中,encoder 接受用户输入,写入 hidden stat…...
爬虫案例八js逆向爬取网易音乐
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、js逆向的前期准备二、网站分析三、代码 前言 提示:这里可以添加本文要记录的大概内容: 爬取网易音乐 提示:以下是本篇…...
Sentinel 笔记
Sentinel 笔记 1 介绍 Sentinel 是阿里开源的分布式系统流量防卫组件,专注于 流量控制、熔断降级、系统保护。 官网:https://sentinelguard.io/zh-cn/index.html wiki:https://github.com/alibaba/Sentinel/wiki 对比同类产品࿱…...
