an4506...

47
201711DocID026442 Rev 1 [English Rev 2] 1/47 AN4506 应用笔记 L3GD20H3轴数字输出陀螺仪 作者:Michele Ferraina 前言 本文档旨在提供ST L3GD20H 3轴数字陀螺仪相关的使用信息和应用提示。 L3GD20H3轴角速率传感器,具有数字I 2 C/SPI串行接口标准输出。 该器件的量程范围为±245/±500/±2000 dps,能使用用户选择的带宽测量速率。 可以配置器件通过检测一个独立的唤醒事件来产生一个中断信号。中断发生器的阈值和时序 可由终端用户动态设定。 L3GD20H内置32级先进先出(FIFO)缓冲器提供给用户存储数据,可以减少主控的干预。 L3GD20H采用纤薄的小型塑料平面网格阵列封装(LGA-16 3x3x1),可以保证在一个较大的温 度范围从-40°C+85°C内工作。 SMD封装的超小尺寸和重量使其成为手持便携式应用的理想选择,如智能手机、穿戴以及需 要减小封装尺寸和重量的其他应用。 www.st.com

Upload: others

Post on 02-Apr-2020

50 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

2017年11月 DocID026442 Rev 1 [English Rev 2] 1/47

AN4506应用笔记

L3GD20H:3轴数字输出陀螺仪

作者:Michele Ferraina

前言

本文档旨在提供ST L3GD20H 3轴数字陀螺仪相关的使用信息和应用提示。

L3GD20H为3轴角速率传感器,具有数字I2C/SPI串行接口标准输出。

该器件的量程范围为±245/±500/±2000 dps,能使用用户选择的带宽测量速率。

可以配置器件通过检测一个独立的唤醒事件来产生一个中断信号。中断发生器的阈值和时序可由终端用户动态设定。

L3GD20H内置32级先进先出(FIFO)缓冲器提供给用户存储数据,可以减少主控的干预。

L3GD20H采用纤薄的小型塑料平面网格阵列封装(LGA-16 3x3x1),可以保证在一个较大的温度范围从-40°C到+85°C内工作。

SMD封装的超小尺寸和重量使其成为手持便携式应用的理想选择,如智能手机、穿戴以及需要减小封装尺寸和重量的其他应用。

www.st.com

Page 2: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

目录 AN4506

2/47 DocID026442 Rev 1 [English Rev 2]

目录

1 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2 工作模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.1 省电模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.2 睡眠模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.3 低ODR模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.4 正常模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.5 切换模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

3 读取角速率数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.1 启动序列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

3.2 使用状态寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.3 使用数据就绪(DRDY)信号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.4 使用块数据更新(block data update,BDU)功能 . . . . . . . . . . . . . . . . . 13

3.5 DEN函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.5.1 电平感应触发冲压(LVLen = 1;EXTRen = 0;IMPen = 0) . . . . . . . . 133.5.2 脉冲感应触发(LVLen = 1;EXTRen = 0;IMPen = 1) . . . . . . . . . . . 143.5.3 边沿感应触发(LVLen = 0;EXTRen = 1;IMPen = 0) . . . . . . . . . . . 15

3.6 理解角速率数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.6.1 数据对齐 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.6.2 大小端序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.6.3 角速率数据示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

4 数字滤波器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164.1 滤波器配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

4.2 低通滤波器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

4.3 高通滤波器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194.3.1 正常模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204.3.2 参考模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204.3.3 自动复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

5 中断产生 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215.1 中断引脚配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

Page 3: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

AN4506 目录

DocID026442 Rev 1 [English Rev 2] 3/47

5.2 中断配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

5.3 阈值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

5.4 持续时间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

5.5 选择轴运动 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275.5.1 唤醒 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285.5.2 关闭高通滤波器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285.5.3 使用高通滤波器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

5.6 选择轴运动检测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

6 先进先出(FIFO)缓冲器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326.1 FIFO说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

6.2 FIFO寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336.2.1 控制寄存器5(0x24) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

6.2.2 FIFO控制寄存器(0x2E) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346.2.3 FIFO状态寄存器(0x2F) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

6.3 FIFO模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366.3.1 Bypass模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366.3.2 FIFO模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366.3.3 Stream模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376.3.4 Dynamic Stream模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

6.3.5 Stream-to-FIFO模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416.3.6 Bypass-to-Stream模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426.3.7 Bypass-to-FIFO模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

6.4 FIFO阈值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

6.5 从FIFO中取数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

7 温度传感器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

8 版本历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

Page 4: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

表格索引 AN4506

4/47 DocID026442 Rev 1 [English Rev 2]

表格索引

表 1. 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6表 2. 工作模式选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8表 3. 数据速率配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8表 4. 功耗. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10表 5. 生效时间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11表 6. DEN配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13表 7. 输出数据寄存器内容 vs. 角速率(FS = 245 dps) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16表 8. CTRL5寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16表 9. Out_Sel配置设置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17表 10. IG_SEL配置设置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17表 11. 低通滤波器截止频率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18表 12. CTRL2寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19表 13. 高通滤波器截止频率[Hz] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19表 14. 高通滤波器模式配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19表 15. 参考模式LSB值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20表 16. CTRL3寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22表 17. CTRL3说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22表 18. IG_CFG寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23表 19. IG_CFG说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23表 20. 中断模式配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23表 21. IG_THS_xH寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24表 22. IG_THS_xL寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24表 23. 阈值LSB值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24表 24. IG_DURATION寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24表 25. IG_DURATION说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24表 26. 正常模式下的持续时间LSB值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24表 27. FIFO缓冲区填满示例(存储第32个采样集) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32表 28. FIFO溢出示例(存储第33个采样集同时丢弃第1个采样) . . . . . . . . . . . . . . . . . . . . . . . . . 33表 29. CTRL5中的FIFO使能位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33表 30. FIFO_CTRL寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34表 31. FIFO_SRC寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35表 32. FIFO_SRC_REG特性(假定FTH[4:0] = 15). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35表 33. CTRL3(0x22) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35表 34. 文档版本历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46表 35. 中文文档版本历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

Page 5: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

AN4506 图片索引

DocID026442 Rev 1 [English Rev 2] 5/47

图片索引

图1. 低通滤波器转换功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9图2. 数据准备就绪信号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13图3. 数据同步:电平感应 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14图4. 电平感应触发冲压 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14图5. 数据同步:脉冲感应 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14图6. 数据同步:边沿感应 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15图7. 低通/高通滤波器连接框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17图8. 通过读取参考寄存器复位高通滤波器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20图9. 参考模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21图10. 自动复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21图11. 中断信号和中断引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22图12. Wait禁用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25图13. Wait启用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26图14. 无移动,唤醒中断发生器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27图15. NM_WU_CFG高电平和低电平 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28图16. 唤醒中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28图17. 无移动中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30图18. FIFO_EN连接框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34图19. FIFO模式特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37图20. Stream模式快速读取特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38图21. Stream模式慢速读取特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39图22. Stream模式慢速读取放大图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39图23. 具有阈值的Stream模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40图24. 具有阈值的Dynamic Stream模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40图25. Stream-to-FIFO模式:中断未锁存 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42图26. Stream-to-FIFO模式:中断已锁存 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42图27. Bypass-to-Stream模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43图28. FIFO阈值特性 - FTH[4:0] = 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44图29. FIFO读取图 - FTH[4:0] = 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

Page 6: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

AN

4506寄

存器

DocID

026442 Rev 1 [English R

ev 2]6/47

1 寄存器

表1. 寄存器

寄存器名 地址 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 位0

WHO_AM_I 0Fh 1 1 0 1 0 1 1 1

CTRL1 20h DR1 DR0 BW1 BW0 PD Zen Yen Xen

CTRL2 21h EXTRen LVLen HPM1 HPM0 HPCF3 HPCF2 HPCF1 HPCF0

CTRL3 22h INT1_IG INT1_Boot H_Lactive PP_OD INT2_DRDY INT2_FTH INT2_ORun INT2_Empty

CTRL4 23h BDU BLE FS1 FS0 IMPen ST2 ST1 SIM

CTRL5 24h BOOT FIFO_EN StopOnFTH HPen IG_Sel1 IG_Sel0 Out_Sel1 Out_Sel0

REFERENCE 25h REF7 REF6 REF5 REF4 REF3 REF2 REF1 REF0

OUT_TEMP 26h Temp7 Temp6 Temp5 Temp4 Temp3 Temp2 Temp1 Temp0

STATUS 27h ZYXOR ZOR YOR XOR ZYXDA ZDA YDA XDA

OUT_X_L 28h XD7 XD6 XD5 XD4 XD3 XD2 XD1 XD0

OUT_X_H 29h XD15 XD14 XD13 XD12 XD11 XD10 XD9 XD8

OUT_Y_L 2Ah YD7 YD6 YD5 YD4 YD3 YD2 YD1 YD0

OUT_Y_H 2Bh YD15 YD14 YD13 YD12 YD11 YD10 YD9 YD8

OUT_Z_L 2Ch ZD7 ZD6 ZD5 ZD4 ZD3 ZD2 ZD1 ZD0

