L3G4200D传感器学习
L3G4200D是意法(ST)半导体公司推出的一款MEMS运动传感器:三轴数字输出陀螺仪,可测量物体绕X、Y、Z三轴运动夫人角速度的变化,测量范围为±250, ±500, ±1000, 和 ±2000°/sec(dps)。通过测量角速度的变化,可以判别出物体的运动状态,所以也称为运动传感器,换句话说,这传感器可以让我们的设备知道自己“在哪儿和去哪儿”(where they are or where they are going),提供16位数据输出,输出值为16位数值的补码,以及可配置的低通和高通滤波器等嵌入式数字功能,支持IIC和SPI总线两种通讯方式。
一、传感器的测量方向和内部引脚图
引脚说明如下:
Pin | 名称 | 功能 |
1 | Vdd_IO | 电源IO脚 |
2 | SCL/SPC | I2C串行时钟/SPI串口时钟 |
3 | SDA/SDI/SDO | I2C串行数据/SPI串行数据输入/3-wire串行接口数据输出 |
4 | SDO/SA0 | SPI串行数据输出/ I2C设备的地址不显着位 |
5 | CS | SPI启用 I2C / SPI模式选择(1: I2C模式; 0: SPI启用) |
6 | DRDY/INT2 | 数据就绪/FIFO中断 |
7 | INT1 | 可编程中断 |
8 | Reserved | 接地 |
9 | Reserved | 接地 |
10 | Reserved | 接地 |
11 | Reserved | 接地 |
12 | Reserved | 接地 |
13 | GND | 0V供应 |
14 | PLLFILT | 锁相环环路滤波器 |
15 | Reserved | 连接到Vdd |
16 | Vdd | 电源 |
二、传感器寄存器的配置过程
1、初始化传感器(选择量程、高通滤波模式,设置中断使能等,对相应的控制寄存器进行写操作)
2、读取数据(首先读状态寄存器(STATUS_REG),若ZYXDA=1,则可以读数,否则等待。为减小误差,在编写程序时要设置连续读数多次,然后取平均值。)
三、主要寄存器介绍
1、控制寄存器
①CTRL_REG1(地址:20H):选择输出数据速率。输出带宽,以及X、Y、Z轴的使能
DR1 | DR0 | BW1 | BW0 | PD | Zen | Yen | Xen |
DR1-DR0和BW1-BW0配置对应的输出速率和带宽如下表(其中:ODR为数据输出频率,Cut_Off为滤除频率)
DR<1:0> | BW<1:0> | ODR{Hz} | Cut_Off |
00 | 00 | 100 | 12.5 |
00 | 01 | 100 | 25 |
00 | 10 | 100 | 25 |
00 | 11 | 100 | 25 |
01 | 00 | 200 | 12.5 |
01 | 01 | 200 | 25 |
01 | 10 | 200 | 50 |
01 | 11 | 200 | 70 |
10 | 00 | 400 | 20 |
10 | 01 | 400 | 25 |
10 | 10 | 400 | 50 |
10 | 11 | 400 | 110 |
11 | 00 | 800 | 30 |
11 | 01 | 800 | 35 |
11 | 10 | 800 | 50 |
11 | 11 | 800 | 110 |
PD | 0:掉电模式 1:普通模式或者休眠模式(默认为0 ) |
Zen | Z轴使能 0:不启用 1:启用(默认1) |
Yen | Y轴使能 0:不启用 1:启用(默认1) |
Xen | X轴使能 0:不启用 1:启用(默认1) |
对于PD处于3个模式中的哪一个则看下表:
模式 | PD | Zen | Yen | Xen |
掉电模式 | 0 | - | - | - |
休眠模式 | 1 | 0 | 0 | 0 |
普通模式 | 1 | - | - | - |
②CTRL_REG2(地址:21H):选择高通滤波模式和高通截止频率
0 | 0 | HPM1 | HPM0 | HPCF3 | HPCF2 | HPCF1 | HPCF0 |
高通滤波器模式选择配置
HPM1 | HPM0 | 高通滤波器模式 |
0 | 0 | 普通模式(reset reading HP_RESET_FILTER) |
0 | 1 | 滤波器参考信号 |
1 | 0 | 普通模式 |
1 | 1 | 根据中断自动设定 |
高通截止频率Hz
HPCF<3:0> | ODR=100Hz | ODR=200Hz | ODR=400Hz | ODR=800Hz |
0000 | 8 | 15 | 30 | 56 |
0001 | 4 | 8 | 15 | 30 |
0010 | 2 | 4 | 8 | 15 |
0011 | 1 | 2 | 4 | 8 |
0100 | 0.5 | 1 | 2 | 4 |
0101 | 0.2 | 0.5 | 1 | 2 |
0110 | 0.1 | 0.2 | 0.5 | 1 |
0111 | 0.05 | 0.1 | 0.2 | 0.5 |
1000 | 0.02 | 0.05 | 0.1 | 0.2 |
1001 | 0.01 | 0.02 | 0.05 | 0.1 |
③CTRL_REG3(地址:22H):中断使能
I1_Int1 | I1_Boot | H_Lactive | PP_OD | I2_DRDY | I2_WTM | I2_ORun | I2_Empty |
相关功能配置如下:
I1_Int1 | INT1脚中断使能(0:Disable,1:Enable)默认0 |
I1_Boot | INT1脚引导状态可用(0:Disable,1:Enable)默认0 |
H_Lactive | INT1脚中断激活配置(0:高,1:低)默认0 |
PP_OD | Push- Pull / Open drain. (0: Push- Pull; 1: Open drain)默认0 |
I2_DRDY | DRDY/INT2数据准备(0: Disable; 1: Enable)默认0 |
I2_WTM | DRDY/INT2的FIFO WaterMark中断(0: Disable; 1: Enable)默认0 |
I2_ORun | DRDY/INT2的FIFO溢出中断(0: Disable; 1: Enable)默认0 |
I2_Empty | DRDY/INT2的FIFO空中断(0: Disable; 1: Enable)默认0 |
④CTRL_REG4(地址:23H):选择量程
BDU | BLE | FS1 | FS0 | - | ST1 | ST0 | SIM |
相关配置如下表:
BDU | 数据块更新.(0:持续更新,1:输出寄存器在MSB和LSB读时才更新)默认为0 |
BLE | 大/小 尾端数据选择(0:数据LSB在地位地址,1:数据LSB在高位地址)默认0 |
FS1-FS0 | 满量程选择(00:250dps;01:500dps;10:2000dps;11:2000dps)(默认00) |
ST1-ST0 | 自检使能(00:普通模式;01:Self test 0 (+);10:--;11:Self test 1 (-)) |
SIM | SPI串行接口模式选择(0:四线接口;1:三线接口) |
⑤CTRL_REG5(地址:24H):FIFO使能,高通滤波使能
BOOT | FIFO_EN | -- | HPen |
INT1_Sel1 | INT1_Sel0 | Out_Sel1 | Out_Sel0 |
相关配置:
BOOT | 重启内存内容(0:普通模式; 1:重启内存内容)默认0 |
FIFO_EN | FIFO(0: FIFO disable; 1: FIFO Enable)默认0 |
HPen | 高通滤波器使能(0: HPF disabled; 1: HPF enabled)默认0 |
INT1_Sel1- INT1_Sel0 | INT1选择配置 ,默认0 |
Out_Sel1- Out_Sel0 | 外部选择配置,默认0 |
⑥STATUS_REG(地址:27H):状态寄存器,数据就绪可读
ZYXOR | ZOR | YOR | XOR | ZXYDA | ZDA | YDA | XDA |
相关配置
ZYXOR | X,Y,Z轴数据溢出(0:没有溢出1:在读之前,新数据已经将先前的数据覆盖)默认0 |
ZOR | Z轴数据溢出(0:没有溢出1:在读之前,新数据已经将先前的数据覆盖)默认0 |
YOR | Y轴数据溢出(0:没有溢出1:在读之前,新数据已经将先前的数据覆盖)默认0 |
XOR | X轴数据溢出(0:没有溢出1:在读之前,新数据已经将先前的数据覆盖)默认0 |
ZYXDA | X,Y,Z轴新数据(0:没有获取新数据1:获取新数据)默认0 |
ZDA | Z轴新数据(0:没有获取新数据1:获取新数据)默认0 |
YDA | Y轴新数据(0:没有获取新数据1:获取新数据)默认0 |
XDA | X轴新数据(0:没有获取新数据1:获取新数据)默认0 |
2、数据寄存器(共6个,每个轴的角速度由两个字节组成,分成高位和低位,数据以二进制补码形式存储):
OUT_X_L(地址:28H):X轴角速度 低位
OUT_X_H(地址:29H):X轴角速度 高位
OUT_Y_L(地址:2AH):Y轴角速度 低位
OUT_Y_H(地址:2BH):Y轴角速度 高位
OUT_Z_L(地址:2CH):Z轴角速度 低位
OUT_Z_H(地址:2DH):Z轴角速度 高位