亲译手册2资料.docx
- 文档编号:23195190
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:33
- 大小:1.13MB
亲译手册2资料.docx
《亲译手册2资料.docx》由会员分享,可在线阅读,更多相关《亲译手册2资料.docx(33页珍藏版)》请在冰豆网上搜索。
亲译手册2资料
3启动顺序
一旦设备上电,它就会自动把内部闪存的标准配置装载到内部寄存器。
当引导程序结束,也就是上电5毫秒之后,设备自动进入省电模式。
要开启设备并且采集角速率数据,就要通过CTRL_REG1选择运行模式,并且使能至少一个轴。
下面顺序可以用于配置设备:
1.WriteCTRL_REG2
2.WriteCTRL_REG3
3.WriteCTRL_REG4
4.WriteCTRL_REG6
5.WriteReference
6.WriteINT1_THS
7.WriteINT1_DUR
8.WriteINT1_CFG
9.WriteCTRL_REG5
10.WriteCTRL_REG1
3.1读取角速率数据
设备包含一个状态寄存器STATUS_REG,应该检测当新的一组数据有效产生。
读取顺序应该:
1.ReadSTATUS_REG
2.IfSTATUS_REG(3)=0thengoto1
3.IfSTATUS_REG(7)=1thensomedatahavebeenoverwritten
4.ReadOUT_X_L
5.ReadOUT_X_H
6.ReadOUT_Y_L
7.ReadOUT_Y_H
8.ReadOUT_Z_L
9.ReadOUT_Z_H
10.Dataprocessing
11.Goto1
第3步执行的检测用于判断数据读取的速度是否适合数据产生的速度,STATUS_REG的ZYXOR位应该被设置为1,以防止由于过慢的读取速度导致一个或者多个角速率数据被新的数据覆盖。
当设备中所有的现有数据已经被读取并且期间新的数据还没有产生,那么超限的位被自动清除。
3.1.2使用数据就绪(DRY)信号
设备应该被配置有一个HW信号以确定一组新的测量数据可以读取。
这个信号由STATUS_REG的XYZDA位表示。
这个信号可以由DRY/INT2引脚检测(通过设置CTRL_REG3的I2_DRDY位为1,并且通过设置CTRL_REG3的H_Lactive位决定高电平有效或者低电平有效(详见5.1章节))
当一组新的角速率数据产生并且准备好可读取时Data_ready信号上升为1。
当三个轴之一的数据高位被读取后中断复位。
3.1.3Usingtheblockdataupdate(BDU)feature
3.1.3使用(阻塞数据更新)数据块更新(BDU)特征
如果角速率的读取速度特别慢无法与STATUS_REG的XYZDA位或者中断RDY信号同步,那么强烈推荐把CTRL_REG4的BDU位设置为1。
这个特征避免了对不同数据值的读取。
当BDU有效时,与每一个通道有关的数据寄存器包含由设备产生的最新的角速率数据。
为了防止三轴的每一个数据对(高字节和低字节)被影响,当正在读取的同时,被读取的轴的数据将暂停刷新直到MSB和LSB部分被读完。
注释:
只有当OUT_X(Y,Z)_L和OUT_X(Y,Z)_H同时被取样时BDU才是最合适的。
比如,若读取速度太慢,可能读取X和Y在T1,读取Z在T2。
3.2理解角速率数据
测得的角速率数据被发送到了OUT_X_H,OUT_X_L,OUT_Y_H,OUT_Y_L,OUT_Z_H,和OUT_Z_L寄存器,这个寄存器包含最重要的角速率信号,三轴完整的数据双字节以二进制补码的形式存在三轴寄存器中。
3.2.1数据列
角速率数据以左对齐的16位数字描述。
3.2.2大,小尾数的选择
设备允许交换角速率数据的高字节和低字节,以此配合little-endian和big-endian。
LittleEndian表示最低字节存在最低地址,最高字节存在最高地址(小端先出)。
这种模式需要将CTRL_REG4中的BLE置0(默认为0)。
BigEndian表示高字节存储在最低的地址,低字节存在高地址。
3.2.3角速度举例
表6提供了一些关于角速率数据的基本的例子,数据是在假设设备工作在标准环境下所列出来的,实际上显示的是BLE位的作用
表6.Outputdataregisterscontentvs.angularrate(FS=250dps)
角速率值
BLE=0
BLE=1
寄存器地址
28h
29h
28h
29h
0dps
00h
00h
00h
00h
100dps
A4h
2Ch
2Ch
A4h
200dps
49h
59h
59h
49h
-100dps
5Ch
C4h
C3h
5Ch
-200dps
B7h
A6h
A6h
B7H
4数字滤波器(CTRL_REG2、CTRL_REG5)
设别提供了嵌入式的低通滤波器可以轻易去掉测得角速率的直流成分,通过CTRL_REG5的HPen,INTx_Sel和Out_Sel位,可以把滤波器应用到输出或者FIFO的数据,或者用在中断数据,这意味着当中断产生工作在非过滤数据时可以得到被过滤的数据。
LPF——低通滤波器;HPF——高通滤波器;
4.1滤波器配置
根据表格8,HPen和Out_sel位用于驱动数据到输出寄存器和FIFO
表8:
Out_Sel配置设置
Hpen
OUT_SEL1
OUT_SEL0
Description
X
0
0
数据寄存器和FIFO中的数据都是非高通过滤
X
0
1
数据寄存器和FIFO中的数据是高通滤波
0
1
X
数据寄存器和FIFO中的数据由LPF2低通过滤
1
1
X
数据寄存器和FIFO中的数据是由LPF2高通和低通过滤
表9:
INT_SEL配置设置
Hpen
INT_SEL1
INT_SEL0
Description
X
0
0
非高通滤波数据用于产生中断
X
0
1
高通滤波的数据用于产生中断
0
1
X
低通滤波器的数据用于中断产生
1
1
X
高通和低通滤波器的数据用于产生中断
4.2低通滤波器
低通滤波器的频带宽度取决于所设定的ODR,低通滤波器截止频率见表12。
表10.低通滤波器截止频率
4.3高通滤波器
频带宽度取决于所选择的ODR和CTRL_REG2的HPCFx位的设置,截止频率见表格12。
表13.高通滤波器模式:
HPM1
HPM0
模式
0
0
正常模式(通过阅读REFERENCE寄存器复位)
0
1
参考信号进行过滤
1
0
普通模式
1
1
自动复位对中断事件
4.3.1普通模式
在这样的配置下,高通滤波器可以通过读取REFERENCE寄存器而复位,去除角速率的直流部分。
4.3.2参考模式
在此配置下,输出数据根据输入角速率和参考寄存器的内容的差别计算,寄存器以2进制补码形式,这些8位寄存器的1LSB的值取决于所选的量程(表14)。
满量程
参考模式LSB值(mdps)
250
~2
500
~4
2000
~16
图4.参考模式
4.3.3自动复位
当配置的中断事件发生时滤波器是自动复位的。
HP_RESET用于设置瞬时滤波器
提示:
一个中断之后,xyz数据置位用于复位滤波器
Note:
XYZdatasetusedtoresetthefilteristheoneaftertheinterrupt.
5中断产生
中断信号可以被配置在一个非常适合的方式以允许识别三轴独立X,Y,Z的转动,中断信号由INT1引脚产生,INT2引脚专用于DRY和FIFO中断。
5.1中断引脚配置(CTRL_REG3)
设备带有data-ready和中断信号的两个中断引脚,通过CTRL_REG3设定引脚的功能。
5.2中断配置
设备提供了几种常见的个性化中断信号,中断行为涉及到的寄存器是INT1_CFG,INT1_THS和INT1_DURATION.
Table18.INT1_CFGdescription
AND/OR
AND/OR中断事件的组合。
默认值:
0
(0:
或中断事件的组合;1:
AND中断事件的组合
LIR
锁存中断请求。
默认值:
0
(0:
不锁存中断请求;1:
中断请求锁存)
通过阅读INT1_SRC章清零。
ZHIE
启用Z高事件时产生中断。
默认值:
0
(0:
禁止中断请求;1:
使能中断请求当测量到加速度高于预设的阈值)
ZLIE
启用Z低事件时产生中断。
默认值:
0
(0:
禁止中断请求;1:
使能中断请求当测量到加速度低于预设的阈值)
YHIE
启用Y高事件时产生中断。
默认值:
0
(0:
禁止中断请求;1:
使能中断请求当测量到加速度高于预设的阈值)
YLIE
启用Y低事件时产生中断。
默认值:
0
(0:
禁止中断请求;1:
使能中断请求当测量到加速度低于预设的阈值)
XHIE
启用X高事件时产生中断。
默认值:
0
(0:
禁止中断请求;1:
使能中断请求当测量到加速度高于预设的阈值)
XLIE
启用X低事件时产生中断。
默认值:
0
(0:
禁止中断请求;1:
使能中断请求当测量到加速度低于预设的阈值)
无论什么时候,一个中断条件确定产生变产生一个中断信号,同时凭借读取INT1_SRC寄存器可以了解发生的是什么条件。
读取INT1_SRC寄存器也可以清INT1_SRC的IA位(在INT1引脚上的最终的中断信号),如果latched选项关闭,将允许INT1_SRC寄存器中数据的刷新。
5.3临界值
临界值寄存器INT1_THS和INT_THS_xL(分别是MSB和LSB)定义了中断发生电路所参考的角速率。
临界值的1LSB的值取决于所选满量程(表22)
5.4持续时间
Duration寄存器的Dx位的内容设定了中断事件被识别的最小时间。
持续步骤操作和最高值取决于所选择的ODR。
持续时间由n除以ODR计算得到,n由Duration的内容设定,ODR是输出数据速率:
100,200,400或800。
表25.普通模式下持续时间最小分辨率值
WAIT等待位具有以下含义:
等待='0':
如果信号跨越选定的阈值,中断立即下降
等待='1':
如果信号跨越选定的阈值,只有当超过已经设定在持续时间计数器中选定的采样次数,才有中断信号的下降。
图20。
等待禁用
5.5选择轴的运转,唤醒中断
陀螺仪随着识别到轴的运动唤醒产生中断信号,whenever一个中断条件确定后,中断信号产生同时通过读取INT1_SRC寄存器以辨别发生了什么条件。
选择的轴运动信号selectiveaxismovementdetectionsignal(SA),和唤醒中断信号信号wake-upsignal(WU)见图9.
通过INT1_CFG寄存器的AOI位选择由SA或WU来产生中断。
如果AOI位为'0',来自INT1_CFG寄存器所使能的轴的比较信号被进行逻辑或运算。
在这种情况下,当至少一个轴的数据超过由寄存器INT1_THS_xL和INT1_THS_xH设定的阈值时产生中断。
否则,
如果AOI位是'1',比较信号进入与非门。
在这种情况下只有当所有的启用轴超过阈值才产生一个中断信号。
INT1_CFG的LIR位决定中断请求是否需要锁定或不锁。
如果LIR位是“0”(默认值),中断条件满足时中断信号变高;如果中断的条件不再有效则立即变低。
否则,如果
的LIR位为'1',一旦中断信号产生便维持高电平即使中断的条件不存在,直到阅读INT1_SRC后才降低电平。
INT1_CFG寄存器的ZHIE,ZLIE,YHIE,YLIE,XHIE,HLIE位允许决定哪一个轴哪一个方向超过阈值,产生中断请求。
判断没有移动或唤醒事件的阈值是由INT1_THS寄存器定义的。
阈值表示为7位无符号数,与0值对称。
无符号的X角速度值(Y,Z轴)大于INT1_THS时 XH(YH,ZH)的值是真。
同样,无符号的X(Y,Z轴)角速度值低于INT1_THS时XL(YL,ZL)为真。
更多细节,请参考图10。
5.5.1Wake-up
唤醒中断用到INT1_CTRL的一个特殊配置,当指定的轴的角速度超过定义的阈值时产生中断(图11)。
5.5.2HPfilterbypassed高通滤波器旁路
本段提供了一个基本的算法使用唤醒功能。
下面的代码,将设备配置为当X轴的绝对角速率超过预设的阈值时才有识别(以100 DPS为例)。
设备内部锁存触发中断的事件,其
发生信号通过INT1引脚使用。
1Write0FhintoCTRL_REG1//开传感器的三轴X,Y,和Z并且ODR=100Hz
2Write00hintoCTRL_REG2//关闭高通滤波器
3Write80hintoCTRL_REG3//中断信号送到INT1
4Write00hintoCTRL_REG4//量程FS=250dps
5Write2ChintoINT1_THS_XH//H阈值=100dps
6WriteA4hintoINT1_THS_XL//L阈值=100dps
7Write00hintoINT1_DURATION//持续时间Duration=0
8Write02hintoINT1_CFG//开XH中断
9PollINT1pad;ifINT1=0thengoto8//waitingforthewake-upevent
10ReadINT1_SRC//返回产生中断的事件
11(Wake-upeventhasoccurred;insertyourcodehere)//中断处理
12Goto8
5.5.3使用HP滤波
下面提供的代码给出了一个基本的例程显示实际使用高通滤波数据执行唤醒功能。
1Write0FhintoCTRL_REG1//enableX,Y,andZ,ODR=100Hz
2Write00hintoCTRL_REG2//High-passfilterinnormalmode
3Write80hintoCTRL_REG3//InterruptdriventoINT1pad
4Write00hintoCTRL_REG4//FS=250dps
5Write05hintoCTRL_REG5//数据寄存器和FIFO中的数据时高通滤波,高通滤波数据用于产生中断
6Write2ChintoINT1_THS_XH//Threshold=100dps
7WriteA4hintoINT1_THS_XL//Threshold=100dps
8Write2ChintoINT1_THS_YH//Threshold=100dps
9WriteA4hintoINT1_THS_YL//Threshold=100dps
10Write2ChintoINT1_THS_ZH//Threshold=100dps
11WriteA4hintoINT1_THS_ZL//Threshold=100dps
12Write00hintoINT1_DURATION//Duration=0
13ReadREFERENCE//Dummyreadto迫使高通滤波器到最近的角速率数值
//(i.e.setreferenceangularrate)
14Write6AhintoINT1_CFG//开XH,YH和ZH中断,中断锁存
15PollINT1pad;ifINT1=0thengoto8//PollINT1pinwaitingforthewake-upevent
16ReadINT1_SRC//Returntheeventthathastriggeredtheinterrupt
17中断处理
18Goto15
在第13步,在参考寄存器的虚拟阅读进行设置
现在的/参考角速度/倾斜状态,对设备进行的阈值比较。
这种阅读可以在任何时间执行,它需要设置当前利率作为参考状态无需等待的过滤器来稳定走势。
5.6选择性轴运动检测
选择性轴运动检测是指INT1_CTRL寄存器的一个特定的配置
只识别围绕选定的轴的旋转。
参照图12,“没有旋转区”是指围绕零刻度
如果角速率足够小,被认为是零。
由INT1_CFG寄存器配置,以便产生一个中断,仅当,即X和Y的旋转角速度轴在零附近,而Z轴不为0。
这
这意味着设备是做一个纯粹的偏航旋转。
本款规定的基础知识,使用选择性轴运动检测
功能。
以下是报告的例子代码实现了SW的例行
选择性轴动作识别:
1Write0FhintoCTRL_REG1//开X,Y,andZ;ODR=100Hz
3Write80hintoCTRL_REG3//InterruptdriventoINT1pad
4Write00hintoCTRL_REG4//FS=250dps
6Write2ChintoINT1_THS_XH//Threshold=60dps
7WriteA4hintoINT1_THS_XL//Threshold=60dps
8Write2ChintoINT1_THS_YH//Threshold=60dps
9WriteA4hintoINT1_THS_YL//Threshold=60dps
10Write2ChintoINT1_THS_ZH//Threshold=60dps
11WriteA4hintoINT1_THS_ZL//Threshold=60dps
12Write01hintoINT1_DURATION//Duration=10ms
13Write65hintoINT1_CFG//EnableXL,YLandZHinterruptgenerationinAND
//configuration.Interruptlatched
14PollINT1pad;ifINT1=0thengoto8//PollINT1pinwaitingforthewake-upevent
15ReadINT1_SRC//Returntheeventthathastriggeredtheinterrupt
16(Wake-upeventhasoccurred;insertyourcodehere)//Eventhandling
17Goto15
该代码示例利用60 DPS选择性轴运动检测和设置阈值
事件是由硬件信号INT1通知。
在第7步,INT1_DURATION寄存器
这样的配置为了避免误检而忽略短比1/DR=1/100〜=10毫秒的事件。
一旦发生选择性轴运动检测,对INT1_SRC寄存器的读操作会自动清除请求,设备准备其他事件。
6先入先出(FIFO)缓冲器
为了减少主机处理器互动,方便后期事件识别数据处理,L3G4200D为X,Y,Z每个通道嵌入先入先出缓冲区(FIFO)。
FIFO只有当需要和从FIFO读取数据时才唤醒。
FIFO缓冲区可以根据四个不同的模式,保证在应用程序的开发过程中的高度灵活性:
旁路模式,FIFO模式,流模式,以及流FIFO模式。
可编程水印水平和FIFO溢出事件可以启用生成DRDY/INT2引脚上的中断。
6.1FIFOdescription
FIFO缓冲器,能够存储多达32角速度样本,每个通道16位;
数据存储在16位2进制补码左对齐。
数据样本集由6个字节(XL,XH,YL,YH,ZL,和zh),他们按照选定的输出数据速率outputdatarate(ODR)从FIFO输出。
新的样本集是摆在了第一个空FIFO插槽,直到缓冲区已满,因此,
最古老的数据将被覆盖。
表26。
FIFO缓冲区充分的代表性(前32位样本集存储)
表27。
FIFO溢出代表(第33样本集存储,第一样本丢弃)
表26表示FIFO满状态时,32个样本,而在缓冲存储
表27代表第33样品插入到FIFO时第1样本(X0)被覆盖。
新的最古老的样本集(X1)到输出寄存器。
当FIFO使能和旁路模式不同,L3G4200D输出寄存器
(28H—2DH)总是包含最古老的FIFO样本集。
6.2的FIFO寄存器
FIFO缓冲区是由三个不同的加速度寄存器管理,其中两个允许
启用和配置FIFO的行为,第三提供有关缓冲区的状态信息。
6.2.1控制寄存器5(0x24)
为了启用内部FIFO,必须将CTRL_REG5的FIFO_EN位设1。
一旦而此位被设置,陀螺仪的输出寄存器(28H—2DH)不包含角速度的立即值,但它们总是包含FIFO中最早的价值。
6.2.2FIFOcontrolregister(0x2E)
该寄存器是专用于FIFO模式的选择和水印配置。
FM[1:
0]专用于定义FIFO行为:
1.FM[2:
0]=(0,0,0):
旁路模式
2.FM[2:
0]=(0,0,1):
FIFO模式
3.FM[2:
0]=(0,1,0):
流模式
4.FM[2:
0]=(0,1,1):
流—FIFO
5.FM[2:
0]=(1,0,0):
旁路-FIFO
用于激活流_FIFO和旁路流模式触发相关的INT1_SRC寄存器的IA位值的选定不依赖于中断引脚值和极性。
如果选定的中断没有驱动到中断引脚,触发也产生。
WTM[4:
0]位是为了定义水印的水平;当FIFO内容超出此值,在FIFO中的源寄存器的WTM位设置为“1”。
6.2.3 FIFO源寄存器(0x2F)
该寄存器在每一个ODR更新,并提供有关的FIFO缓冲区的状态信息。
窗体顶端
●当FIFO含量超过水印水平,WTM位被设置为高。
●OVRN位被设置为高,FIFO缓冲区满时。
这意味着FIFO缓冲区包含32个未读样品。
在下一个ODR新的样本集取代FIFO中最早的值。
当读第一个样本集时OVRN位复位。
●空标志EMPTY被设置为高,当所有FIFO样品已阅读并FIFO为空时。
●FSS的[4:
0]字段总是包含当前存储在FIFO缓冲区的未读样本数。
当FIFO使能,这个值随ODR的频率增加,直到缓冲区满。
但是,它随FIFO中每一个样本集的读取而降低。
窗体底端
寄存器的内容更新与FIFO的写和读操作同步。
通过配置CTRL_REG3可以启用的水印标志、FIFO溢出、FIFO空的事件在DRY/INT2针生成一个专门的中断。
●I2_WTM位将水印标志(WTM)驱动到DRY/INT2引脚。
●I2_OVRN位将超限事件(OVRN)驱到动DRY/INT2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 手册 资料
![提示](https://static.bdocx.com/images/bang_tan.gif)