OUT_Z_H 2Dh ZD15 ZD14 ZD13 ZD12 ZD11 ZD10 ZD9 ZD8

FIFO_CTRL 2Eh FM2 FM1 FM0 FTH4 FTH3 FTH2 FTH1 FTH0

FIFO_SRC 2Fh FTH OVRN 空 FSS4 FSS3 FSS2 FSS1 FSS0

IG_CFG 30h AND/OR LIR ZHIE ZLIE YHIE YLIE XHIE XLIE

IG_SRC 31h 0 IA ZH ZL YH YL XH XL

IG_THS_XH 32h DCRM THSX14 THSX13 THSX12 THSX11 THSX10 THSX9 THSX8

IG_THS_XL 33h THSX7 THSX6 THSX5 THSX4 THSX3 THSX2 THSX1 THSX0

IG_THS_YH 34h 0 THSY14 THSY13 THSY12 THSY11 THSY10 THSY9 THSY8

Page 7: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

AN

4506寄

存器

DocID

026442 Rev 1 [English R

ev 2]7/47

IG_THS_YL 35h THSY7 THSY6 THSY5 THSY4 THSY3 THSY2 THSY1 THSY0

IG_THS_ZH 36h 0 THSZ14 THSZ13 THSZ12 THSZ11 THSZ10 THSZ9 THSZ8

IG_THS_ZL 37h THSZ7 THSZ6 THSZ5 THSZ4 THSZ3 THSZ2 THSZ1 THSZ0

IG_DURATION 38h WAIT D6 D5 D4 D3 D2 D1 D0

LOW_ODR 39h 0 0 DRDY_HL 0 I2C_dis SW_RES 0 Low_ODR

表1. 寄存器

寄存器名 地址 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 位0

Page 8: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

工作模式 AN4506

8/47 DocID026442 Rev 1 [English Rev 2]

2 工作模式

L3GD20H提供四种不同的工作模式,分别是省电模式、睡眠模式、低ODR模式和正常模式。

施加电源后,L3GD20H执行一段10 ms的启动程序来加载修整参数。上电以后,器件会自动配置为省电模式。

参考L3GD20H数据手册,输出数据速率(ODR)、省电(PD)、CTRL1寄存器的Zen、Yen和Xen位、LOW_ODR寄存器的Low_ODR位用于选择工作模式(省电模式、睡眠模式、Low_ODR和正常模式)以及输出数据速率(表 2和表 3)。

表2. 工作模式选择

Operating mode PD Low_ODR Zen Yen Xen

Power down 0 x - - -

Sleep 1 x 0 0 0

Low_ODR 1 1 - - -

Normal mode 1 0 - - -

表3. 数据速率配置

Low_ODR DR [1:0] BW [1:0] ODR [Hz] Cutoff [Hz]

1 00 00 12.5 n.a.

1 00 01 12.5 n.a.

1 00 10 12.5 n.a.

1 00 11 12.5 n.a.

1 01 00 25 n.a.

1 01 01 25 n.a.

1 01 10 25 n.a.

1 01 11 25 n.a.

1 1X 00 50 16.6

1 1X 01 50 16.6

1 1X 10 50 16.6

1 1X 11 50 16.6

0 00 00 100 12.5

0 00 01 100 25

0 00 10 100 25

0 00 11 100 25

0 01 00 200 12.5

0 01 01 200 -

Page 9: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

AN4506 工作模式

DocID026442 Rev 1 [English Rev 2] 9/47

图1. 低通滤波器转换功能

图 1显示了在不同ODR时的低通滤波器传递函数。

0 01 10 200 -

0 01 11 200 70

0 10 00 400 20

0 10 01 400 25

0 10 10 400 50

0 10 11 400 110

0 11 00 800 30

0 11 01 800 35

0 11 10 800 -

0 1 11 800 100

表3. 数据速率配置(续)

Low_ODR DR [1:0] BW [1:0] ODR [Hz] Cutoff [Hz]

[dB]

[Hz]

Page 10: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

工作模式 AN4506

10/47 DocID026442 Rev 1 [English Rev 2]

表 4显示了不同工作模式下功耗典型值。正常模式下的功耗独立于选择的ODR。

2.1 省电模式

当器件工作在省电模式时,几乎所有的内部模块都会关闭,以 大限度地降低功耗。数字接口(I2C和SPI)仍然在工作,以便能够与器件进行通信。保留配置寄存器的内容而不更新输出数据寄存器,因此可保持进入省电模式前存储器中采样的 后数据。

2.2 睡眠模式

当器件处在睡眠模式时,驱动电路使陀螺仪振荡的移动块保持工作。这时,从睡眠模式切换到正常模式的生效时间锐减。

2.3 低ODR模式

在此模式会启用低速ODR。当在LOW_ODR寄存器(39h)中将Low_ODR位设为“1”时,可通过CTRL1寄存器中的DR1和DR0位选择三个低速ODR:12.5 Hz、25 Hz和50 Hz。

ODR和带宽配置请参考表 3。

数据中断生成有效,通过IG_CFG寄存器进行配置。

2.4 正常模式

正常模式下,通过DR位来选择生成数据的数据率(ODR)。数据中断生成有效,通过IG_CFG寄存器进行配置。

表4. 功耗

工作模式 功耗(Vdd = 3 V)

省电 0.5 µA

睡眠 2.4 mA

Normal 4.8 mA

Page 11: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

AN4506 读取角速率数据

DocID026442 Rev 1 [English Rev 2] 11/47

2.5 切换模式

表 5中显示了切换模式的延时。

3 读取角速率数据

3.1 启动序列

当器件上电时,器件会自动从嵌入的内存中加载校准系数到内部寄存器中。启动程序完成后,也就是大约10毫秒后,器件会自动进入省电模式。要使能器件并采集角速率数据的话,需要选择正常(或低ODR)模式并至少使能其中一个轴。

可使用下列通用序列对器件进行配置:

表5. 导通时间

起始模式 目标模式 生效时间 - 典型值

省电 正常 100 ms

省电 睡眠 100 ms

省电 自检功能 100 ms

睡眠 正常1/ODR:禁用LPF26/ODR:启用LPF2

睡眠 省电 立即

正常 睡眠 立即

正常 省电 立即

其它设置更改 - 1/ODR:禁用LPF26/ODR:启用LPF2

1. 写入CTRL22. 写入CTRL33. 写入CTRL44. 写入CTRL65. 写入Reference6. 写入IG_THS7. 写入IG_DURATION8. 写入IG_CFG9. 写入CTRL510. 写入CTRL1

Page 12: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

读取角速率数据 AN4506

12/47 DocID026442 Rev 1 [English Rev 2]

3.2 使用状态寄存器

该器件提供了一个STATUS寄存器,可用于轮询检查新的一组数据什么时候可以用。读取数据的步骤如下:

第3步的检查,可使用户了解与数据生成的速度相比,当前的读取速度是否适当。如果一个或多个角速率样本已被新数据覆盖,由于读取速率不够,STATUS寄存器的ZYXOR位会置1。

当器件里面所有现存的数据被读取,同时新的数据还没有产生,这时溢出位和新数据有效位会自动清零。

3.3 使用数据就绪(DRDY)信号

可将器件配置为通过一个硬件信号决定何时有新的测量数据集可供读取。此信号由STATUS寄存器的XYZDA位表示。这个信号可通过设置CTRL3寄存器的I2_DRDY位为1挂到DRDY/INT2引脚上,同时可以通过CTRL3寄存器的H_Lactive位来设置它的极性为低电平有效还是高电平有效(见第 5.1节)。

当一组新的角速率数据生成并可读取时,数据准备就绪信号升高为1。当其中每个使能通道的高字节已被读取时(29h、2Bh、2Dh),中断复位。

1. 读STATUS2. 如果STATUS(3) = 0,则转至13. 如果STATUS(7) = 1,说明一些数据已被重写

4. 读取OUT_X_L5. 读取OUT_X_H6. 读取OUT_Y_L7. 读取OUT_Y_H8. 读取OUT_Z_L9. 读取OUT_Z_H10. 数据处理

11. 调到步骤1

Page 13: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

AN4506 读取角速率数据

DocID026442 Rev 1 [English Rev 2] 13/47

图2. 数据准备就绪信号

3.4 使用块数据更新(block data update,BDU)功能

如果角速率数据的读取速度特别慢并且不能通过STATUS寄存器中存在的XYZDA位或通过DRDY信号进行同步(或者不需要同步),则强烈建议将CTRL4寄存器中的BDU(块数据更新)位置1。

此功能可以避免读取不同采样相关的值(角速率数据的 高有效部分和 低有效部分)。特别是在BDU被激活的情况下,与每条通道相关联的数据寄存器始终会包含由器件生成的 新角速率数据,但如果发起了对给定寄存器对(即OUT_X_H和OUT_X_L、OUT_Y_H和OUT_Y_L、OUT_Z_H和OUT_Z_L)的读取,读取数据的MSB和LSB部分之前,都会禁止刷新该寄存器对。

注: BDU仅会确保已同时对OUT_X(Y、Z)_L和OUT_X(Y、Z)_H进行采样。例如,如果读取速度过慢,可能会读取在T1采样的X和Y以及在T2采样的Z。必须从低位地址开始读取数据。

3.5 DEN函数

通过使能CTRL2(21h)中的EXTRen(bit7)和LVLen(bit6)位以及CTRL4的IMPen(bit3)位,L3GD20H可支持外部触发电平识别。可使用三种不同的模式:电平感应、脉冲感应和边沿感应触发。

3.5.1 电平感应触发冲压(LVLen = 1;EXTRen = 0;IMPen = 0)使能时,DEN逻辑值会替代通过CTRL_REG1(20h)中的Xen、Yen和Zen位所选轴的X、Y和Z数据的低有效位。

数据使用内部选择的ODR被储存在FIFO内。

AM02071v1

DRDY

#(N) #(N+1)

X Y ZX Y Z

表6. DEN配置

EXTRen LVLen IMPen 功能

1 0 0 电平感应

1 0 1 脉冲感应

0 1 0 边沿感应

Page 14: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

读取角速率数据 AN4506

14/47 DocID026442 Rev 1 [English Rev 2]

图3. 数据同步:电平感应

图4. 电平感应触发冲压

3.5.2 脉冲感应触发(LVLen = 1;EXTRen = 0;IMPen = 1)脉冲感应触发类似于电平感应触发,如果DEN脉冲持续时间短于所选陀螺仪ODR时必须使用脉冲感应触发。一旦使能,脉冲之后产生的陀螺仪X、Y、Z输出数据的LSB位要置为1;若无脉冲发生,则下次生成的陀螺仪X、Y、Z输出数据的LSB位要置为0。

当选择的ODR为800 Hz时, 大DEN采样频率为fDEN = 1/TDEN = 400 Hz。

图5. 数据同步:脉冲感应

X

Xen=1Yen=Zen=0

Y

Yen=1Xen=Zen=0

Z

Zen=1Xen=Yen=0

Page 15: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

AN4506 读取角速率数据

DocID026442 Rev 1 [English Rev 2] 15/47

3.5.3 边沿感应触发(LVLen = 0;EXTRen = 1;IMPen = 0)使能时,陀螺仪输出寄存器更新为DEN输入信号上升沿产生的下一个X、Y、Z陀螺仪数据。如果没有上升沿出现,那么陀螺仪输出寄存器不更新。

当选择的ODR为800 Hz时, 大DEN采样频率为fDEN = 1/TDEN = 400 Hz。

图6. 数据同步:边沿感应

3.6 理解角速率数据

测得的角速率数据会发送至OUT_X_H、OUT_X_L、OUT_Y_H、OUT_Y_L、OUT_Z_H和OUT_Z_L寄存器。这些寄存器分别容纳角速率信号在X、Y和Z轴上的 高有效部分和 低有效部分。

X(Y、Z)通道的完整角速率数据是由OUT_X_H & OUT_X_L(OUT_Y_H & OUT_Y_L、OUT_Z_H & OUT_Z_L)共同提供的,表示为2的补码。

3.6.1 数据对齐(Data alignment)角速率数据表示为16位数,向左对齐。

3.6.2 大小端序选择

L3GD20H允许交换角速率寄存器低位部分和高位部分的内容(即交换OUT_X_H和OUT_X_L的内容),以便符合小端和大端数据表示法的要求。

“小端序”意思是数字的低位字节存储在存储器的 低地址中,而高位字节存储在 高地址中。(小端模式优先。)该模式相当于(CTRL4寄存器中的)BLE位复位为0(默认配置)。

相反,“大端序”意思是数字的高位字节存储在存储器的 低地址中,而低位字节存储在高地址中。

Page 16: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

数字滤波器 AN4506

16/47 DocID026442 Rev 1 [English Rev 2]

3.6.3 角速率数据示例

表 7提供了数据的一些基本示例,当器件施加了给定的角速率时,在数据寄存器中读取出这些数据。表中列出的数值均假定器件已进行准确校准(也就是没有偏移、没有增益误差),并且会真实显示BLE位的影响。

4 数字滤波器

L3GD20H提供了嵌入低通和高通滤波功能,能够简单地除去所测量角速率的DC分量。如图 7中所示,通过配置CTRL5寄存器的HPen、IG_Sel和Out_Sel位,可以将滤波器独立应用于输出/FIFO数据和/或中断数据。这意味着可以在中断生成作用于未滤波数据的同时获得已进行滤波的数据。

表7. 输出数据寄存器内容 vs. 角速率(FS = 245 dps)

角速率值

BLE = 0 BLE = 1

寄存器地址

28h 29h 28h 29h

0 dps 00h 00h 00h 00h

100 dps A4h 2Ch 2Ch A4h

200 dps 49h 59h 59h 49h

-100 dps 5Ch D3h D3h 5Ch

-200 dps B7h A6h A6h B7h

表8. CTRL5寄存器

BOOT FIFO_EN StopOnFTH HPen IG_Sel1 IG_Sel0 Out_Sel1 Out_Sel0

Page 17: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

AN4506 数字滤波器

DocID026442 Rev 1 [English Rev 2] 17/47

图7. 低通/高通滤波器连接框图

4.1 滤波器配置

请参考表 9,HPen和Out_sel位用于将未滤波或滤波的数据驱动至输出寄存器及FIFO:

请参考表 10,HPen和IG_Sel位用于将未滤波或滤波的数据驱动至中断生成器电路:

表9. Out_Sel配置设置

HPen Out_Sel1 Out_Sel0 说明

x 0 0 DataReg和FIFO中的数据是没有经过高通滤波的

x 0 1 DataReg和FIFO中的数据是经过高通滤波后的

0 1 x DataReg和FIFO中的数据为通过LPF2的低通滤波

1 1 x DataReg和FIFO中的数据为通过LPF2的高通和低通滤波

表10. IG_SEL配置设置

HPen IG_Sel1 IG_Sel2 说明

x 0 0 非经过高通滤波后的数据用于中断产生

x 0 1 经过高通滤波后的数据用于中断产生

0 1 x 低通滤波数据用于中断生成

1 1 x 高通和低通滤波数据用于中断生成

Page 18: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

数字滤波器 AN4506

18/47 DocID026442 Rev 1 [English Rev 2]

4.2 低通滤波器

低通滤波器的带宽取决于选择的ODR。低通滤波器的截止频率(ft)如表 13中所示。

表11. 低通滤波器截止频率

Low_ODR DR [1:0] BW [1:0] ODR [Hz] 截止LPF1 [Hz] 截止LPF2 [Hz]

1 00 00 12.5

3.9

n.a.

1 00 01 12.5 n.a.

1 00 10 12.5 n.a.

1 00 11 12.5 n.a.

1 01 00 25

7.8

n.a.

1 01 01 25 n.a.

1 01 10 25 n.a.

1 01 11 25 n.a.

1 1x 00 50

16

16.6

1 1x 01 50 16.6

1 1x 10 50 16.6

1 1x 11 50 16.6

0 00 00 100

32

12.5

0 00 01 100 25

0 00 10 100 25

0 00 11 100 25

0 01 00 200

63.3

12.5

0 01 01 200 -

0 01 10 200 -

0 01 11 200 70

0 10 00 400

128

20

0 10 01 400 25

0 10 10 400 50

0 10 11 400 110

0 11 00 800

211

30

0 11 01 800 35

0 11 10 800 -

0 11 11 800 110

Page 19: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

AN4506 数字滤波器

DocID026442 Rev 1 [English Rev 2] 19/47

4.3 高通滤波器

高通滤波器的带宽取决于所选ODR以及CTRL2寄存器的HPCFx位的设置。高通滤波器截止频率(ft)如表 13中所示。

参照表 14,高通滤波器可具有三种工作模式:

表12. CTRL2寄存器

EXTRen LVLen HPM1 HPM0 HPCF3 HPCF2 HPCF1 HPCF0

表13. 高通滤波器截止频率[Hz]

HPCF3-0ODR [Hz]

12.5 25 50 100 200 400 800

0000 1 2 4 8 15 30 56

0001 0.5 1 2 4 8 15 30

0010 0.2 0.5 1 2 4 8 15

0011 0.1 0.2 0.5 1 2 4 8

0100 0.05 0.1 0.2 0.5 1 2 4

0101 0.02 0.05 0.1 0.2 0.5 1 2

0110 0.01 0.02 0.05 0.1 0.2 0.5 1

0111 0.005 0.01 0.02 0.05 0.1 0.2 0.5

1000 0.002 0.005 0.01 0.02 0.05 0.1 0.2

1001 0.001 0.002 0.005 0.01 0.02 0.05 0.1

表14. 高通滤波器模式配置

HPM1 HPM0 高通滤波器模式

0 0 正常模式(通过读取参考寄存器复位)

0 1 滤波参考信号

1 0 正常模式(通过读取参考寄存器复位)

1 1 中断事件自动复位

Page 20: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

数字滤波器 AN4506

20/47 DocID026442 Rev 1 [English Rev 2]

4.3.1 正常模式

在该配置下通过读REFERENCE寄存器可以复位高通滤波器,从而可立即删除角速率的DC分量。

图8. 通过读取参考寄存器复位高通滤波器

4.3.2 参考模式

在该配置下,输出数据会计算为输入角速率与参考寄存器内容之差。该寄存器表示为2的补码形式,这些8位寄存器的1 LSB 的值取决于所选满量程(表 15)。

表15. 参考模式LSB值

满量程 参考模式LSB值(mdps)

245 ~2

500 ~4

2000 ~16

Page 21: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

AN4506 中断生成

DocID026442 Rev 1 [English Rev 2] 21/47

图9. 参考模式

4.3.3 自动复位

在该配置下,发生配置的中断事件时,滤波器会自动复位。但会立即使用REFERENCE将滤波器置位。

注: 用于复位滤波器的XYZ数据集是中断后的数据集。

图10. 自动复位

5 中断生成

可用非常灵活的方法配置L3GD20H中断信号,以识别X、Y和Z轴的独立旋转。该信号可被驱动至INT1引脚。INT2引脚专用于DRDY和FIFO中断。

REFERENCE

AM08454v1REFERENCE

Page 22: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

中断生成 AN4506

22/47 DocID026442 Rev 1 [English Rev 2]

5.1 中断引脚配置

器件提供的两个引脚可激活为生成数据就绪信号或中断信号。引脚功能是通过CTRL3(22h)选择的。请参考表 16、表 17和图 11中的框图以获取详细信息。

图11. 中断信号和中断引脚

表16. CTRL3寄存器

INT1_IG INT1_Boot H_Lactive PP_OD INT2_DRDY INT2_FTH INT2_ORun INT2_Empty

表17. CTRL3描述

INT1_IG INT1引脚上启用中断。默认值0。(0:禁用;1:启用)

INT1_Boot INT1上启动状态可用。默认值0。(0:禁用;1:启用)

H_Lactive INT1上的中断激活配置。默认值0。(0:高;1:低)

PP_OD 推挽/开漏。默认值:0。(0:推挽;1:开漏)

INT2_DRDY DRDY/INT2上数据就绪。默认值0。(0:禁用;1:启用)

INT2_FTH DRDY/INT2上FIFO阈值中断。默认值:0。(0:禁用;1:启用)

INT2_ORun DRDY/INT2上FIFO上溢中断默认值:0。(0:禁用;1:启用)

INT2_Empty DRDY/INT2上FIFO空中断。默认值:0。(0:禁用;1:启用)

Page 23: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

AN4506 中断生成

DocID026442 Rev 1 [English Rev 2] 23/47

5.2 中断配置

L3GD20H为定制中断信号提供了多种可能性。中断生成行为中涉及到的寄存器是IG_CFG、IG_THS和IG_DURATION。

中断条件满足时,会生成中断信号,通过读取IG_SRC寄存器,可以了解发生了什么情况。

读取IG_SRC也会清除IG_SRC IA位( 终是INT1引脚上的中断信号),若选择了锁存选项,则会刷新IG_SRC寄存器中的数据。

表18. IG_CFG寄存器

AND/OR LIR ZHIE ZLIE YHIE YLIE XHIE XLIE

表19. IG_CFG说明

AND/OR 中断事件的AND/OR(与/或运算)组合 默认值:0(0:中断事件的或组合 1:中断事件的与组合

LIR锁存中断请求。默认值:0(0:中断请求未锁存;1:中断请求锁存)通过读取IG_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:对低于预置阈值的测得速率启用中断请求)

表20. 中断模式配置

AND/OR 中断模式

0 中断事件的OR(或运算)组合

1 中断事件的AND(与运算)组合

Page 24: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

中断生成 AN4506

24/47 DocID026442 Rev 1 [English Rev 2]

5.3 阈值

阈值寄存器IG_THS_xH和IG_THS_xL(分别是MSB和LSB)定义了中断生成电路使用的参考角速率。

阈值1 LSB的值取决于所选满量程(表 23)。

5.4 持续时间

IG_DURATION寄存器中的Dx位的内容用来设置可被识别的中断事件的 小持续时间。

持续时间步数和 大值取决于选择的ODR。

持续时间的测量单位为N/ODR,其中,N是持续时间寄存器的内容,ODR是12.5、25、50、100、200、400和800。

表21. IG_THS_xH寄存器

- THSx14 THSx13 THSx12 THSx11 THSx10 THSx9 THSx8

表22. IG_THS_xL寄存器

THSx7 THSx6 THSx5 THSx4 THSx3 THSx2 THSx1 THSx0

表23. 阈值LSB值

满量程(dps) 阈值LSB值(mdps)

245 ~7.5

500 ~15.3

2000 ~61

表24. IG_DURATION寄存器

WAIT D6 D5 D4 D3 D2 D1 D0

表25. IG_DURATION说明

WAIT WAIT使能。默认值:0(0:禁用;1:启用)

D6 - D0 持续时间值。默认值:000 0000

表26. 正常模式下的持续时间LSB值

ODR(Hz) 持续时间LSB值(ms)

12.5 80

25 40

50 20

100 10

200 5

Page 25: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

AN4506 中断生成

DocID026442 Rev 1 [English Rev 2] 25/47

IG_DURATION寄存器的WAIT位有如下含义:

Wait = ‘0’:若信号跨越所选阈值,则中断立即发生(图 12)。

Wait = ‘1’:若信号跨越所选阈值,则仅在以所选数据率做若干计数采样,写入持续时间计数器寄存器后中断才发生(图 13)。

图12. Wait禁用

400 2.5

800 1.25

表26. 正常模式下的持续时间LSB值

ODR(Hz) 持续时间LSB值(ms)

0t(n)

t(n)

t(n)

“Wait”

� Wait = ‘0’ �

dps

Page 26: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

中断生成 AN4506

26/47 DocID026442 Rev 1 [English Rev 2]

图13. Wait启用

• Wait bit = ‘1’ �� Interrupt disabled after duration sample (sort of hysteresis)

Rate(dps)

0t(n)

t(n)

t(n)

• Waitis no longer valid (ex: Rate value below threshold)

Rate

Interrupt

� Wait =‘1’�

“Wait”

dps

Page 27: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

AN4506 中断生成

DocID026442 Rev 1 [English Rev 2] 27/47

5.5 选择性轴运动和唤醒中断

L3GD20H中断信号可用于选择性轴运动检测和唤醒。中断条件满足时,会生成中断信号,通过读取INT1_SRC寄存器,获知哪个条件发生了。

选择性轴运动检测信号(SA)和唤醒信号(WU)中断生成块在图 14中表示。

SA或WU中断生成是通过IG_CFG寄存器中的AND/OR位选择的。如果AND/OR位为“0”,来自轴(通过IG_CFG寄存器使能)比较器的信号会输入到逻辑OR中。在这种情况下,当至少有一个已使能轴超出写入到IG_THS_xH和IG_THS_xL寄存器模块中的阈值时,会生成中断。如果AND/OR位为“1”,来自比较器的信号会进入“NAND”端口。在这种情况下,仅当所有已使能轴都超过阈值时,才会生成中断信号。

IG_CFG的LIR位可用于用户决定是否必须锁存中断请求。如果LIR位为“0”,当中断条件满足时,中断信号会变为高电平,如果中断条件不再满足,中断信号会立即恢复低电平。否则,如果LIR位为“1”,如果中断条件适用,即使条件恢复为非中断状态,中断信号也会保持高电平,直至对IG_SRC寄存器执行读取操作。

IG_CFG寄存器的ZHIE、ZLIE、YHIE、YLIE、XHIE和HLIE位可帮助决定必须对哪一条轴执行中断决策、并可决定必须沿哪一方向传递阈值才能生成中断请求。

图14. 无移动,唤醒中断发生器

THS reg|b|>a?

|b|<a?

Rate_XXHIE

XLIESA

FF

0

1

IG_CFG (AND/OR)

|b|>a?

|b|<a?YHIE

YLIE|b|>a?

|b|<a?

ZHIE

ZLIE

Rate_Y

Rate_Z

0

1

1

00

1

a

b

a

b

IG_CFG (AND/OR)

Page 28: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

中断生成 AN4506

28/47 DocID026442 Rev 1 [English Rev 2]

系统检测任何无移动或唤醒事件所使用的阈值模块是由IG_THS寄存器定义的。阈值表示为15位无符号数字,并且绕零重力水平对称。如果X(Y、Z)通道的无符号角速率值大于IG_THS,XH(YH、ZH)为真。同样,如果X(Y、Z)通道的无符号角速率值小于IG_THS,XL(YL、ZL)低电平为真。更多详情,请参阅图 15。

图15. NM_WU_CFG高电平和低电平

5.5.1 唤醒

唤醒中断是指IG_CFG和IG_THS寄存器的特定配置,该配置允许在已配置轴的角速率超过定义的阈值(图 16)时生成中断。

图16. 唤醒中断

5.5.2 旁路/不使用高通滤波器

本段介绍的基本算法演示了唤醒功能的实际应用。下列代码会将器件配置为可识别出沿X、Y或Z轴方向的绝对角速率超过预设阈值(本例中使用的阈值为100 dps)的情况。触发中断的事件会锁存在设备内,会使用INT1引脚指示发生该事件。

AM09711v1

+

-

0 dps

X Y Z

X Y Z

X Y Z

AM02078v1

WKP

0 dps

Page 29: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

AN4506 中断生成

DocID026442 Rev 1 [English Rev 2] 29/47

5.5.3 使用高通滤波器

以下代码中的基本例程展示了对已进行高通滤波的数据执行的唤醒功能的实际应用。器件被配置为可识别出施加到X、Y或Z轴的角速率的高频分量超过预设阈值(本例中使用的阈值为100 dps)的情况。触发中断的事件会锁存在设备内,会使用INT1引脚指示发生该事件。

1 将0Fh写入CTRL1// 打开传感器并使能X、Y和Z// ODR = 100 Hz

2 将00h写入CTRL2 // 关闭高通滤波器

3 将80h写入CTRL3 // 中断挂载到INT1引脚上

4 将00h写入CTRL4 // FS = 245 dps

5 将34h写入IG_THS_XH // 阈值 = 100 dps

6 将3Eh写入IG_THS_XL // 阈值 = 100 dps

7 将00h写入IG_DURATION // 持续时间 = 0

8 将02h写入IG_CFG // 使能XH中断生成

9 轮询INT1焊盘;如果INT1=0,则转至8 // 轮询INT1引脚等待唤醒事件

10 读取IG_SRC // 返回触发了中断

// 的事件

11 (发生了唤醒事件;在此插入您的代码) // 事件处理

12 进入8

1 将0Fh写入CTRL1// 打开传感器并使能X、Y和Z// ODR = 100 Hz

2 将00h写入CTRL2 // 正常模式下的高通滤波器

3 将80h写入CTRL3 // 中断挂载到INT1引脚上

4 将00h写入CTRL4 // FS = 245 dps

5 将05h写入CTRL5// DataReg和FIFO中的数据为经过高通滤波后的

// 高通滤波数据用于中断

// 生成

6 将34h写入IG_THS_XH // 阈值 = 100 dps

7 将3Eh写入IG_THS_XL // 阈值 = 100 dps

8 将34h写入IG_THS_YH // 阈值 = 100 dps

9 将3Eh写入IG_THS_YL // 阈值 = 100 dps

10 将34h写入IG_THS_ZH // 阈值 = 100 dps

11 将3Eh写入IG_THS_ZL // 阈值 = 100 dps

12 将00h写入IG_DURATION // 持续时间 = 0

13 读取REFERENCE // 进行虚拟读取,将高通滤波器强制设为

// 当前角速率值

//(即设置参考角速率)

Page 30: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

中断生成 AN4506

30/47 DocID026442 Rev 1 [English Rev 2]

在第13步中,会对REFERENCE寄存器执行虚拟读取,以便设置器件执行阈值比较时所参照的当前/参考角速率/倾斜状态。

可根据需要随时执行虚拟读取,以便将当前速率设为参考状态,无需等待滤波器稳定下来。

5.6 选择性轴运动检测

选择性轴运动检测指IG_CFG和IG_THS寄存器的特定配置,它能让用户识别设备是否仅沿选定的轴旋转。

请参考图 17,“无旋转区域”定义为0 dps电平附近,在这个区域角速率足够小,可认为是0。可以创建IG_CFG寄存器的配置,使得仅当角速率沿X和Y轴的旋转接近0,而在Z轴不为0的此类情况出现时,生成中断。这意味着设备正在进行纯yaw旋转。

图17. 无移动中断

14 将6Ah写入IG_CFG// 使能XH、YH和ZH中断生成

// 中断已锁存

15 轮询INT1焊盘;如果INT1=0,则转至8 // 轮询INT1引脚等待唤醒事件

16 读取IG_SRC // 返回触发了中断

// 的事件

17 (发生了唤醒事件;在此插入您的代码) // 事件处理

18 进入15

AM09713v1

0 dps

X

Y

Z

Page 31: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

AN4506 中断生成

DocID026442 Rev 1 [English Rev 2] 31/47

本段介绍了使用选择性轴移动检测的基础知识。下面是报告的示例代码,它实现了选择性轴移动识别的软件程序:

示例代码利用设定为60 dps的阈值进行选择性轴移动检测,并通过硬件信号INT1通知该事件。在第7步,IG_DURATION寄存器像这样进行了配置,从而可忽略短于1/DR = 1/100 ~= 10 ms的事件,以避免假检测现象的发生。发生选择性轴移动检测后,对IG_SRC寄存器的读取操作会清空请求,器件会准备好识别其他事件。

1 将0Fh写入CTRL1// 打开传感器并使能X、Y和Z// ODR = 100 Hz

3 将80h写入CTRL3 // 中断挂载到INT1引脚上

4 将00h写入CTRL4 // FS = 245 dps

6 将1Fh写入IG_THS_XH // 阈值 = 60 dps

7 将58h写入IG_THS_XL // 阈值 = 60 dps

8 将1Fh写入IG_THS_YH // 阈值 = 60 dps

9 将58h写入IG_THS_YL // 阈值 = 60 dps

10 将1Fh写入IG_THS_ZH // 阈值 = 60 dps

11 将58h写入IG_THS_ZL // 阈值 = 60 dps

12 将01h写入IG_DURATION // 持续时间 = 10 ms

13 将65h写入IG_CFG// 使能XL、YL和ZH中断生成,使用AND // 配置。中断已锁存

14 轮询INT1焊盘;如果INT1=0,则转至8 // 轮询INT1引脚等待唤醒事件

15 读取IG_SRC // 返回触发了中断

// 的事件

16 (发生了唤醒事件;在此插入您的代码) // 事件处理

17 进入15

Page 32: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

先进先出(FIFO)缓冲区 AN4506

32/47 DocID026442 Rev 1 [English Rev 2]

6 先进先出(FIFO)缓冲区

为了减少主控的干预并便于对事件识别数据进行后处理,L3GD20H为三条输出通道X、Y和Z分别嵌入了先进先出(FIFO)缓冲区。

FIFO的使用可以使系统进行持续的省电,仅当需要时才会唤醒FIFO,并会从FIFO批量输出重要数据。

FIFO缓冲区可在七种不同模式下工作,各个模式可确保在应用开发过程中实现高度灵活性:Bypass模式、FIFO模式、Stream模式、Dynamic Stream模式、Stream-to-FIFO模式、Bypass-to-Stream模式和Bypass-to-FIFO模式。

可使能可编程FIFO阈值和FIFO上溢事件在DRDY/INT2引脚上生成专用中断。

6.1 FIFO描述

FIFO缓冲区 多能为每条通道存储32个16位角速率采样;数据采用左对齐16位2的补码形式存储。

数据样本集合由6个字节(Xl、Xh、Yl、Yh、Zl和Zh)和组成,它们会以选定的输出数据速率(ODR)释放到FIFO中。

新样本集合会放在第一个空闲的FIFO位置中,缓冲区被占满后,新样本集合会覆盖 早的值。

表27. FIFO缓冲区填满示例(存储第32个采样集)

输出寄存器0x28h 0x29h 0x2Ah 0x2Bh 0x2Ch 0x2Dh

Xl(0) Xh(0) Yl(0) Yh(0) Zl(0) Zh(0)

FIFO 索引 FIFO样本集合

FIFO(0) Xl(0) Xh(0) Yl(0) Yh(0) Zl(0) Zh(0)

FIFO(1) Xl(1) Xh(1) Yl(1) Yh(1) Zl(1) Zh(1)

FIFO(2) Xl(2) Xh(2) Yl(2) Yh(2) Zl(2) Zh(2)

FIFO(3) Xl(3) Xh(3) Yl(3) Yh(3) Zl(3) Zh(3)

... ... ... ... ... ... ...

... ... ... ... ... ... ...

FIFO(30) Xl(30) Xh(30) Yl(30) Yh(30) Zl(30) Zh(30)

FIFO(31) Xl(31) Xh(31) Yl(31) Yh(31) Zl(31) Zh(31)

Page 33: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

AN4506 先进先出(FIFO)缓冲区

DocID026442 Rev 1 [English Rev 2] 33/47

表 27表示的是存储了32个样本时FIFO已满的状态,而表 28表示下一步,当第33个采样插入到FIFO中,同时第1个采样被覆盖。新的 早样本集合在输出寄存器中可用。

如果FIFO已使能,并且所处模式不是Bypass模式,L3GD20H输出寄存器(28h到2Dh)始终会包含 早的FIFO样本集合。

6.2 FIFO寄存器

FIFO缓冲区由三个不同的陀螺仪寄存器进行管理,其中两个寄存器可使能并配置FIFO特性,第三个寄存器会提供关于缓冲区状态的信息。

6.2.1 控制寄存器5(0x24)CTRL5中的FIFO_EN位必须设为1才能使能内部的先进先出缓冲区;如果该位置1,陀螺仪输出寄存器(28h到2Dh)不会包含当前角速率值,但始终会包含FIFO中存储的 早值。

表28. FIFO上溢表示FIFO溢出示例(存储第33个采样集同时丢弃第1个采样)

输出寄存器0x28h 0x29h 0x2Ah 0x2Bh 0x2Ch 0x2Dh

Xl(1) Xh(1) Yl(1) Yh(1) Zl(1) Zh(1)

FIFO 索引 样本集合

FIFO(0) Xl(1) Xh(1) Yl(1) Yh(1) Zl(1) Zh(1)

FIFO(1) Xl(2) Xh(2) Yl(2) Yh(2) Zl(2) Zh(2)

FIFO(2) Xl(3) Xh(3) Yl(3) Yh(3) Zl(3) Zh(3)

FIFO(3) Xl(4) Xh(4) Yl(4) Yh(4) Zl(4) Zh(4)

... ... ... ... ... ... ...

... ... ... ... ... ... ...

FIFO(30) Xl(31) Xh(31) Yl(31) Yh(31) Zl(31) Zh(31)

FIFO(31) Xl(32) Xh(32) Yl(32) Yh(32) Zl(32) Zh(32)

表29. CTRL5中的FIFO使能位

b7 b6 b5 b4 b3 b2 b1 b0

X FIFO_EN X X X X X X

Page 34: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

先进先出(FIFO)缓冲区 AN4506

34/47 DocID026442 Rev 1 [English Rev 2]

图18. FIFO_EN连接框图

6.2.2 FIFO控制寄存器(0x2E)该寄存器专用于FIFO模式选择和FIFO阈值配置。

FM[2:0]位专用于定义FIFO缓冲区特性选择:

1. FM[2:0] = (0,0,0):Bypass模式

2. FM[2:0] = (0,0,1):FIFO模式

3. FM[2:0] = (0,1,0):Stream模式

4. FM[2:0] = (0,1,1):Stream-to-FIFO模式

5. FM[2:0] = (1,0,0):Bypass-to-Stream模式

6. FM[2:0] = (1,1,0):Dynamic Stream模式

7. FM[2:0] = (1,1,1):Bypass-to-FIFO模式

用于激活Stream-to-FIFO和Bypass-to-Stream模式的触发与已选IG_SRC寄存器IA位的值相关,不取决于中断引脚值和极性。即使已选中断未驱动到中断引脚,也会生成触发。

FTH[4:0]位用于定义FIFO阈值等级;如果FIFO内容超过该值,FIFO源寄存器中的FTH位会置“1”。

表30. FIFO_CTRL寄存器

b7 b6 b5 b4 b3 b2 b1 b0

FM2 FM1 FM0 FTH4 FTH3 FTH2 FTH1 FTH0

Page 35: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

AN4506 先进先出(FIFO)缓冲区

DocID026442 Rev 1 [English Rev 2] 35/47

6.2.3 FIFO源寄存器(0x2F)该寄存器每个ODR会更新一次,会提供关于FIFO缓冲区状态的信息。

• 如果FIFO内容超过FIFO阈值等级,FTH位会置为高电平。

• 如果FIFO缓冲区已满,OVRN位会置1;这意味着FIFO缓冲区包含32个未读样本。下一ODR时,新样本集合会替换 早的FIFO值。第一个样本集合已被读取时,OVRN位会复位。

• 当所有FIFO样本已被读取并且FIFO为空时,EMPTY标志会置1。• FSS[4:0]字段始终包含FIFO缓冲区中存储的当前未读样本数。FIFO使能后,该值会以

ODR频率增加,直至缓冲区已满,随后,每次从FIFO读取一个样本集合,该值都会减小。

寄存器内容会与FIFO写操作和读操作同步更新。

通过配置CTRL3,可使能FIFO阈值标志、FIFO上溢和FIFO空事件,在DRDY/INT2引脚上生成专用中断。

• INT2_FTH位会驱动DRDY/INT2引脚上的FIFO阈值标志(FTH)

• INT2_ORun位会驱动DRDY/INT2Y引脚上的上溢事件(OVRN)。• INT2_Empty位会驱动DRDY/INT2引脚上的空事件(EMPTY)。

如果一个或多个位被置为“1”,DRDY/INT2引脚状态为三个信号的逻辑或组合。

表31. FIFO_SRC寄存器

b7 b6 b5 b4 b3 b2 b1 b0

FTH OVRN 空 FSS4 FSS3 FSS2 FSS1 FSS0

表32. FIFO_SRC_REG特性(假定FTH[4:0] = 15)FTH OVRN 空 FSS[4:0] 未读FIFO样本 时序

0 0 1 00000 0 t0

0 0 0 00001 1 t0 + 1/ODR

0 0 0 00010 2 t0 + 2/ODR

... ... ... ... ... ...

0 0 0 01111 15 t0 + 15/ODR

1 0 0 10000 16 t0 + 16/ODR

... ... ... ... ... ...

1 0 0 11110 30 t0 + 30/ODR

1 0 0 11111 31 t0 + 31/ODR

1 1 0 11111 32 t0 + 32/ODR

表33. CTRL3(0x22)b7 b6 b5 b4 b3 b2 b1 b0

X X X X X INT2_FTH INT2_ORun INT2_Empty

Page 36: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

先进先出(FIFO)缓冲区 AN4506

36/47 DocID026442 Rev 1 [English Rev 2]

6.3 FIFO模式

通过FIFO_CTRL寄存器的FM[2:0]字段,L3GD20H FIFO缓冲器可配置为五种不同的可选工作模式。可用配置确保了高度灵活性,并扩展了可用于应用开发的功能数量。

以下段落描述了Bypass、FIFO、Stream、Dynamic Stream、Stream-to-FIFO、Bypass-to-Stream和Bypass-to-FIFO模式。

6.3.1 Bypass模式

启用Bypass模式后,FIFO不可运行:缓冲区内容会被清空、输出寄存器(0x28到0x2D)会冻结为 后载入的值,在选择其他模式之前,FIFO缓冲区会保持空白状态。

请按照以下步骤配置Bypass模式:

1. 将控制寄存器5(0x24)中的FIFO_En位置“1”可使能FIFO。执行完此操作后,FIFO缓冲区会使能,但不会采集数据,数据寄存器冻结为上次加载的样本集合。

2. 将FIFO_CTRL寄存器(0x2E)中的FM[2:0]字段设为“000”可激活Bypass模式。如果使能该模式,FIFO_SRC寄存器(0x2F)会强制设为等于0x20。

当在不同模式下工作时,要停止和复位FIFO缓冲器,必须使用Bypass模式。请注意,将FIFO缓冲区置于Bypass模式会清除整个缓冲区的内容。

6.3.2 FIFO模式

在FIFO模式下,缓冲区会继续填入数据,直至填满为止(存储32个样本集合),随后,缓冲区会停止采集数据,FIFO内容保持不变,直至选择了另一模式。

请按照以下步骤配置FIFO模式:

1. 将控制寄存器5(0x24)中的FIFO_En位置“1”可使能FIFO。执行完此操作后,FIFO缓冲区会使能,但不会采集数据,数据寄存器冻结为上次加载的样本集合。

2. 将FIFO控制寄存器(0x2E)中的FM[2:0]字段设为“001”可激活Bypass模式。

选择该模式后,FIFO会开始进行数据采集,源寄存器(0x2F)也会根据存储的样本数发生变化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取来读取数据。如果应用要求的样本数较少,还可以根据FTH标志读取数据,而不是OVRN。FIFO模式下通信速度不是很重要,因为数据采集已停止,不存在已采集数据被覆盖的风险。重新启动FIFO模式之前,请务必在读取程序之后设置Bypass模式(以清除FIFO内容)。

Page 37: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

AN4506 先进先出(FIFO)缓冲区

DocID026442 Rev 1 [English Rev 2] 37/47

建议使用FIFO模式的应用采取如下步骤:

1. 将FIFO_En置1:使能FIFO2. 将FM[2:0]设为(0,0,1):使能FIFO模式

3. 等待OVRN或FTH中断;

4. 从陀螺仪输出寄存器读取数据;

5. 将FM[2:0]设为(0,0,0):使能Bypass模式

6. 重复第2步及后续步骤。

图19. FIFO模式特性

如果使能了FIFO模式,缓冲区会开始采集数据,并会以所选输出数据速率填入全部32个位置(从F0到F31)。缓冲区已满后,OVRN位会变为高电平,数据采集会永久停止;用户可随时读取FIFO内容,因为在选择Bypass模式之前,FIFO缓冲区的内容保持不变。读取包括32个6字节样本集合(共192字节),会从FIFO中存储的 早的样本(F0)开始获取数据。第一个样本集合已被读取时,OVRN位会复位。Bypass模式设置会复位FIFO并允许用户再次使能FIFO模式。

6.3.3 Stream模式

Stream模式中,FIFO连续填充。当缓冲器满时,FIFO索引重新从头开始,原有数据被当前数据替代。 早的值会继续被覆盖,直至读取操作释放了FIFO位置。要实现插槽释放速度快于数据率,主处理器读取速度很重要。FM[2:0] Bypass配置用于停止该模式。

请按照以下步骤配置Stream模式:

1. 将CTRL5寄存器(0x24)中的FIFO_En位置“1”可使能FIFO。执行完此操作后,FIFO缓冲区会使能,但不会采集数据,数据寄存器冻结为上次加载的样本集合。

2. 将FIFO_CTRL寄存器(0x2E)中的FM[2:0]字段设为“010”可激活Stream模式。

AM08473v1

tFIFO FIFO

OVRN

FIFOFIFO FIFOBypass

…3332…31……543210…F1F0F0F0…F31……F5F4F3F2F1F0

t

OVRN

FIFO

…3332…31……543210…F1F0…F31……F5F4F3F2F1F0

Page 38: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

先进先出(FIFO)缓冲区 AN4506

38/47 DocID026442 Rev 1 [English Rev 2]

如上所述,对于FIFO模式,如果OVRN置为“1”,可读取数据,获取数据时会从输出寄存器读取32个样本集合,如果应用要求的样本数较少,还可以根据FTH标志读取数据(参见第 6.3.4节)。

图20. Stream模式快速读取特性

在Stream模式下,FIFO缓冲区会以选定的输出数据速率持续填入数据(从F0到F31)。缓冲区填满后,OVRN标志会变为高电平,建议的解决方法是以快于1*ODR的速度读取所有FIFO样本(192个字节),以便释放FIFO位置供新的角速率样本使用。这样可避免数据丢失,并可减少主机处理器干预,从而可提高系统效率。如果读取的速度不够快,可观察到三种不同的情况:

1. FIFO样本集合(6字节)的读取速度快于1*ODR:由于新数据生成前已释放了FIFO位置,因此可正确地读取数据。

2. FIFO样本集合(6字节)的读取速度与1*ODR同步:由于新数据生成前已释放了FIFO位置,因此可正确地读取数据,但没有用到FIFO的优势。这种情况相当于在发生数据就绪中断时读取数据,与标准的陀螺仪读取相比,不会减少主机处理器的干预。

3. FIFO样本集合(6字节)的读取速度比1*ODR慢:在这种情况下,一些数据会丢失,因为数据恢复的速度不够快,无法为新的角速率数据释放FIFO位置。(请参考图 21)。正确恢复的样本数与当前ODR与FIFO样本集合读取速率之差相关。

AM08474v1

tStream

OVRN

……656463…333231……543210……F1F0F31…F1F0F31……F5F4F3F2F1F0

t

OVRN

FIFO

……656463…333231……543210……F1F0F31…F1F0F31……F5F4F3F2F1F0

FIFO FIFO

Page 39: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

AN4506 先进先出(FIFO)缓冲区

DocID026442 Rev 1 [English Rev 2] 39/47

图21. Stream模式慢速读取特性

在图 21中,由于读取速度慢,不会读取来自“jj”的数据,因为这些数据会被系统生成的新陀螺仪样本所代替。

图22. Stream模式慢速读取放大图

使能Stream模式后,FIFO位置会在每个ODR时间帧结束时填入数据。读取过程必须在OVRN标志设为“1”后立即开始。在读取操作开始时就从FIFO读取数据。读取命令发送到器件后,输出寄存器内容会移动到SPI/I2C寄存器,当前 早的FIFO值会移入输出寄存器,以执行下一次读取操作。如果读取速度比1*ODR慢,新样本插入到寻址位置后,可从FIFO读取一些数据。在图 22中,F3索引刷新后会开始执行第四条读取命令,此命令会中断数据读取。OVRN标志告知用户该事件已发生。本例中读取了三个正确样本,正确恢复的样本数取决于ODR和FIFO样本集合读取时间帧之差。

AM08475v1

tStream

OVRN

FIFO FIFO

.

.…yyxx…656463.kk →yyjj →xx3231……3210…F?+1F?…F1F0F31.F?+1F?F0F31……F3F2F1F0

t

OVRN

FIFO

.

.…yyxx…656463.kk →yyjj →xx3231……3210…F?+1F?…F1F0F31.F?+1F?F0F31……F3F2F1F0

AM08476v1

Stream

t

OVRN

R0:0

FIFO

……363534333231…43210……F4F3F2F1F0F31…F4F3F2F1F0

R1:1 R2:2 R3:35 R4:36

t0

t0+dt t0+31dtt

OVRN

R0:0FIFO

……363534333231…43210……F4F3F2F1F0F31…F4F3F2F1F0

R1:1 R2:2 R3:35 R4:36

t0

t0+dt t0+31dt

Page 40: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

先进先出(FIFO)缓冲区 AN4506

40/47 DocID026442 Rev 1 [English Rev 2]

6.3.4 Dynamic Stream模式

Dynamic Stream模式和Stream模式类似,但其使用的场景为当FIFO阈值低于31时,以避免多次读取相同的样本。

图23. 具有阈值的Stream模式

图24. 具有阈值的Dynamic Stream模式

图 23显示了Stream模式的例子,在上溢中断发生之前,读取所有FIFO内容。第一个读取的数据等于之前设置的 后一个数据,所以FIFO中可用的新数据个数取决于之前的读取。

图 24显示了使用Dynamic Stream模式的相同示例。在这种情况下,当清空FIFO后,第一个新数据变为下一个设置的第一个样本。因此,FIFO中可用的新数据数量不依赖于之前的读数。

FSS=34

D3-D4-D5-D6

FSS=34

D0-D1-D2-D3

Stream

Dynamic Stream FIFO_CTRL 4 0 =2

FSS=34

D3-D4-D5-D6

FSS=34

D0-D1-D2-D3

Page 41: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

AN4506 先进先出(FIFO)缓冲区

DocID026442 Rev 1 [English Rev 2] 41/47

请按照以下步骤配置Dynamic Stream模式:

1. 将CTRL5寄存器(0x24)中的FIFO_En位置“1”可使能FIFO。执行完此操作后,FIFO缓冲区会使能,但不会采集数据,数据寄存器冻结为上次加载的样本集合。

2. 将FIFO_CTRL寄存器(0x2E)中的FM[2:0]字段设为“110”可激活Dynamic Stream模式。

6.3.5 Stream-to-FIFO模式

此模式是上述Stream模式与FIFO模式的结合。在Stream-to-FIFO模式下,FIFO缓冲区会在Stream模式下开始工作,并会在发生选定的中断后切换为FIFO模式。

请按照以下步骤配置Stream-to-FIFO模式:

1. 使用寄存器IG_CFG(0x30)配置所需中断发生器。

2. 将CTRL5寄存器(0x24)中的FIFO_En位置“1”可使能FIFO。执行完此操作后,FIFO缓冲区会使能,但不会采集数据,数据寄存器冻结为上次加载的样本集合。

3. 将FIFO控制寄存器(0x2E)中的FM[2:0]字段设为“011”可激活Stream-to-FIFO模式。

中断触发与IG_SRC寄存器中的IA相关联,即使中断信号未驱动到中断焊盘,也会生成中断触发。如果IA和OVRN位均置为高电平,则会执行模式转换。Stream-to-FIFO模式易受触发电平影响,而不是是触发边沿的影响;这意味着如果stream-to-FIFO处于FIFO模式,并且中断条件消失,FIFO缓冲区会因IA位变为零而恢复为Stream模式。建议锁存用作FIFO寄存器的中断信号,以免中断信号丢失。如果选定的中断被锁存,则需要读取寄存器IG_SRC来清空IA位;读取后,IA位会取2*ODR的值变低。

在Stream模式下,FIFO缓冲区会继续填入数据,当缓冲区已满时,OVRN位会置1,后续样本会覆盖原样本。发生触发时,可观察到两种不同情况:

1. 如果FIFO缓冲区已满(OVRN = “1”),则会在触发后收到第一个样本时停止采集数据。FIFO内容由触发事件前的30个样本、生成了中断的样本以及触发后的一个样本构成。

2. 如果FIFO未满(初始瞬态),则会继续填入数据,直至填满为止(OVRN = “1”),之后,如果触发条件仍存在,FIFO会停止采集数据。

Page 42: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

先进先出(FIFO)缓冲区 AN4506

42/47 DocID026442 Rev 1 [English Rev 2]

图25. Stream-to-FIFO模式:中断未锁存

图26. Stream-to-FIFO模式:中断锁存

可使用Stream-to-FIFO来分析生成中断的样本历史;标准操作是在FIFO模式已触发、FIFO缓冲区已满并停止时读取FIFO内容。

6.3.6 Bypass-to-Stream模式

此模式是上述Bypass模式与Stream模式的结合。在Bypass-to-Stream模式下,FIFO缓冲区会在Bypass模式下开始工作,并会在发生选定的中断后切换为Stream模式。

请按照以下步骤配置Bypass-to-Stream模式:

1. 使用寄存器IG_CFG(0x30)配置所需中断发生器。

2. 将CTRL5寄存器(0x24)中的FIFO_En位置“1”可使能FIFO。执行完此操作后,FIFO缓冲区会使能,但不会采集数据,数据寄存器冻结为上次加载的样本集合。

3. 将FIFO_CTRL寄存器(0x2E)中的FM[2:0]字段设为“100”可激活Bypass-to-Stream模式。

AM08477v1

tFIFO

OVRN

FIFO

ODR

3534333231……543210F32F1F0

IA

t

OVRN

FIFO

ODR

3534333231……543210F32F1F0

Stream to FIFO

AM08478v1

tStream to FIFO Stream to FIFOFIFO

OVRN

INT SRCFIFO FIFO

Bypass

3231……543210F0F0F0F31F5F4F3F2F1F0

IAt

OVRN

FIFO

3231……543210F0F0F0F31F5F4F3F2F1F0

Page 43: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

AN4506 先进先出(FIFO)缓冲区

DocID026442 Rev 1 [English Rev 2] 43/47

中断触发与IG_SRC寄存器中的IA相关联,即使中断信号未驱动到中断焊盘,也会生成中断触发。Bypass-to-Stream模式易受触发电平影响,而不是是触发边沿的影响;这意味着如果FIFO缓冲区处于Stream模式,并且中断条件消失,FIFO缓冲区会因IA位变为零而恢复为Bypass模式。

建议锁存用作stream寄存器的中断信号,以免中断信号丢失。如果选定的中断被锁存,则需要读取寄存器IG_SRC来清空IA位;读取后,IA位会取2*ODR的值变低。

在Stream模式下,FIFO缓冲区会继续填入数据。当缓冲区已满时,OVRN位会置1,后续样本会覆盖原样本。

图27. Bypass-to-Stream模式

Bypass-to-Stream可用来在产生所配置中断时启动采集。

6.3.7 Bypass-FIFO模式

此模式是之前说明的Bypass和FIFO模式的组合:FIFO缓冲器开始工作于Bypass模式,当中断发生时切换至FIFO模式。

请按照以下步骤配置Bypass-to-FIFO模式:

1. 使用寄存器IG_CFG(0x30)配置所需中断发生器。

2. 将CTRL5寄存器(0x24)中的FIFO_En位置“1”可使能FIFO。执行完此操作后,FIFO缓冲区会使能,但不会采集数据,数据寄存器冻结为上次加载的样本集合。

3. 将FIFO_CTRL寄存器(0x2E)中的FM[2:0]字段设为“111”可激活Bypass-to-FIFO模式。

中断触发与IG_SRC寄存器中的IA相关联,即使中断信号未驱动到中断焊盘,也会生成中断触发。

建议锁存用作stream寄存器的中断信号,以免中断信号丢失。如果选定的中断被锁存,则需要读取寄存器IG_SRC来清空IA位;读取后,IA位会取2*ODR的值变低。

AM09714v1

tBypass to Stream

OVRN

FIFO

FIFO FIFO

F0 F0 F0 F0 F0 F1 … … F31 F0 F1 … F31 F0 F1 … F7 F8 F80 1 … … 31 32 33 … 63 64 65 … 71

IA bit

Stream Stream

Page 44: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

先进先出(FIFO)缓冲区 AN4506

44/47 DocID026442 Rev 1 [English Rev 2]

在中断发生、FIFO切换至FIFO模式后,缓冲区会开始采集数据,并会以所选输出数据速率填入全部32个位置(从F0到F31)。缓冲区已满后,OVRN位会变为高电平,数据采集会永久停止;用户可读取FIFO内容。读取程序包括32个6字节样本集合(共192字节),会从FIFO中存储的 早的样本(F0)开始获取数据。第一个样本集合已被读取时,OVRN位会复位。

6.4 FIFO阈值

FIFO阈值是可用于生成特定中断的可配置标志,可用于确定FIFO缓冲区何时包含的样本数至少为定义为阈值等级的数目。用户可使用FIFO控制寄存器中的FSS[4:0]字段选择所需级别(范围为0到31),而FIFO源寄存器FSS[4:0]始终包含存储在FIFO中的样本数。如果FSS[4:0]大于FTH[4:0],FIFO源寄存器中的FTH位会置1,相反,如果FSS[4:0]字段小于FTH[4:0],FTH会置0。FSS[4:0]会以ODR频率增加一步,每次由用户执行样本集合读取操作时,FSS[4:0]会减小一步。

图28. FIFO阈值特性 - FTH[4:0] = 10

在图 28中,第一行指示FSS[4:0]值,第二行指示相对FIFO位置, 后一行显示增加的FIFO数据。假定FSS[4:0] = 10,当第11个FIFO位置(F10)被填入数据时,FTH标志会从“0”变为“1”。图 29显示了当FIFO内容小于FTH[4:0]时,FTH标志变为低电平,这意味着第9个未读样本集合仍在FIFO中。

可将CTRL3寄存器中的INT2_FTH位置为高电平,以此使能FIFO阈值标志(FTH),在DRDY/INT2引脚上生成专用中断。

FIFO

FIFO FIFO

Page 45: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

AN4506 先进先出(FIFO)缓冲区

DocID026442 Rev 1 [English Rev 2] 45/47

6.5 从FIFO读取数据

如果FIFO已使能,并且所处模式不是Bypass模式,读取输出寄存器(28h到2Dh)会返回早的FIFO样本集合。

读取输出寄存器时,其内容会移至SPI/I2C输出缓冲区。理想地,FIFO插槽会向上移动一格,以便释放空间接收新的采样,并且输出寄存器载入FIFO缓冲器中存储的当前 旧的值。

整个FIFO内容是通过对陀螺仪输出寄存器执行32次读取操作读取的,FIFO缓冲区有新样本集合之前,所有其他的读取操作都会返回相同的 后值。

为了提高应用的灵活性,可使用每种读取字节组合从FIFO读取数据(例如:196次单字节读取,32次6字节读取,1次196字节的多字节读取等)。

建议以快于1*ODR的速度通过196字节多字节读取的方式来读取所有FIFO位置(6个输出寄存器乘以32个存储位置)。为了 大限度地减少主器件与从器件之间的通信,器件会自动更新读取地址;到达寄存器0x2D时,会回滚到0x28。

为了避免数据丢失,必须按照可用的串行通信速率选择正确的ODR。如果使用的是标准I2C模式( 大 速率100 kHz),单次样本集合读取会用时830 µs,而整体FIFO下载约用时17.57ms。I2C速度低于SPI,大概需要29个时钟脉冲才能开始通信(开始、从站地址、器件地址+写入地址、重新开始、器件地址+读取),另外还需要9个时钟脉冲才能读取每个字节。如果遵循该建议,完整FIFO读取的执行速度会快于1*ODR,这意味着如果使用标准I2C,可选ODR必须低于57 Hz。如果使用快速I2C模式( 大 速率400 kHz),则可选的ODR必须低于228 Hz。

图29. FIFO读取图 - FTH[4:0] = 10

在图 29中, “Rx”表示6字节读取操作, “F0*”代表单个ODR时隙(示意图进行了放大)。

AM08480v1

tFIFO

OVRN

…3231+OVRN…11…1

…34333231…10…0…F2F1F0*F31…F10…F0

WTM

R0FIFO

FIFO

R1 … … R22 … … R29 R30 R31

30 29 … … 8 … 0+EMPTY

FIFO

01… 1 …3231+OVRN…11…1

…34333231…10…0…F2F1F0*F31…F10…F0

R0 R1 … … R22 … … R29 R30 R31

30 29 … … 8 … 0+EMPTY01… 1

Page 46: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

温度传感器 AN4506

46/47 DocID026442 Rev 1 [English Rev 2]

7 温度传感器

L3GD20H具有内部温度传感器,适用于温差测量。温度数据以1 Hz频率生成并储存在OUT_TEMP寄存器内,格式为二进制补码,灵敏度为-1 LSB/°C。

8 版本历史

表34. 文档版本历史

日期 版本 变更

2014年6月18日

1 初始版本。

2015年4月30日

2更新了第 2.5节:切换模式

更新了第 3.5节:DEN函数

更新了第 6.3节:FIFO模式

表35. 中文文档版本历史

日期 版本 变更

2017年11月24日

1 中文初始版本。

Page 47: AN4506 应用笔记...化。此过程结束时,如果CTRL3寄存器中的INT2_ORun位被置为1,则FIFO源寄存器会设为 0xDF,OVRN标志会生成中断。当OVRN为“1”时,可通过从输出寄存器执行32采样集读取

AN4506 版本历史

DocID026442 Rev 1 [English Rev 2] 47/47

重要通知 - 请仔细阅读

意法半导体公司及其子公司(“ST”)保留随时对 ST 产品和 / 或本文档进行变更、更正、增强、修改和改进的权利,恕不另行通知。买方在订货之前应获取关于 ST 产品的 新信息。 ST 产品的销售依照订单确认时的相关 ST 销售条款。

买方自行负责对 ST 产品的选择和使用, ST 概不承担与应用协助或买方产品设计相关的任何责任。

ST 不对任何知识产权进行任何明示或默示的授权或许可。

转售的 ST 产品如有不同于此处提供的信息的规定,将导致 ST 针对该产品授予的任何保证失效。

ST 和 ST 徽标是 ST 的商标。所有其他产品或服务名称均为其各自所有者的财产。

本文档中的信息取代本文档所有早期版本中提供的信息。本文档的中文版本为英文版本的翻译件,仅供参考之用;若中文版本与英文版本有任何冲突或不一致,则以英文版本为准。

© 2017 STMicroelectronics - 保留所有权利