寄存器去鼠标加速度

去鼠标加速度  时间:2021-02-20  阅读:()

引言本文档旨在提供STLSM6DSLiNEMO六轴惯性传感器模块相关的使用信息和应用提示.
LSM6DSL是系统级封装的3D数字加速度计和3D数字陀螺仪,具有数字I2C/SPI串口标准输出,在组合高性能工作模式下6轴功耗0.
65mA.
由于陀螺仪和加速度计均具有超低噪声性能,始终具有低功耗特性,并结合了高传感精度,因此能够为客户提供最佳运动体验.
此外,加速度计具有智能的休眠到唤醒(活动)和返回休眠(不活动)功能,具备先进的节电能力.

该器件具有动态的用户可选择的满量程加速度范围:±2/±4/±8/±16g,且角速率范围为±125/±250/±500/±1000/±2000dps.
经过配置,LSM6DSL可利用硬件识别出的自由落体事件、6D方向、单击和双击感应、活动或不活动、唤醒事件,来生成中断信号.
可使用专用连接模式与外部传感器相连,因此能够实现传感器集合(sensorhub)功能.
LSM6DSL可兼容主要操作系统的要求,提供真实、虚拟以及批量模式传感器.
它经过专门设计,可在硬件上实现大幅运动检测、相对倾斜度、绝对倾斜度、硬件计步功能、时间戳,并支持对外部磁力计的数据采集,且支持铁磁校准(硬磁校准,软磁校准).
LSM6DSL集成有一个4Kbyte的智能先进先出(FIFO)缓冲器,支持对有效数据(包括外部传感器、计步器、时间戳和温度数据)进行动态批处理.
LSM6DSL采用小型塑料焊盘网格阵列封装(LGA-14L),可确保在更大的温度范围(-40°C至+85°C)内正常工作.
SMD封装的超小尺寸和重量使其成为手持便携式应用的理想选择,如智能手机、物联网(IoT)连接设备,穿戴,以及需要减小封装尺寸和重量的其他应用.
LSM6DSL:始终开启的3D加速度计和3D陀螺仪根据保密协议–不可复制AN5040应用笔记AN5040-Rev3-January2020更多垂询,请联系您本地的意法半导体销售处www.
st.
com1引脚说明图1.
引脚连接1.
LeavepinelectricallyunconnectedandsolderedtoPCB.
根据保密协议–不可复制AN5040引脚说明AN5040-Rev3page2/120表1.
引脚状态引脚#名称模式1功能模式2功能引脚状态模式1引脚状态模式21SDOSPI4线接口串行数据输出(serialdataoutput,SDO)SPI4线接口串行数据输出(serialdataoutput,SDO)默认值:无上拉的输入.
上拉使能如果寄存器12h中的位SIM=1(SPI3线)默认值:无上拉的输入.
上拉使能如果寄存器12h中的位SIM=1(SPI3线)SA0器件地址的I2C最低有效位(SA0)器件地址的I2C最低有效位(SA0)2SDx连接到VDDIO或GNDI2C串行数据主机(MSDA)默认值:无上拉的输入.
上拉使能如果寄存器1Ah中的位PULL_UP_EN=1.
默认值:无上拉的输入.
上拉使能如果寄存器1Ah中的位PULL_UP_EN=1.
3SCx连接到VDDIO或GNDI2C串行时钟主机(MSCL)默认值:无上拉的输入.
上拉使能如果寄存器1Ah中的位PULL_UP_EN=1.
默认值:无上拉的输入.
上拉使能如果寄存器1Ah中的位PULL_UP_EN=1.
4INT1可编程中断1可编程中断1默认值:输出强制接地默认值:输出强制接地5Vdd_IOI/O引脚的供电I/O引脚的供电6GND0V电源0V电源7GND0V电源0V电源8Vdd电源电源9INT2可编程中断2(INT2)/数据使能(dataenable,DEN)可编程中断2(INT2)/数据使能(dataenable,DEN)/I2C主线的外部同步信号(MDRDY)默认值:输出强制接地默认值:输出强制接地10NC(1)保持断开(1)默认值:带上拉的输入.
(请参见下方的注释来禁用上拉)默认值:带上拉的输入.
(请参见下方的注释来禁用上拉)11NC保持断开(1)保持断开(1)默认值:带上拉的输入.
(请参见下方的注释来禁用上拉)默认值:带上拉的输入.
(请参见下方的注释来禁用上拉)12CSI2C/SPI模式选择(1:SPI空闲模式/I2C通信使能;0:SPI通信模式/I2C禁用)I2C/SPI模式选择(1:SPI空闲模式/I2C通信使能;0:SPI通信模式/I2C禁用)默认值:带上拉的输入.
上拉禁用如果寄存器13h中的位I2C_disable=1.
默认值:带上拉的输入.
上拉禁用如果寄存器13h中的位I2C_disable=1.
13SCLI2C串行时钟(SCL)/SPI串口时钟(serialportclock,SPC)I2C串行时钟(SCL)/SPI串口时钟(serialportclock,SPC)输入无上拉输入无上拉14SDAI2C串行数据(SDA)/SPI串行数据输入(SDI)/3线SPI接口串行数据输出(serialdataoutput,SDO)I2C串行数据(SDA)/SPI串行数据输入(SDI)/3线SPI接口串行数据输出(serialdataoutput,SDO)输入无上拉输入无上拉1.
悬空的引脚也保证焊接到PCB上.
内部上拉值范围从30k至50k,取决于VDDIO.
注:禁用引脚10-11上上拉的步骤1.
通过主IC/SPI接口:在地址00h的寄存器中写入80h2.
通过主IC/SPI接口:在地址05h的寄存器中写入01h(禁用引脚10&11上的上拉)3.
通过主IC/SPI接口:在地址00h的寄存器中写入00h根据保密协议–不可复制AN5040引脚说明AN5040-Rev3page3/1202寄存器表2.
寄存器寄存器名地址位7位6位5位4位3位2位1位0FUNC_CFG_ACCESS01hFUNC_CFG_EN0FUNC_CFG_EN_B00000SENSOR_SYNC_TIME_FRAME04h0000TPH_3TPH_2TPH_1TPH_0SENSOR_SYNC_RES_RATIO05h000000RR_1RR_0FIFO_CTRL106hFTH_7FTH_6FTH_5FTH_4FTH_3FTH_2FTH_1FTH_0FIFO_CTRL207hTIMER_PEDO_FIFO_ENTIMER_PEDO_FIFO_DRDY00FIFO_TEMP_ENFTH_10FTH_9FTH_8FIFO_CTRL308h00DEC_FIFO_GYRO2DEC_FIFO_GYRO1DEC_FIFO_GYRO0DEC_FIFO_XL2DEC_FIFO_XL1DEC_FIFO_XL0FIFO_CTRL409hSTOP_ON_FTHONLY_HIGH_DATADEC_DS4_FIFO2DEC_DS4_FIFO1DEC_DS4_FIFO0DEC_DS3_FIFO2DEC_DS3_FIFO1DEC_DS3_FIFO0FIFO_CTRL50Ah0ODR_FIFO_3ODR_FIFO_2ODR_FIFO_1ODR_FIFO_0FIFO_MODE_2FIFO_MODE_1FIFO_MODE_0DRDY_PULSE_CFG0BhDRDY_PULSED000000INT2_WRIST_TILTINT1_CTRL0DhINT1_STEP_DETECTORINT1_SIGN_MOTINT1_FULL_FLAGINT1_FIFO_OVRINT1_FTHINT1_BOOTINT1_DRDY_GINT1_DRDY_XLINT2_CTRL0EhINT2_STEP_DELTAINT2_STEP_COUNT_OVINT2_FULL_FLAGINT2_FIFO_OVRINT2_FTHINT2_DRDY_TEMPINT2_DRDY_GINT2_DRDY_XLWHO_AM_I0Fh01101010CTRL1_XL10hODR_XL3ODR_XL2ODR_XL1ODR_XL0FS_XL1FS_XL0LPF1_BW_SELBW0_XLCTRL2_G11hODR_G3ODR_G2ODR_G1ODR_G0FS_G1FS_G0FS_1250CTRL3_C12hBOOTBDUH_LACTIVEPP_ODSIMIF_INCBLESW_RESETCTRL4_C13hDEN_XL_ENSLEEPINT2_on_INT1DEN_DRDY_INT1DRDY_MASKI2C_disableLPF1_SEL_G0CTRL5_C14hROUNDING2ROUNDING1ROUNDING0DEN_LHST1_GST0_GST1_XLST0_XLCTRL6_C15hTRIG_ENLVL1_ENLVL2_ENXL_HM_MODEUSR_OFF_W0FTYPE_1FTYPE_0CTRL7_G16hG_HM_MODEHP_G_ENHPM1_GHPM0_G0ROUNDING_STATUS00AN5040-Rev3page4/120根据保密协议–不可复制AN5040寄存器寄存器名地址位7位6位5位4位3位2位1位0CTRL8_XL17hLPF2_XL_ENHPCF_XL1HPCF_XL0HP_REF_MODEINPUT_COMPOSITEHP_SLOPE_XL_EN0LOW_PASS_ON_6DCTRL9_XL18hDEN_XDEN_YDEN_ZDEN_XL_G0SOFT_EN00CTRL10_C19hWRIST_TILT_EN0TIMER_ENPEDO_ENTILT_ENFUNC_ENPEDO_RST_STEPSIGN_MOTION_ENMASTER_CONFIG1AhDRDY_ON_INT1DATA_VALID_SEL_FIFO0START_CONFIGPULL_UP_ENPASS_THROUGH_MODEIRON_ENMASTER_ONWAKE_UP_SRC1Bh00FF_IASLEEP_STATE_IAWU_IAX_WUY_WUZ_WUTAP_SRC1Ch0TAP_IASINGLE_TAPDOUBLE_TAPTAP_SIGNX_TAPY_TAPZ_TAPD6D_SRC1DhDEN_DRDYD6D_IAZHZLYHYLXHXLSTATUS_REG1Eh00000TDAGDAXLDAOUT_TEMP_L20hTemp7Temp6Temp5Temp4Temp3Temp2Temp1Temp0OUT_TEMP_H21hTemp15Temp14Temp13Temp12Temp11Temp10Temp9Temp8OUTX_L_G22hD7D6D5D4D3D2D1D0OUTX_H_G23hD15D14D13D12D11D10D9D8OUTY_L_G24hD7D6D5D4D3D2D1D0OUTY_H_G25hD15D14D13D12D11D10D9D8OUTZ_L_G26hD7D6D5D4D3D2D1D0OUTZ_H_G27hD15D14D13D12D11D10D9D8OUTX_L_XL28hD7D6D5D4D3D2D1D0OUTX_H_XL29hD15D14D13D12D11D10D9D8OUTY_L_XL2AhD7D6D5D4D3D2D1D0OUTY_H_XL2BhD15D14D13D12D11D10D9D8OUTZ_L_XL2ChD7D6D5D4D3D2D1D0OUTZ_H_XL2DhD15D14D13D12D11D10D9D8SENSORHUB1_REG2EhSHub1_7SHub1_6SHub1_5SHub1_4SHub1_3SHub1_2SHub1_1SHub1_0SENSORHUB2_REG2FhSHub2_7SHub2_6SHub2_5SHub2_4SHub2_3SHub2_2SHub2_1SHub2_0SENSORHUB3_REG30hSHub3_7SHub3_6SHub3_5SHub3_4SHub3_3SHub3_2SHub3_1SHub3_0SENSORHUB4_REG31hSHub4_7SHub4_6SHub4_5SHub4_4SHub4_3SHub4_2SHub4_1SHub4_0SENSORHUB5_REG32hSHub5_7SHub5_6SHub5_5SHub5_4SHub5_3SHub5_2SHub5_1SHub5_0SENSORHUB6_REG33hSHub6_7SHub6_6SHub6_5SHub6_4SHub6_3SHub6_2SHub6_1SHub6_0SENSORHUB7_REG34hSHub7_7SHub7_6SHub7_5SHub7_4SHub7_3SHub7_2SHub7_1SHub7_0SENSORHUB8_REG35hSHub8_7SHub8_6SHub8_5SHub8_4SHub8_3SHub8_2SHub8_1SHub8_0SENSORHUB9_REG36hSHub9_7SHub9_6SHub9_5SHub9_4SHub9_3SHub9_2SHub9_1SHub9_0SENSORHUB10_REG37hSHub10_7SHub10_6SHub10_5SHub10_4SHub10_3SHub10_2SHub10_1SHub10_0SENSORHUB11_REG38hSHub11_7SHub11_6SHub11_5SHub11_4SHub11_3SHub11_2SHub11_1SHub11_0AN5040-Rev3page5/120根据保密协议–不可复制AN5040寄存器寄存器名地址位7位6位5位4位3位2位1位0SENSORHUB12_REG39hSHub12_7SHub12_6SHub12_5SHub12_4SHub12_3SHub12_2SHub12_1SHub12_0FIFO_STATUS13AhDIFF_FIFO_7DIFF_FIFO_6DIFF_FIFO_5DIFF_FIFO_4DIFF_FIFO_3DIFF_FIFO_2DIFF_FIFO_1DIFF_FIFO_0FIFO_STATUS23BhWaterMOVER_RUNFIFO_FULL_SMARTFIFO_EMPTY0DIFF_FIFO_10DIFF_FIFO_9DIFF_FIFO_8FIFO_STATUS33ChFIFO_PATTERN_7FIFO_PATTERN_6FIFO_PATTERN_5FIFO_PATTERN_4FIFO_PATTERN_3FIFO_PATTERN_2FIFO_PATTERN_1FIFO_PATTERN_0FIFO_STATUS43Dh000000FIFO_PATTERN_9FIFO_PATTERN_8FIFO_DATA_OUT_L3EhDATA_OUT_FIFO_L_7DATA_OUT_FIFO_L_6DATA_OUT_FIFO_L_5DATA_OUT_FIFO_L_4DATA_OUT_FIFO_L_3DATA_OUT_FIFO_L_2DATA_OUT_FIFO_L_1DATA_OUT_FIFO_L_0FIFO_DATA_OUT_H3FhDATA_OUT_FIFO_H_7DATA_OUT_FIFO_H_6DATA_OUT_FIFO_H_5DATA_OUT_FIFO_H_4DATA_OUT_FIFO_H_3DATA_OUT_FIFO_H_2DATA_OUT_FIFO_H_1DATA_OUT_FIFO_H_0TIMESTAMP0_REG40hTIMESTAMP0_7TIMESTAMP0_6TIMESTAMP0_5TIMESTAMP0_4TIMESTAMP0_3TIMESTAMP0_2TIMESTAMP0_1TIMESTAMP0_0TIMESTAMP1_REG41hTIMESTAMP1_7TIMESTAMP1_6TIMESTAMP1_5TIMESTAMP1_4TIMESTAMP1_3TIMESTAMP1_2TIMESTAMP1_1TIMESTAMP1_0TIMESTAMP2_REG42hTIMESTAMP2_7TIMESTAMP2_6TIMESTAMP2_5TIMESTAMP2_4TIMESTAMP2_3TIMESTAMP2_2TIMESTAMP2_1TIMESTAMP2_0STEP_TIMESTAMP_L49hSTEP_TIMESTAMP_L_7STEP_TIMESTAMP_L_6STEP_TIMESTAMP_L_5STEP_TIMESTAMP_L_4STEP_TIMESTAMP_L_3STEP_TIMESTAMP_L_2STEP_TIMESTAMP_L_1STEP_TIMESTAMP_L_0STEP_TIMESTAMP_H4AhSTEP_TIMESTAMP_H_7STEP_TIMESTAMP_H_6STEP_TIMESTAMP_H_5STEP_TIMESTAMP_H_4STEP_TIMESTAMP_H_3STEP_TIMESTAMP_H_2STEP_TIMESTAMP_H_1STEP_TIMESTAMP_H_0STEP_COUNTER_L4BhSTEP_COUNTER_L_7STEP_COUNTER_L_6STEP_COUNTER_L_5STEP_COUNTER_L_4STEP_COUNTER_L_3STEP_COUNTER_L_2STEP_COUNTER_L_1STEP_COUNTER_L_0STEP_COUNTER_H4ChSTEP_COUNTER_H_7STEP_COUNTER_H_6STEP_COUNTER_H_5STEP_COUNTER_H_4STEP_COUNTER_H_3STEP_COUNTER_H_2STEP_COUNTER_H_1STEP_COUNTER_H_0SENSORHUB13_REG4DhSHub13_7SHub13_6SHub13_5SHub13_4SHub13_3SHub13_2SHub13_1SHub13_0SENSORHUB14_REG4EhSHub14_7SHub14_6SHub14_5SHub14_4SHub14_3SHub14_2SHub14_1SHub14_0SENSORHUB15_REG4FhSHub15_7SHub15_6SHub15_5SHub15_4SHub15_3SHub15_2SHub15_1SHub15_0SENSORHUB16_REG50hSHub16_7SHub16_6SHub16_5SHub16_4SHub16_3SHub16_2SHub16_1SHub16_0SENSORHUB17_REG51hSHub17_7SHub17_6SHub17_5SHub17_4SHub17_3SHub17_2SHub17_1SHub17_0SENSORHUB18_REG52hSHub18_7SHub18_6SHub18_5SHub18_4SHub18_3SHub18_2SHub18_1SHub18_0FUNC_SRC153hSTEP_COUNT_DELTA_IASIGN_MOTION_IATILT_IASTEP_DETECTEDSTEP_OVERFLOWHI_FAILSI_END_OPSENSORHUB_END_OPFUNC_SRC254h0SLAVE3_NACKSLAVE2_NACKSLAVE1_NACKSLAVE0_NACK00WRIST_TILT_IAAN5040-Rev3page6/120根据保密协议–不可复制AN5040寄存器寄存器名地址位7位6位5位4位3位2位1位0WRIST_TILT_IA55hWRIST_TILT_IA_XposWRIST_TILT_IA_XnegWRIST_TILT_IA_YposWRIST_TILT_IA_YnegWRIST_TILT_IA_ZposWRIST_TILT_IA_Zneg00TAP_CFG58hINTERRUPTS_ENABLEINACT_EN1INACT_EN0SLOPE_FDSTAP_X_ENTAP_Y_ENTAP_Z_ENLIRTAP_THS_6D59hD4D_ENSIXD_THS1SIXD_THS0TAP_THS4TAP_THS3TAP_THS2TAP_THS1TAP_THS0INT_DUR25AhDUR3DUR2DUR1DUR0QUIET1QUIET0SHOCK1SHOCK0WAKE_UP_THS5BhSINGLE_DOUBLE_TAP0WK_THS5WK_THS4WK_THS3WK_THS2WK_THS1WK_THS0WAKE_UP_DUR5ChFF_DUR5WAKE_DUR1WAKE_DUR0TIMER_HRSLEEP_DUR3SLEEP_DUR2SLEEP_DUR1SLEEP_DUR0FREE_FALL5DhFF_DUR4FF_DUR3FF_DUR2FF_DUR1FF_DUR0FF_THS2FF_THS1FF_THS0MD1_CFG5EhINT1_INACT_STATEINT1_SINGLE_TAPINT1_WUINT1_FFINT1_DOUBLE_TAPINT1_6DINT1_TILTINT1_TIMERMD2_CFG5FhINT2_INACT_STATEINT2_SINGLE_TAPINT2_WUINT2_FFINT2_DOUBLE_TAPINT2_6DINT2_TILTINT2_IRONMASTER_CMD_CODE60hMASTER_CMD_CODE7MASTER_CMD_CODE6MASTER_CMD_CODE5MASTER_CMD_CODE4MASTER_CMD_CODE3MASTER_CMD_CODE2MASTER_CMD_CODE1MASTER_CMD_CODE0SENS_SYNC_SPI_ERROR_CODE61hERROR_CODE7ERROR_CODE6ERROR_CODE5ERROR_CODE4ERROR_CODE3ERROR_CODE2ERROR_CODE1ERROR_CODE0OUT_MAG_RAW_X_L66hD7D6D5D4D3D2D1D0OUT_MAG_RAW_X_H67hD15D14D13D12D11D10D9D8OUT_MAG_RAW_Y_L68hD7D6D5D4D3D2D1D0OUT_MAG_RAW_Y_H69hD15D14D13D12D11D10D9D8OUT_MAG_RAW_Z_L6AhD7D6D5D4D3D2D1D0OUT_MAG_RAW_Z_H6BhD15D14D13D12D11D10D9D8X_OFS_USR73hX_OFS_USR_7X_OFS_USR_6X_OFS_USR_5X_OFS_USR_4X_OFS_USR_3X_OFS_USR_2X_OFS_USR_1X_OFS_USR_0Y_OFS_USR74hY_OFS_USR_7Y_OFS_USR_6Y_OFS_USR_5Y_OFS_USR_4Y_OFS_USR_3Y_OFS_USR_2Y_OFS_USR_1Y_OFS_USR_0Z_OFS_USR75hZ_OFS_USR_7Z_OFS_USR_6Z_OFS_USR_5Z_OFS_USR_4Z_OFS_USR_3Z_OFS_USR_2Z_OFS_USR_1Z_OFS_USR_0AN5040-Rev3page7/120根据保密协议–不可复制AN5040寄存器2.
1嵌入功能寄存器该器件可用的嵌入功能寄存器列表在表3.
嵌入功能寄存器(A区)和表4.
嵌入功能寄存器(B区)中给出.
当FUNC_CFG_EN位被置为"1"并且FUNC_CFG_ACCESS寄存器中的FUNC_CFG_EN_B位被置为0时,第一(A)区的嵌入功能寄存器可以被访问.
当FUNC_CFG_EN和FUNC_CFG_EN_B位在FUNC_CFG_ACCESS寄存器中都被置为"1"时,第二(B)区的嵌入功能寄存器可以被访问.
注意:所有对嵌入功能寄存器内容的修改必须在加速度计和陀螺仪传感器处于下电模式时进行.

表3.
嵌入功能寄存器(A区)寄存器名地址位7位6位5位4位3位2位1位0SLV0_ADD02hSlave0_add6Slave0_add5Slave0_add4Slave0_add3Slave0_add2Slave0_add1Slave0_add0rw_0SLV0_SUBADD03hSlave0_reg7Slave0_reg6Slave0_reg5Slave0_reg4Slave0_reg3Slave0_reg2Slave0_reg1Slave0_reg0SLAVE0_CONFIG04hSlave0_rate1Slave0_rate0Aux_sens_on1Aux_sens_on0Src_modeSlave0_numop2Slave0_numop1Slave0_numop0SLV1_ADD05hSlave1_add6Slave1_add5Slave1_add4Slave1_add3Slave1_add2Slave1_add1Slave1_add0r_1SLV1_SUBADD06hSlave1_reg7Slave1_reg6Slave1_reg5Slave1_reg4Slave1_reg3Slave1_reg2Slave1_reg1Slave1_reg0SLAVE1_CONFIG07hSlave1_rate1Slave1_rate0write_once00Slave1_numop2Slave1_numop1Slave1_numop0SLV2_ADD08hSlave2_add6Slave2_add5Slave2_add4Slave2_add3Slave2_add2Slave2_add1Slave2_add0r_2SLV2_SUBADD09hSlave2_reg7Slave2_reg6Slave2_reg5Slave2_reg4Slave2_reg3Slave2_reg2Slave2_reg1Slave2_reg0SLAVE2_CONFIG0AhSlave2_rate1Slave2_rate0000Slave2_numop2Slave2_numop1Slave2_numop0SLV3_ADD0BhSlave3_add6Slave3_add5Slave3_add4Slave3_add3Slave3_add2Slave3_add1Slave3_add0r_3SLV3_SUBADD0ChSlave3_reg7Slave3_reg6Slave3_reg5Slave3_reg4Slave3_reg3Slave3_reg2Slave3_reg1Slave3_reg0SLAVE3_CONFIG0DhSlave3_rate1Slave3_rate0000Slave3_numop2Slave3_numop1Slave3_numop0DATAWRITE_SRC_MODE_SUB_SLV00EhSlave_dataw7Slave_dataw6Slave_dataw5Slave_dataw4Slave_dataw3Slave_dataw2Slave_dataw1Slave_dataw0CONFIG_PEDO0FhPEDO_FS00ths_min_4ths_min_3ths_min_2ths_min_1ths_min_0AN5040-Rev3page8/120根据保密协议–不可复制AN5040嵌入功能寄存器寄存器名地址位7位6位5位4位3位2位1位0_THS_MINSM_THS13hSM_THS_7SM_THS_6SM_THS_5SM_THS_4SM_THS_3SM_THS_2SM_THS_1SM_THS_0PEDO_DEB_REG14hDEB_TIME_4DEB_TIME_3DEB_TIME_2DEB_TIME_1DEB_TIME_0DEB_STEP_2DEB_STEP_1DEB_STEP_0STEP_COUNT_DELTA15hSC_DELTA_7SC_DELTA_6SC_DELTA_5SC_DELTA_4SC_DELTA_3SC_DELTA_2SC_DELTA_1SC_DELTA_0MAG_SI_XX24hMAG_SI_XX_7MAG_SI_XX_6MAG_SI_XX_5MAG_SI_XX_4MAG_SI_XX_3MAG_SI_XX_2MAG_SI_XX_1MAG_SI_XX_0MAG_SI_XY25hMAG_SI_XY_7MAG_SI_XY_6MAG_SI_XY_5MAG_SI_XY_4MAG_SI_XY_3MAG_SI_XY_2MAG_SI_XY_1MAG_SI_XY_0MAG_SI_XZ26hMAG_SI_XZ_7MAG_SI_XZ_6MAG_SI_XZ_5MAG_SI_XZ_4MAG_SI_XZ_3MAG_SI_XZ_2MAG_SI_XZ_1MAG_SI_XZ_0MAG_SI_YX27hMAG_SI_YX_7MAG_SI_YX_6MAG_SI_YX_5MAG_SI_YX_4MAG_SI_YX_3MAG_SI_YX_2MAG_SI_YX_1MAG_SI_YX_0MAG_SI_YY28hMAG_SI_YY_7MAG_SI_YY_6MAG_SI_YY_5MAG_SI_YY_4MAG_SI_YY_3MAG_SI_YY_2MAG_SI_YY_1MAG_SI_YY_0MAG_SI_YZ29hMAG_SI_YZ_7MAG_SI_YZ_6MAG_SI_YZ_5MAG_SI_YZ_4MAG_SI_YZ_3MAG_SI_YZ_2MAG_SI_YZ_1MAG_SI_YZ_0MAG_SI_ZX2AhMAG_SI_ZX_7MAG_SI_ZX_6MAG_SI_ZX_5MAG_SI_ZX_4MAG_SI_ZX_3MAG_SI_ZX_2MAG_SI_ZX_1MAG_SI_ZX_0MAG_SI_ZY2BhMAG_SI_ZY_7MAG_SI_ZY_6MAG_SI_ZY_5MAG_SI_ZY_4MAG_SI_ZY_3MAG_SI_ZY_2MAG_SI_ZY_1MAG_SI_ZY_0MAG_SI_ZZ2ChMAG_SI_ZZ_7MAG_SI_ZZ_6MAG_SI_ZZ_5MAG_SI_ZZ_4MAG_SI_ZZ_3MAG_SI_ZZ_2MAG_SI_ZZ_1MAG_SI_ZZ_0MAG_OFFX_L2DhMAG_OFFX_L_7MAG_OFFX_L_6MAG_OFFX_L_5MAG_OFFX_L_4MAG_OFFX_L_3MAG_OFFX_L_2MAG_OFFX_L_1MAG_OFFX_L_0MAG_OFFX_H2EhMAG_OFFX_H_7MAG_OFFX_H_6MAG_OFFX_H_5MAG_OFFX_H_4MAG_OFFX_H_3MAG_OFFX_H_2MAG_OFFX_H_1MAG_OFFX_H_0MAG_OFFY_L2FhMAG_OFFY_L_7MAG_OFFY_L_6MAG_OFFY_L_5MAG_OFFY_L_4MAG_OFFY_L_3MAG_OFFY_L_2MAG_OFFY_L_1MAG_OFFY_L_0MAG_OFFY_H30hMAG_OFFY_H_7MAG_OFFY_H_6MAG_OFFY_H_5MAG_OFFY_H_4MAG_OFFY_H_3MAG_OFFY_H_2MAG_OFFY_H_1MAG_OFFY_H_0MAG_OFFZ_L31hMAG_OFFZ_L_7MAG_OFFZ_L_6MAG_OFFZ_L_5MAG_OFFZ_L_4MAG_OFFZ_L_3MAG_OFFZ_L_2MAG_OFFZ_L_1MAG_OFFZ_L_0MAG_OFFZ_H32hMAG_OFFZ_H_7MAG_OFFZ_H_6MAG_OFFZ_H_5MAG_OFFZ_H_4MAG_OFFZ_H_3MAG_OFFZ_H_2MAG_OFFZ_H_1MAG_OFFZ_H_0表4.
嵌入功能寄存器(B区)寄存器名地址位7位6位5位4位3位2位1位0A_WRIST_TILT_LAT50hWRIST_TILT_TIMER7WRIST_TILT_TIMER6WRIST_TILT_TIMER5WRIST_TILT_TIMER4WRIST_TILT_TIMER3WRIST_TILT_TIMER2WRIST_TILT_TIMER1WRIST_TILT_TIMER0A_WRIST_TILT_THS54hWRIST_TILT_THS7WRIST_TILT_THS6WRIST_TILT_THS5WRIST_TILT_THS4WRIST_TILT_THS3WRIST_TILT_THS2WRIST_TILT_THS1WRIST_TILT_THS0A_WRIST_TILT_Mask59hWRIST_TILT_MASK_XposWRIST_TILT_MASK_XnegWRIST_TILT_MASK_YposWRIST_TILT_MASK_YnegWRIST_TILT_MASK_ZposWRIST_TILT_MASK_Zneg00AN5040-Rev3page9/120根据保密协议–不可复制AN5040嵌入功能寄存器3工作模式LSM6DSL提供了3种可能的操作配置:只有加速度计工作,陀螺仪下电;只有陀螺仪工作,加速度计下电;加速度计和陀螺仪均工作,且具有独立的ODR.
该器件提供了较宽的VDD电压范围(从1.
71V至3.
6V)和1.
62V至3.
6V的VDDIO范围.
为避免潜在冲突,在上电时序期间,建议将连接至器件IO引脚的线路设置为主机侧的高阻抗状态.
此外,为保证器件能正确关断,建议将VDD线接地的持续时间保持至少100μs.
施加电源后,LSM6DSL执行一段15ms的启动程序来加载启动参数.
启动完成后,加速度计和陀螺仪均自动配置为下电模式.
加速度计和陀螺仪可分别配置为四种不同的功耗模式:下电,低功耗,正常和高性能模式.
它们可以具有不同的数据率而不受任何限制.
陀螺仪传感器还能够设置为睡眠模式,以降低其功耗.

当加速度计和陀螺仪均工作时,加速度计与陀螺仪同步,两个传感器的数据率是彼此的整数倍.

参考LSM6DSL数据手册,可以利用CTRL1_XL寄存器的输出数据率(ODR_XL)位和CTRL6_C寄存器的高性能禁止(XL_HM_MODE)位,来选择功耗模式和加速度计的输出数据率(表5.
加速度计ODR和功耗模式选择).
表5.
加速度计ODR和功耗模式选择ODR_XL[3:0]ODR[Hz],当XL_HM_MODE=1ODR[Hz],当XL_HM_MODE=00000下电下电10111.
6Hz(仅低功耗)12.
5Hz(高性能)000112.
5Hz(低功耗)12.
5Hz(高性能)001026Hz(低功耗)26Hz(高性能)001152Hz(低功耗)52Hz(高性能)0100104Hz(正常模式)104Hz(高性能)0101208Hz(正常模式)208Hz(高性能)0110416Hz(高性能)416Hz(高性能)0111833Hz(高性能)833Hz(高性能)10001.
66kHz(高性能)1.
66kHz(高性能)10013.
33kHz(高性能)3.
33kHz(高性能)10106.
66kHz(高性能)6.
66kHz(高性能)可以利用CTRL2_G寄存器的输出数据率(ODR_G)位和CTRL7_G寄存器的高性能禁止(G_HM_MODE)位,来选择功耗模式和陀螺仪传感器的输出数据率(表6.
陀螺仪ODR和功耗模式选择).
表6.
陀螺仪ODR和功耗模式选择ODR_G[3:0]ODR[Hz],当G_HM_MODE=1ODR[Hz],当G_HM_MODE=00000下电下电000112.
5Hz(低功耗)12.
5Hz(高性能)001026Hz(低功耗)26Hz(高性能)根据保密协议–不可复制AN5040工作模式AN5040-Rev3page10/120ODR_G[3:0]ODR[Hz],当G_HM_MODE=1ODR[Hz],当G_HM_MODE=0001152Hz(低功耗)52Hz(高性能)0100104Hz(正常模式)104Hz(高性能)0101208Hz(正常模式)208Hz(高性能)0110416Hz(高性能)416Hz(高性能)0111833Hz(高性能)833Hz(高性能)10001.
66kHz(高性能)1.
66kHz(高性能)10013.
33kHz(高性能)3.
33kHz(高性能)10106.
66kHz(高性能)6.
66kHz(高性能)表7.
功耗显示了不同工作模式下功耗典型值.
表7.
功耗ODR[Hz]只有加速度计(在Vdd=1.
8V时)只有陀螺仪(在Vdd=1.
8V时)组合[Acc+Gyro](在Vdd=1.
8V时)下电--3μA1.
6Hz(低功耗)4.
5μA--12.
5Hz(低功耗)9μA232μA240μA26Hz(低功耗)14μA245μA260μA52Hz(低功耗)25μA270μA290μA104Hz(正常模式)44μA325μA360μA208Hz(正常模式)85μA430μA450μA12.
5Hz(高性能)150μA555μA650μA26Hz(高性能)150μA555μA650μA52Hz(高性能)150μA555μA650μA104Hz(高性能)150μA555μA650μA208Hz(高性能)150μA555μA650μA416Hz(高性能)150μA555μA650μA833Hz(高性能)150μA555μA650μA1.
66kHz(高性能)160μA555μA650μA3.
33kHz(高性能)160μA555μA650μA6.
66kHz(高性能)160μA555μA650μA根据保密协议–不可复制AN5040工作模式AN5040-Rev3page11/1203.
1下电模式当加速度计/陀螺仪处于下电模式时,该器件几乎所有的内部模块都会断开,以减小功耗.
数字接口(I2C和SPI)仍然在工作,以便能够与器件进行通信.
保留配置寄存器的内容而不更新输出数据寄存器,可保存进入下电模式前存储器中采样的最后数据.
3.
2高性能模式高性能模式下,所有的加速器/陀螺仪电路始终接通,并通过ODR_XL/ODR_G位来选择生成数据的数据率.
数据中断产生是激活的.
3.
3正常模式高性能模式能够确保其在噪声方面具有最佳性能,而正常模式可进一步降低电流消耗.
加速度计/陀螺仪数据读取链自动打开和关闭,以便节能.
在陀螺仪模块中,只有驱动电路是始终工作的.

数据中断产生是激活的.
3.
4低功耗模式低功耗模式与正常模式可使用的输出数据率不同.
低功耗模式下,低速ODR使能.
可以通过ODR_XL位为加速度计选择四个低速ODR:1.
6Hz、12.
5Hz、26Hz和52Hz.
可以通过ODR_G位为陀螺仪选择三个低速ODR:12.
5Hz、26Hz和52Hz.
数据中断产生是激活的.
3.
5陀螺仪睡眠模式当陀螺仪处于睡眠模式时,陀螺仪模块的振荡驱动电路保持激活.
相比于陀螺仪下电模式,从睡眠模式到低功耗/正常/高性能模式的打开时间大幅度减少.

如果陀螺仪未被配置为下电模式,则当CTRL4_C寄存器的睡眠模式使能(SLEEP)位被置为1时,不论所选陀螺仪ODR为何,它都将进入睡眠模式.
3.
6连接模式LSM6DSL提供了两种不同的连接模式,本文档中作了详细描述:模式1:这是默认启用的连接模式;I2C从接口或SPI(3-/4-线)串口可用.
当器件配置为连接模式1时,SCx/SDx引脚不能浮空.
建议将二者连接到VDDIO,以便优化器件启动过程中的功耗.
模式2:它是传感器集合模式;I2C从接口或SPI(3-/4-线)串口和用于外部传感器连接的I2C接口主机可用.
第7节模式2-传感器集合(sensorhub)模式中描述了此连接模式.
根据保密协议–不可复制AN5040下电模式AN5040-Rev3page12/1203.
7加速度计带宽加速度计采样链路由4个级联主模块表示:一个模拟抗混叠低通滤波器,一个ADC转换器,一个数字低通滤波器和复合数字滤波器组.
如图2.
加速度计滤波链中所示,来自机械部件的模拟信号在被ADC转换之前,会由模拟低通抗混叠滤波器进行滤波.
抗混叠滤波器仅在高性能模式下启用,其带宽取决于所选加速度计ODR,如下表所示.
表8.
加速度计模拟滤波器带宽加速度计ODR[Hz]模拟滤波器BW[Hz]≥16661500833Hz见表13.
要丢弃的加速度计样本+丢弃1个额外样本高性能@ODR>833Hz高性能@ODR≤833Hz见表13.
要丢弃的加速度计样本+丢弃1个额外样本高性能@ODR>833Hz高性能@ODR>833Hz丢弃5个样本低功耗/正常/高性能省电1s1.
@最终值的99%时的稳定时间表13.
要丢弃的加速度计样本目标模式加速度计ODR[Hz]要丢弃的采样数(LPF1_BW_SEL=0和LPF2_XL_EN=0和HP_SLOPE_XL_EN=0)要丢弃的采样数(LPF1_BW_SEL=1和LPF2_XL_EN=0和HP_SLOPE_XL_EN=0)OR(HPCF_XL=00和HP_SLOPE_XL_EN=1)1.
6(低功耗)0(第一个采样正确)112.
5(低功耗)0(第一个采样正确)126(低功耗)0(第一个采样正确)152(低功耗)0(第一个采样正确)1104(正常)0(第一个采样正确)1208(正常)0(第一个采样正确)112.
5(高性能)0(第一个采样正确)1根据保密协议–不可复制AN5040加速度计和陀螺仪开启/关断时间AN5040-Rev3page18/120目标模式加速度计ODR[Hz]要丢弃的采样数(LPF1_BW_SEL=0和LPF2_XL_EN=0和HP_SLOPE_XL_EN=0)要丢弃的采样数(LPF1_BW_SEL=1和LPF2_XL_EN=0和HP_SLOPE_XL_EN=0)OR(HPCF_XL=00和HP_SLOPE_XL_EN=1)26(高性能)0(第一个采样正确)152(高性能)11104(高性能)12208(高性能)12416(高性能)12833(高性能)121666(高性能)223333(高性能)346666(高性能)1313切换其模式或改变陀螺仪ODR时,还必须考虑陀螺仪传感器的开启/关断时间.
用于切换陀螺仪功耗模式或陀螺仪ODR的最大总开启/关闭时间(HP滤波器禁用)显示于表14.
陀螺仪开启/关闭时间(HP禁用).
注:陀螺仪ODR时序不受功耗模式更改的影响(新的配置在当前周期完成后生效).
表14.
陀螺仪开启/关闭时间(HP禁用)起始模式目标模式最大开启/关闭时间(1)省电睡眠70ms省电低功耗/正常70ms+丢弃1个样本省电高性能70ms+见表15.
要丢弃的陀螺仪样本(LPF1禁用)或表16.
对于所有ODR,要丢弃的陀螺仪样本(LPF1使能)睡眠低功耗/正常丢弃1个样本睡眠高性能见表15.
要丢弃的陀螺仪样本(LPF1禁用)或表16.
对于所有ODR,要丢弃的陀螺仪样本(LPF1使能)低功耗/正常高性能丢弃2个样本低功耗/正常低功耗/正常(ODR改变)丢弃1个样本高性能低功耗/正常丢弃1个样本高性能高性能(ODR改变)丢弃2个样本低功耗/正常/高性能省电1s,如果XL和Gyro在下电模式中300s,如果XL不在下电模式中1.
@最终值的99%时的稳定时间根据保密协议–不可复制AN5040加速度计和陀螺仪开启/关断时间AN5040-Rev3page19/120表15.
要丢弃的陀螺仪样本(LPF1禁用)陀螺仪ODR[Hz]要丢弃的采样数12.
5Hz226Hz352Hz3104Hz3208Hz3416Hz3833Hz31.
66kHz1353.
33kHz2706.
66kHz540表16.
对于所有ODR,要丢弃的陀螺仪样本(LPF1使能)陀螺仪ODR[Hz]FTYPE[1:0]要丢弃的采样数12.
5Hz00201210211226Hz00301310311352Hz003013103113104Hz004014104114208Hz004014105114416Hz005016106115833Hz007018109根据保密协议–不可复制AN5040加速度计和陀螺仪开启/关断时间AN5040-Rev3page20/120陀螺仪ODR[Hz]FTYPE[1:0]要丢弃的采样数833Hz1161.
66kHz001350113510135111353.
33kHz002700127010270112706.
66kHz00540015401054011540根据保密协议–不可复制AN5040加速度计和陀螺仪开启/关断时间AN5040-Rev3page21/1204模式1-读取输出数据4.
1启动序列当器件上电时,器件会自动从嵌入的内存中加载校准系数到内部寄存器中.
当启动程序完成时,即,约15ms后,加速度计和陀螺仪自动进入下电模式.
要启用加速度计并采集加速度数据,需要通过CTRL1_XL寄存器选择某一种工作模式.
以下通用线序可用来配置加速度计:1.
写CTRL1_XL=60h//Acc=416Hz(高性能模式)2.
写INT1_CTRL=01h//INT1上,Acc数据准备就绪中断要启用陀螺仪并采集角速度数据,需要通过CTRL2_G来选择某一种工作模式.
以下通用序列可用来配置陀螺仪:1.
写CTRL2_G=60h//Gyro=416Hz(高性能模式)2.
写INT1_CTRL=02h//INT1上,Gyro数据准备就绪中断4.
2使用状态寄存器该器件具有一个STATUS_REG寄存器,应当对该寄存器进行轮询以检查一组新数据何时可用.
当一组新数据在加速度计输出上可用时,XLDA位被置为1;当一组新数据在陀螺仪输出上可用时,GDA位被置为1.
对于加速度计(陀螺仪也是类似的),应当按照如下步骤对输出寄存器进行读取:1.
读STATUS2.
如果XLDA=0,则进入13.
读OUTX_L_XL4.
读OUTX_H_XL5.
读OUTY_L_XL6.
读OUTY_H_XL7.
读OUTZ_L_XL8.
读OUTZ_H_XL9.
数据处理10.
跳到步骤1根据保密协议–不可复制AN5040模式1-读取输出数据AN5040-Rev3page22/1204.
3使用数据准备就绪信号该器件可配置为具有一个HW信号,以确定新的一组测量数据何时可以读取.
对于加速度计传感器,数据准备就绪信号由STATUS_REG寄存器的XLDA位表示.
通过将INT1_CTRL寄存器的INT1_DRDY_XL位置为1,可将该信号驱动至INT1引脚,通过将INT2_CTRL寄存器的INT2_DRDY_XL位置为1,将其驱动至INT2引脚.
对于陀螺仪传感器,数据准备就绪信号由STATUS_REG寄存器的GDA位表示.
通过将INT1_CTRL寄存器的INT1_DRDY_G位置为1,可将该信号驱动至INT1引脚,通过将INT2_CTRL寄存器的INT2_DRDY_XL位置为1,将其驱动至INT2引脚.
当一组新数据生成并可读取时,数据准备就绪信号升高为1.
数据就绪信号可以是锁存的或脉冲的:如果DRDY_PULSE_CFG寄存器的DRDY_PULSED位被置为0(默认值),则数据就绪信号被锁存,并且当其中某一个的较高部分(对于加速度计,为29h、2Bh、2Dh;对于陀螺仪,为23h、25h、27h)被读取时,中断复位.
如果DRDY_PULSE_CFG寄存器的DRDY_PULSED位置为1,则数据就绪信号是脉冲的,并且在中断引脚上观察到的脉冲持续时间为75μs.
脉冲模式不适用于总是锁存的XLDA和GDA位.
图5.
数据准备就绪信号数据DRDY数据读取样本#(N)样本#(N+1)4.
3.
1DRDY屏蔽功能如果将CTRL4_C寄存器的DRDY_MASK位置为1,则加速度计和陀螺仪数据准备就绪信号会被屏蔽,直至完成传感器滤波器稳定稳定.
当FIFO处于激活状态且DRDY_MASK位置为1时,存储在FIFO中的加速计/陀螺仪无效采样等于7FFFh、7FFEh或7FFDh.
这样,存储在FIFO缓冲器中的无效采样被加上了一个标签,因此在数据后处理过程中,可以容易地识别出它们并将其丢弃.
注:DRDY_MASK位仅对加速度计LPF1和陀螺仪LPF2数字滤波器稳定时间起作用.
根据保密协议–不可复制AN5040使用数据准备就绪信号AN5040-Rev3page23/1204.
4使用块数据更新(blockdataupdate,BDU)功能如果读取加速度计/陀螺仪数据特别慢,并且不能(或者不需要)与STATUS_REG寄存器中的XLDA/GDA位或驱动到INT1/INT2引脚的DRDY信号同步,那么强烈建议将CTRL3_C寄存器中的BDU(块数据更新)位置为1.
此功能可以避免读取到不同采样的值(输出数据的高字节和低字节部分).
特别地,当BDU被激活时,每个数据寄存器中始终包含器件产生的最新输出数据,但是,如果发起了对给定寄存器的读取(即OUTX_H_XL(G)和OUTX_L_XL(G),OUTY_H_XL(G)和OUTY_L_XL(G),OUTZ_H_XL(G)和OUTZ_L_XL(G)),这时读数不能更新,直至数据的MSB和LSB部分均被读取.
请注意:BDU只能确保LSB部分和MSB部分同一时刻被采样.
例如,如果读取速度非常慢,则X和Y可在T1读取,Z在T2采样.
4.
5认识输出数据测得的加速度数据被发送到OUTX_H_XL、OUTX_L_XL、OUTY_H_XL、OUTY_L_XL、OUTZ_H_XL和OUTZ_L_XL寄存器.
这些寄存器分别包含作用于X、Y和Z轴的加速度信号的最高有效部分和最低有效部分.
测得的角速率数据被发送到OUTX_H_G、OUTX_L_G、OUTY_H_G、OUTY_L_G、OUTZ_H_G和OUTZ_L_G寄存器.
这些寄存器分别容纳角速率信号在X、Y和Z轴上的最高有效部分和最低有效部分.
X、Y、Z轴的完整输出数据由OUTX_H_XL(G)&OUTX_L_XL(G),OUTY_H_XL(G)&OUTY_L_XL(G),OUTZ_H_XL(G)&OUTZ_L_XL(G)合并提供,表示为2的补码.
加速度数据和角速率数据均表示为16bit的数字.
4.
5.
1大小端选择LSM6DSL允许输出数据寄存器的高低部分(即,OUTX_H_XL(G)与OUTX_L_XL(G),以及OUT_TEMP_H与OUT_TEMP_L)进行交换,以便兼容小端和大端数据表示.
"小端模式"表示数字的低位字节存储在存储器的最低地址中,高位字节存储在最高地址中.
这种模式对应于TCTRL3_C寄存器的BLE位置为0(默认配置).
相反,"大端模式"表示数字的高位字节存储在存储器的最低地址中,低位字节存储在最高地址中.
这种模式对应于TCTRL3_C寄存器的BLE位置为1.
根据保密协议–不可复制AN5040使用块数据更新(blockdataupdate,BDU)功能AN5040-Rev3page24/1204.
5.
2输出数据示例表17.
输出数据寄存器内容vs.
加速度(FS_XL=2g)提供的几个基本示例中,会在器件受给定加速度影响的情况下读取数据寄存器中的数据.
表18.
输出数据寄存器内容vs.
角速率(FS_G=±250dps)提供了陀螺仪数据的一些基本示例,当器件施加了给定的角速率时,在数据寄存器中读取出这些数据.
下表所列的值是在理想器件校准的假设下给出的(即,无偏移,无增益误差,……),实际显示受BLE位的影响.
表17.
输出数据寄存器内容vs.
加速度(FS_XL=2g)加速度值BLE=0BLE=1寄存器地址OUTX_H_XL(29h)OUTX_L_XL(28h)OUTX_H_XL(29h)OUTX_L_XL(28h)0g00h00h00h00h350mg16h69h69h16h1g40h09h09h40h-350mgE9h97h97hE9h-1gBFhF7hF7hBFh表18.
输出数据寄存器内容vs.
角速率(FS_G=±250dps)角速率值BLE=0BLE=1寄存器地址OUTX_H_G(23h)OUTX_L_G(22h)OUTX_H_G(23h)OUTX_L_G(22h)0dps00h00h00h00h100dps2ChA4hA4h2Ch200dps59h49h49h59h-100dpsD3h5Ch5ChD3h-200dpsA6hB7hB7hA6h4.
6加速度计偏移寄存器LSM6DSL提供了加速度计偏移寄存器(X_OFS_USR、Y_OFS_USR、Z_OFS_USR),可用于零g偏移校正,或者用来将偏移量应用于加速度计输出数据.
在偏移寄存器中设置的偏移值从测得的Z轴加速度值内部减去,并内部添加到测得的X轴和Y轴加速度值上;内部处理的数据随后被发送到加速计输出寄存器和FIFO(如果启用).
这些寄存器值以二进制补码的形式表示为8位数据,并且必须在[-127,127]的范围内.
应用于偏移寄存器值的权重[g/LSB]独立于加速度计所选的量程,并可利用CTRL6_C寄存器的USR_OFF_W位进行配置:2-10g/LSB,如果USR_OFF_W位置为0;2-6g/LSB,如果USR_OFF_W位置为1.
4.
7环行功能环行功能可用来自动寻址LSM6DSL寄存器,以进行多字节读取.
基本上,伴随多字节读取操作,所读取的寄存器地址会自动从第一个寄存器转到最后一个寄存器,然后返回第一个寄存器.

4.
7.
1FIFO输出寄存器环行对FIFO输出寄存器FIFO_DATA_OUT_L(3Eh)和FIFO_DATA_OUT_H(3Fh)执行多字节读取操作时,环行功能自动使能.
根据保密协议–不可复制AN5040加速度计偏移寄存器AN5040-Rev3page25/1204.
7.
2状态寄存器环行LSM6DSL器件的状态寄存器也可以实现环行功能,能够识别在一次多字节读取中是否产生了新数据或是否检测到新的中断事件.
通过将CTRL7_G寄存器的ROUNDING_STATUS位置为1,可以使能状态寄存器上的环形功能.
当该功能使能时,通过多字节读取操作,正在读取的寄存器地址在WAKE_UP_SRC(1Bh)、TAP_SRC(1Ch)、D6D_SRC(1Dh)、STATUS_REG(1Eh)和FUNC_SRC1(53h)上自动循环,并返回到WAKE_UP_SRC(1Bh).
4.
7.
3传感器输出寄存器环行以下输出寄存器组也可以使能环行功能:陀螺仪输出寄存器,从OUTX_L_G(22h)到OUTZ_H_G(27h);加速度计输出寄存器,从OUTX_L_XL(28h)到OUTZ_H_XL(2Dh);第一组传感器集合(sensorhub)输出寄存器,从SENSORHUB1_REG(2Eh)到SENSORHUB6_REG(33h);第二组传感器集合(sensorhub)输出寄存器,从SENSORHUB7_REG(34h)到SENSORHUB12_REG(39h).
输出寄存器环行模式可利用CTRL5_C寄存器的ROUNDING[2:0]位进行配置,如表19.
输出寄存器环行模式所示.
表19.
输出寄存器环行模式ROUNDING[2:0]环行模式000无环行001只有加速度计010只有陀螺仪011陀螺仪+加速度计100只有第1组传感器集合(sensorhub)101加速度计+第1组传感器集合(sensorhub)110陀螺仪+加速度计+第1组传感器集合(sensorhub)+第2组传感器集合(sensorhub)111陀螺仪+加速度计+第1组传感器集合(sensorhub)根据保密协议–不可复制AN5040环行功能AN5040-Rev3page26/1204.
8边沿感应和电平感应数据使能(DEN)通过使能CTRL6_C中的TRIG_EN、LVL1_EN和LVL2_EN位,LSM6DSL可允许外部触发电平识别.
有四种不同模式可供选择(表20.
DEN配置):边沿感应触发模式电平感应触发模式电平感应锁存模式电平感应FIFO使能模式数据使能(DEN)输入信号在INT2引脚上被驱动,当其中一个触发模式使能时,INT2被配置为输入引脚.
DEN功能仅在陀螺仪数据上被默认激活.
要将此功能扩展到加速度计数据,CTRL4_C中的DEN_XL_EN位必须置为1.
DEN有效电平默认为低电平.
通过将CTRL5_C中的DEN_LH位置为1,可以将其更改为高电平有效.
表20.
DEN配置TRIG_ENLVL1_ENLVL2_EN功能100边沿感应触发模式010电平感应触发模式011电平感应锁存模式110电平感应FIFO使能模式4.
8.
1边沿感应触发模式可以通过将CTRL6_C中的TRIG_EN位置为1,并将CTRL6_C中的LVL1_EN、LVL2_EN位置为0,来启用边沿感应触发模式.
只有当低通滤波器LPF2禁用(CTRL8_XL寄存器中的LPF2_XL_EN=0)时,边沿感应触发才工作.
一旦使能了边沿感应触发模式,FIFO缓冲器和输出寄存器就会被填充上DEN输入信号每个上升沿(如果DEN_LH位等于1)或下降沿(如果DEN_LH位等于0)之后所获取的第一个采样.
图6.
边沿感应触发模式,DEN低电平有效用红色圆圈表示在下降沿之后(DEN低电平有效)采集的采样.
图6.
边沿感应触发模式,DEN低电平有效边沿感应触发模式启用后,仅对陀螺仪输出寄存器起作用.
DRDY_G仅与降低采样数据相关,而加速计输出寄存器和DRDY_XL则根据ODR_XL进行更新.
如果DEN_XL_EN位置为1,则加速计传感器也会被降低采样.
这种情况下,陀螺仪和加速度计必须设置为ODR相同的组合模式.
通过将陀螺仪设置为下电模式,可以使用加速度计独立模式.
这种情况下,DRDY_XL只与降低采样数据相关.
请注意,在更新数据寄存器之前,DEN触发器会内部锁存:如果在此事件之后发生触发事件,那么DEN将在下一个ODR中进行确认.
根据保密协议–不可复制AN5040边沿感应和电平感应数据使能(DEN)AN5040-Rev3page27/120对于FIFO中的边沿感应触发器,有三种可能的配置,描述如下:1.
只有陀螺仪处于触发模式,不能保存在FIFO中:这种情况下,FIFO只与加速度计相关,并且正常工作.
2.
只有陀螺仪处于触发模式,存储于FIFO中:这种情况下,FIFO_CTRL3寄存器的陀螺仪抽取位DEC_FIFO_GYRO[2:0]必须置为001(FIFO中的陀螺仪传感器不带抽取).
要实现它,FIFO需由外部触发器驱动.
采用这种配置时,由于在触发发生时也写入了加速度计数据,所以可能发生加速度计数据重复或丢失.
3.
陀螺仪和加速度计处于触发模式,并保存在FIFO中:通过将DEN_XL_EN置为1,并将FIFO_CTRL3寄存器的陀螺仪和加速度计抽取位DEC_FIFO_GYRO[2:0]和DEC_FIFO_XL[2:0]置为001(FIFO中的陀螺仪和加速度计无抽取).
这种情况下,当触发发生时,两个传感器的数据都会写入FIFO中.
边沿感应触发模式可支持相机帧与陀螺仪采样同步,用于电子图像稳定(ElectricalImageStabilization,EIS)应用.
来自相机模块的同步信号必须连接到INT2引脚.
在下面所示的例子中,FIFO被配置为将陀螺仪数据和加速度计数据都存储在FIFO缓冲器中;当DEN信号切换时,数据在上升沿写入FIFO中.
1.
将09h写入FIFO_CTRL3//使能FIFO中的陀螺仪和加速度计(无抽取)2.
将26h写入FIFO_CTRL5//将FIFO设置为Continue模式,FIFOODR=104Hz3.
将80h写入CTRL6_C//使能边沿感应触发//INT2引脚切换为输入模式(DEN信号)4.
将80h写入CTRL4_C//将DEN功能扩展到加速计传感器5.
将40h写入CTRL1_XL//开启加速度计:ODR_XL=104Hz,FS_XL=±2g6.
将4Ch写入CTRL2_G//开启陀螺仪//ODR_G=104Hz,FS_G=±2000dps4.
8.
2电平感应触发模式可以通过将CTRL6_C中的LVL1_EN位置为1,并将CTRL6_C中的TRIG_EN、LVL2_EN位置为0,来使能电平感应触发模式.
一旦使能电平感应触发模式,那么如果DEN电平有效,则所选数据(在输出寄存器和FIFO中)的LSB位将被替换为1;如果DEN电平未被激活,则所选数据的LSB位会被替换为0.
所选数据可以是加速度计或陀螺仪传感器的X、Y、Z轴,可通过CTRL9_XL中的DEN_X、DEN_Y、DEN_Z和DEN_XL_G位来定义.
所有数据都可以根据FIFO设置存储在FIFO中.
图7.
电平感应触发模式,DEN低电平有效以红色圆圈显示LSB=0(DEN未激活)时存储在FIFO中的样本,蓝色圆圈表示LSB=1(DEN激活)时存储在FIFO中的样本.
图7.
电平感应触发模式,DEN低电平有效当电平感应触发模式使能时,DEN信号也可用于过滤INT1引脚上的数据就绪信号.
只有在DEN引脚处于激活状态时,INT1才会显示数据就绪信息.
为此,CTRL4_C寄存器的DEN_DRDY_INT1位必须置为1.
中断信号可以根据DRDY_PULSE_CFG寄存器的DRDY_PULSED位进行锁存或脉冲.
图8.
电平感应触发模式,DEN低电平有效,DEN_DRDY在INT1上显示了当DEN电平低(有效状态)时INT1上的数据就绪示例.
根据保密协议–不可复制AN5040边沿感应和电平感应数据使能(DEN)AN5040-Rev3page28/120图8.
电平感应触发模式,DEN低电平有效,DEN_DRDY在INT1上根据保密协议–不可复制AN5040边沿感应和电平感应数据使能(DEN)AN5040-Rev3page29/1204.
8.
3电平感应锁存模式可以通过将CTRL6_C中的LVL1_EN和LVL2_EN位设置为1,并将CTRL6_C中的TRIG_EN位设置为0,来使能电平感应锁存模式.
当使能电平感应锁存模式时,所选数据(在输出寄存器和FIFO中)的LSB位通常设置为0,并且仅在DEN引脚上一个脉冲之后的第一个采样时变为1.
数据可以通过CTRL9_XL中的DEN_X、DEN_Y、DEN_Z和DEN_XL_G位来选择.
图9.
电平感应锁存模式,DEN低电平有效显示了DEN低电平有效时电平感应锁存模式的示例.
在DEN引脚上的脉冲之后,带红色圆圈的采样在LSB位上的值为1.
所有其他样本的LSB位都为0.
图9.
电平感应锁存模式,DEN低电平有效当使能电平感应锁存模式,并且CTRL4_C寄存器的DEN_DRDY_INT1位设置为1时,INT1引脚上会产生一个脉冲,对应于DEN脉冲出现后产生的第一个采样可用(见图10.
电平感应锁存模式,DEN低电平有效,DEN_DRDY在INT1上).
图10.
电平感应锁存模式,DEN低电平有效,DEN_DRDY在INT1上根据保密协议–不可复制AN5040边沿感应和电平感应数据使能(DEN)AN5040-Rev3page30/1204.
8.
4启用电平感应FIFO可通过将CTRL6_C中的TRIG_EN和LVL1_EN位设置为1,并将CTRL6_C中的LVL2_EN位设置为0,来启用电平感应FIFO使能模式.
一旦启用了电平感应FIFO使能模式,只有当DEN引脚为有效状态时,才会将数据存储到FIFO中.
此模式下,所选数据的LSB位(在输出寄存器和FIFO中),对于奇数DEN事件,会替代为0,对于偶数DEN事件,会替代为1.
该功能可将当前DEN激活窗口期间存储在FIFO中的数据与下一个DEN激活窗口期间存储在FIFO中的数据区分开来.
所选数据可以是加速度计或陀螺仪传感器的X、Y、Z轴.
数据可以通过CTRL9_XL中的DEN_X、DEN_Y、DEN_Z和DEN_XL_G位来选择.
图11.
电平感应FIFO使能模式,DEN低电平有效中显示了电平感应FIFO使能模式的示例,红圈表示存储在FIFO中、LSB位为0的采样,而蓝圈表示LSB位为1的采样.
图11.
电平感应FIFO使能模式,DEN低电平有效4.
8.
5用于DEN冲压的LSB选择当使用电平感应模式(触发或锁存)时,可以选择哪个LSB必须包含与DEN引脚特性有关的信息.
根据CTRL9_XL寄存器的DEN_X、DEN_Y、DEN_Z和DEN_XL_G位,可以在加速度计或陀螺仪轴上标记此信息.
将DEN_X、DEN_Y、DEN_Z位置为1时,DEN信息会被标记在由DEN_XL_G位选择的传感器对应轴的LSB中.
通过将DEN_XL_G设置为0,可将DEN信息标记在选定的陀螺仪轴中,而将DEN_XL_G设置为1,可将DEN信息标记在所选的加速度计轴中.
默认情况下,这些位被配置为包含所有陀螺仪轴上的信息.
根据保密协议–不可复制AN5040边沿感应和电平感应数据使能(DEN)AN5040-Rev3page31/1205中断生成LSM6DSL器件中,中断产生仅以加速度计数据为基础,因此要产生中断,加速度计传感器必须设置为活动工作模式(不能处于下电模式);陀螺仪传感器可配置为下电模式,因为它与中断产生无关.

可对中断发生器进行配置,来检测:自由落体;唤醒;6D/4D方向检测;单击和双击感测;活动/不活动识别.
此外,LSM6DSL能够高效运行Android中特定的传感器相关功能,可节能并具有更快的反应速度.
以下功能仅在使用加速度计的硬件中实现:大幅运动检测;相对倾斜;绝对手腕倾斜;计步功能;时间戳.
所有这些中断信号,以及FIFO中断信号,可被独立地驱动至INT1和INT2中断引脚,或通过读取特定源寄存器位分别对其进行检测.
必须使用CTRL3_C寄存器的H_LACTIVE位来选择中断引脚极性.
如果该位置为0(默认值),则中断引脚为高电平激活,当检测到相关中断条件时,这些引脚从低电平变为高电平.
否则,如果H_LACTIVE位置为1(低电平激活),则中断引脚正常为高电平,当达到中断条件时,从高电平变为低电平.

CTR3_C的PP_OD位允许将中断引脚性质从推挽更改为开漏.
如果PP_OD位置为0,则中断引脚处于推挽配置(对于高电平和低电平均为低阻抗输出).
当PP_OD位置为1时,只有中断活动状态是低阻抗输出.
TAP_CFG的LIR位可支持中断信号应用锁存模式.
LIR位置为1时,中断引脚一旦被产生,就必须通过读取相关中断源寄存器才能将其复位.
如果LIR位置为0,则当不再检测到中断条件或一定时间后,中断信号可自动复位.
根据保密协议–不可复制AN5040中断生成AN5040-Rev3page32/1205.
1中断引脚配置该器件具有两个引脚,可激活引脚来生成数据准备就绪或中断信号.
这些引脚的功能,对于INT1引脚是通过MD1_CFG和INT1_CTRL寄存器来进行选择,对于INT2引脚是通过MD2_CFG和INT2_CTRL寄存器来进行选择.
以下概述给出了这些中断控制寄存器的简要描述;这些位的默认值等于0,对应于"禁用".
要使能引脚上特定中断信号的线路,须将有关位置为1.
表21.
INT1_CTRL寄存器b7b6b5b4b3b2b1b0INT1_STEP_DETECTORINT1_SIGN_MOTINT1_FULL_FLAGINT1_FIFO_OVRINT1_FTHINT1_BOOTINT1_DRDY_GINT1_DRDY_XLINT1_STEP_DETECTOR:INT1上计步器步伐检测中断INT1_SIGN_MOT:INT1上大幅运动中断INT1_FULL_FLAG:INT1上FIFO全满标志中断INT1_FIFO_OVR:INT1上FIFO溢出标志中断INT1_FTH:INT1上FIFO阈值中断INT1_BOOT:INT1上启动中断INT1_DRDY_G:INT1上陀螺仪数据准备就绪INT1_DRDY_XL:INT1上加速度计数据准备就绪表22.
MD1_CFG寄存器b7b6b5b4b3b2b1b0INT1_INACT_STATEINT1_SINGLE_TAPINT1_WUINT1_FFINT1_DOUBLE_TAPINT1_6DINT1_TILTINT1_TIMERINT1_INACT_STATE:INT1上非活动中断INT1_SINGLE_TAP:INT1上单击中断INT1_WU:INT1上唤醒中断INT1_FF:INT1上自由落体中断INT1_DOUBLE_TAP:INT1上双击中断INT1_6D:INT1上6D检测中断INT1_TILT:INT1上倾斜中断INT1_TIMER:INT1上定时器中断表23.
INT2_CTRL寄存器b7b6b5b4b3b2b1b0INT2_STEP_DELTAINT2_STEP_COUNT_OVINT2_FULL_FLAGINT2_FIFO_OVRINT2_FTHINT2_DRDY_TEMPINT2_DRDY_GINT2_DRDY_XL根据保密协议–不可复制AN5040中断引脚配置AN5040-Rev3page33/120INT2_STEP_DELTA:INT2上计步器步数识别时间变化量中断INT2_STEP_COUNT_OV:INT2上步数计数器溢出中断INT2_FULL_FLAG:INT2上FIFO全满标志中断INT2_FIFO_OVR:INT2上FIFO溢出标志中断INT2_FTH:INT2上FIFO阈值中断INT2_DRDY_TEMP:INT2上温度数据准备就绪INT2_DRDY_G:INT2上陀螺仪数据准备就绪INT2_DRDY_XL:INT2上加速度计数据准备就绪表24.
MD2_CFG寄存器b7b6b5b4b3b2b1b0INT2_INACT_STATEINT2_SINGLE_TAPINT2_WUINT2_FFINT2_DOUBLE_TAPINT2_6DINT2_TILTINT2_IRONINT2_INACT_STATE:INT2上非活动中断INT2_SINGLE_TAP:INT2上单击中断INT2_WU:INT2上唤醒中断INT2_FF:INT2上自由落体中断INT2_DOUBLE_TAP:INT2上双击中断INT2_6D:INT2上6D检测中断INT2_TILT:INT2上倾斜中断INT2_IRON:INT2上软铁/硬铁中断如果多个中断信号发送到同一个引脚上(INTx),则该引脚的逻辑电平为所选中断信号组合的"或".
要识别出是什么事件产生了中断条件,则须读取相关状态寄存器:WAKE_UP_SRC、D6D_SRC、TAP_SRC、FUNC_SRC1和FUNC_SRC2.
CTRL4_C寄存器的INT2_on_INT1引脚能够将所有已使能的中断信号进行逻辑"与"后驱动到INT1引脚上(通过将该位置为1).
当该位置为0时,中断信号分配到INT1和INT2引脚上.
必须通过设置TAP_CFG寄存器中的INTERRUPTS_ENABLE位来使能基本中断(6D/4D、自由落体、唤醒、点击、不活动).
根据保密协议–不可复制AN5040中断引脚配置AN5040-Rev3page34/1205.
2自由落体中断自由落体检测涉及特定的寄存器配置,可以识别器件何时处于自由落体:各轴所测得的加速度均为0.
真实情境下,一个"自由落体"定义为大约零-g水平,其中所有加速度均足够小,可以产生中断.
自由落体事件检测相关的可配置的阈值和持续时间参数:阈值参数定义了自由落体的幅度;持续时间参数定义了可识别的自由落体中断事件的最小持续时间(图12.
自由落体中断).
根据保密协议–不可复制AN5040自由落体中断AN5040-Rev3page35/120图12.
自由落体中断Z0gYX+FF阈值-FF阈值自由落体FF中断FF持续时间根据保密协议–不可复制AN5040自由落体中断AN5040-Rev3page36/120通过将TAP_CFG寄存器中的INTERRUPTS_ENABLE位置为1,可使能该自由落体中断信号,将MD1_CFG寄存器的INT1_FF位或MD2_CFG寄存器的INT2_FF位置为1,可将该中断信号驱动至两个中断引脚上;还可通过读取WAKE_UP_SRC寄存器的FF_IA位对其进行检查.
如果锁存模式禁用(TAP_CFG的LIR位置为0),则当检测不到自由落体条件时,中断信号会自动复位.
如果锁存模式使能且自由落体中断信号被驱动至中断引脚,那么当发生自由落体事件且产生了中断引脚时,必须通过读取WAKE_UP_SRC寄存器来将其复位.
如果使能了锁存模式,但是中断信号未驱动至中断引脚,那么锁存功能不起作用.
FREE_FALL寄存器用来配置阈值参数;无符号阈值与FF_THS[2:0]的值相关,如表25.
自由落体阈值LSB值所示.
此表中给出的值对于每个加速度计满量程值均有效.
表25.
自由落体阈值LSB值FREE_FALL-FF_THS[2:0]阈值LSB值[mg]000156001219010250011312100344101406110469111500持续时间在N/ODR_XL中测得,其中N为FREE_FALL/WAKE_UP_DUR寄存器FF_DUR[5:0]字段的内容,ODR_XL为加速度计数据率.
下面给出了自由落体事件识别的基本软件程序.
1.
将60h写入CTRL1_XL//启动加速度计//ODR_XL=416Hz,FS_XL=±2g2.
将81h写入TAP_CFG//使能中断并锁存中断3.
将00h写入WAKE_UP_DUR//设置事件持续时间(FF_DUR5位)4.
将33h写入FREE_FALL//设置FF阈值(FF_THS[2:0]=011b)//设置六个采样事件持续时间(FF_DUR[5:0]=000110b)5.
将10h写入MD1_CFG//FF中断驱动至INT1引脚示例代码中利用设置为312mg的阈值,用于自由落体识别,该事件由硬件通过INT1引脚进行通知.
FREE_FALL/WAKE_UP_DUR寄存器的FF_DUR[5:0]字段像这样配置:忽略短于6/ODR_XL=6/412Hz~=15ms的事件,以避免错误检测.
5.
3唤醒中断LSM6DSL器件中,唤醒功能可利用斜率滤波器(更多详细信息参见第3.
7.
1节加速度计斜率滤波器)或高通数字滤波器来实现,如图2.
加速度计滤波链所示.
所用滤波器可通过TAP_CFG寄存器的SLOPE_FDS位来选择:如果该位被置为0(默认值),则使用斜率滤波器;如果被置为1,则使用HPF数字滤波器.
如果一定数量的连续滤波数据超出了所配置阈值,则产生唤醒中断信号(图13.

唤醒中断(利用斜率滤波器)).
该无符号阈值由WAKE_UP_THS寄存器的WK_THS[5:0]位来定义;这6bit的1LSB值取决于所选加速度计满量程:1LSB=(FS_XL)/(26).
阈值可应用于正负数据:对于唤醒中断生成,滤波数据的绝对值必须大于阈值.

根据保密协议–不可复制AN5040唤醒中断AN5040-Rev3page37/120持续时间参数定义了所识别的唤醒事件的最小持续时间;其值由WAKE_UP_DUR寄存器的WAKE_DUR[1:0]位来设置:1LSB对应于1/ODR_XL时间,这里ODR_XL为加速度计输出数据率.
要避免因输入信号寄生尖峰而产生不期望的唤醒中断,适当定义持续时间参数是非常重要的.
通过将TAP_CFG寄存器中的INTERRUPTS_ENABLE位置为1,可使能该中断信号,将MD1_CFG寄存器的INT1_WU位或MD2_CFG寄存器的INT2_WU位置为1,可将该中断信号驱动至两个中断引脚上;还可通过读取WAKE_UP_SRC寄存器的WU_IA位对其进行检查.
WAKE_UP_SRC寄存器的X_WU、Y_WU、Z_WU位指示哪个轴触发了唤醒事件.
图13.
唤醒中断(利用斜率滤波器)+唤醒阈值-唤醒阈值唤醒中断唤醒持续时间加速度斜率Slope(tn)=[acc(tn)-acc(tn-1)]/2acc(tn)acc(tn-1)如果锁存模式禁用(TAP_CFG的LIR位置为0),则当滤波数据低于阈值时,中断信号会自动复位.
如果锁存模式使能且唤醒中断信号被驱动至中断引脚,那么当发生唤醒事件且产生了中断引脚时,必须通过读取WAKE_UP_SRC寄存器来将其复位.
如果使能了锁存模式,但是中断信号未驱动至中断引脚,那么锁存功能不起作用.
以下给出使用高通数字滤波器进行唤醒事件识别的基本软件程序.
1.
将60h写入CTRL1_XL//启动加速度计//ODR_XL=416Hz,FS_XL=±2g2.
将90h写入TAP_CFG//使能中断并应用高通数字滤波器;锁存//模式禁用3.
将00h写入WAKE_UP_DUR//无持续4.
将02h写入WAKE_UP_THS//设置唤醒阈值5.
将20h写入MD1_CFG//唤醒中断驱动至INT1引脚根据保密协议–不可复制AN5040唤醒中断AN5040-Rev3page38/120由于持续时间被置为0,因此每个X、Y、Z滤波数据超出所配置阈值时,会生成唤醒中断信号.
本例中,WAKE_UP_THS寄存器的WK_THS字段被置为000010b,因此活动/不活动阈值为62.
5mg(=2*FS_XL/26).
由于唤醒功能利用斜率/高通数字滤波器实现,因此有必要考虑此功能使能后滤波器的稳定时间.
例如,当使用斜率滤波器时(不过对于使用高通数字滤波器要做类似考虑),唤醒功能基于阈值与两次(x,y,z)采样(当前和前次)加速度差的一半相比较(参考第3.
7.
1节加速度计斜率滤波器).
在第一个采样处,斜率滤波器输出计算为当前采样[例如,(x,y,z)=(0,0,1g)]与前次采样(x,y,z)=(0,0,0)(因为前次采样不存在)之差的一半.
因此,在z轴上,斜率滤波器的第一个输出值为(1g-0)/2=500mg,发生伪中断事件的情况下,该值可能会大于阈值.
中断信号保持为高电平,并持续1个ODR,然后变为低电平.
要避免产生这种伪中断,可以有多种解决方案.
下面三个备选解决方案(对于斜率滤波器的情形):a.
忽略第一个产生的唤醒信号;b.
将中断信号驱动到INT1/2引脚前,增加一段高于1个ODR的等待时间;c.
初始时设置一个较高的ODR(833Hz),这样会在较短时间内产生最初的2个采样,然后按下述步骤设置所需ODR(例如12.
5Hz)并驱动中断信号至引脚:1.
将00h写入WAKE_UP_DUR//无持续2.
将02h写入WAKE_UP_THS//设置唤醒阈值3.
将80h写入TAP_CFG//使能中断并应用斜率滤波器;锁存模式禁用4.
将70h写入CTRL1_XL//启动加速度计//ODR_XL=833Hz,FS_XL=±2g5.
等待4ms//插入(减少)等待时间6.
将10h写入CTRL1_XL//ODR_XL=12.
5Hz7.
将20h写入MD1_CFG//唤醒中断驱动至INT1引脚根据保密协议–不可复制AN5040唤醒中断AN5040-Rev3page39/1205.
46D/4D定向检测LSM6DSL器件具有检测空间中器件方向的能力,能够容易地实现移动设备的节能程序和自动图像旋转.

5.
4.
16D定向检测可以检测器件在空间中的六个方向;当器件从一个方向转向另一个方向时,中断信号产生.
只要保持其位置,中断就不会重新产生.
对于两个连续采样,当只有一个轴超出所选阈值,其他两轴上测得的加速度值低于阈值时,会产生6D中断:D6D_SRC寄存器的ZH,ZL,YH,YL,XH,XL位表示出哪个轴触发了6D事件.
更具体地说:表26.
D6D_SRC寄存器b7b6b5b4b3b2b1b0DEN_DRDYD6D_IAZHZLYHYLXHXL当器件从一个方向转向另一个方向时,D6D_IA被置为高电平.
当垂直于Z(Y,X)轴的面几乎是平面,Z(Y,X)轴上测得的加速度为正且绝对值大于阈值时,ZH(YH,XH)被置为高电平.
当垂直于(Y,X)轴的面几乎是平面,Z(Y,X)轴上测得的加速度为负且绝对值大于阈值时,ZL(YL,XL)被置为高电平.
TAP_THS_6D寄存器的SIXD_THS[1:0]位用来选择阈值,该阈值用于检测器件方向变化.
表27.
4D/6D功能阈值中给出的阈值对于每种加速度计的量程均有效.
表27.
4D/6D功能阈值SIXD_THS[1:0]阈值[degrees]0080017010601150通过将CTRL8_XL寄存器的LOW_PASS_ON_6D位置为1,此低通滤波器LPF2还可用于6D功能.
通过将TAP_CFG寄存器中的INTERRUPTS_ENABLE位置为1,可使能该中断信号,将MD1_CFG寄存器的INT1_6D位或MD2_CFG寄存器的INT2_6D位置为1,可将该中断信号驱动至两个中断引脚上;还可通过读取D6D_SRC寄存器的D6D_IA位对其进行检查.
如果锁存模式禁用(TAP_CFG的LIR位置为0),则中断信号仅激活1/ODR_XL[s],然后自动取消(ODR_XL为加速度计输出数据率).
如果锁存模式使能,并且6D中断信号被驱动至中断引脚,那么当方向发生了改变且中断引脚被产生时,对D6D_SRC寄存器的读取会清除中断信号,器件将识别另一个不同的方向.
如果使能了锁存模式,但是中断信号未驱动至中断引脚,那么锁存功能不起作用.
参考图14.
6D识别方向中所示的六种可能情形,表28.
6D定位下的D6D_SRC寄存器中显示了每个位置对应的D6D_SRC寄存器内容所示.
根据保密协议–不可复制AN50406D/4D定向检测AN5040-Rev3page40/120图14.
6D识别方向XYZXYZXYZXYZXYZXYZ(a)(c)(e)(b)(d)(f)表28.
6D定位下的D6D_SRC寄存器用例D6D_IAZHZHYHYLXHXL(a)1001000(b)1000001(c)1000010(d)1000100(e)1100000(f)10100006D方向检测的基本软件例程如下.
1.
将60h写入CTRL1_XL//启动加速度计//ODR_XL=416Hz,FS_XL=±2g2.
将80h写入TAP_CFG//使能中断;锁存模式禁用3.
将40h写入TAP_THS_6D//设置6D阈值(SIXD_THS[1:0]=10b=60degrees)4.
将01h写入CTRL8_XL//将LPF2滤波器用于6D功能5.
将04h写入MD1_CFG//6D中断驱动至INT1引脚根据保密协议–不可复制AN50406D/4D定向检测AN5040-Rev3page41/1205.
4.
24D方向检测4D方向功能是6D功能的子集,它被专门定义来进行移动设备中的纵向和横向计算.
它可通过将TAP_THS_6D寄存器的D4D_EN位置为1来使能.
这种配置下,Z轴位置检测被禁用,因此位置识别减少为表28.
6D定位下的D6D_SRC寄存器的(a)、(b)、(c)和(d)的情形.
5.
5单击和双击识别LSM6DSL具有单击和双击识别功能,能够在极少加载软件的情况下帮助创建人机界面.
器件可配置为沿任意方向敲击时在专用引脚上输出中断信号.
如果传感器施加单个输入激励,那么它会在中断引脚INT1和/或INT2上产生中断请求.
更先进的功能可在识别到两次输入激励(两个事件的间隔时间可通过程序设定)时生成中断请求,从而可实现类似鼠标按键的功能.

LSM6DSL器件中,单击和双击识别功能利用两个连续加速度采样之间的斜率来检测点击事件;斜率数据利用以下公式计算:slope(tn)=[acc(tn)-acc(tn-1)]/2此功能可完全由用户编程,利用专门的寄存器组对所期望的斜率数据幅度和时序进行编程.

单击和双击识别独立于所选输出数据率而工作.
对于这些功能,建议的加速度计ODR为416Hz和833Hz.
要启用单击和双击识别功能,必须将TAP_CFG寄存器中的INTERRUPTS_ENABLE位置为1.
根据保密协议–不可复制AN5040单击和双击识别AN5040-Rev3page42/1205.
5.
1单击如果器件配置为单击事件检测,那么当所选通道的斜率数据超出了所编程阈值时,会产生一个中断,并在Shock时间窗口内返回低电平.
在单击情况下,如果TAP_CFG寄存器的LIR位被置为0,则中断在Quiet窗口持续时间内保持激活.
为了在单击中断信号上使能锁存功能,LIR位和MD1_CFG(MD2_CFG)的INT1_DOUBLE_TAP(或INT2_DOUBLE_TAP)位必须置为1:中断保持激活,直至TAP_SRC寄存器被读取.
要实现仅使能单击识别,则WAKE_UP_THS的SINGLE_DOUBLE_TAP位必须置为0.
图15.
单击事件识别的情况(a)中识别出了单击事件,而在情况(b)中,由于在经过Shock时间窗口之后斜率数据低于阈值,因此未识别出点击.
图15.
单击事件识别SHOCK+点击阈值中断(a)(b)SHOCK-点击阈值斜率根据保密协议–不可复制AN5040单击和双击识别AN5040-Rev3page43/1205.
5.
2双击如果器件配置为双击事件检测,那么在第一次点击后、识别出第二次点击时,生成中断.
只有当事件满足Shock、Latency和Duration时间窗口所定义的规则时,才进行第二次点击识别.
特别的是,识别出第一次敲击后,第二次敲击检测过程会延迟Quiet时间所定义的时间间隔.
这意味着,识别出第一次敲击后,只有在Quiet窗口之后、Duration窗口结束前,斜率数据超过阈值时,才开始第二次敲击识别过程.
图16.
双击事件识别(LIR位=0)的情况(a)中,正确识别出了双击事件,而在情况(b)中,由于在经过窗口间隔之后斜率数据超出了阈值,因此未产生中断.
一旦第二次点击检测过程开始,则会按照与第一次相同的规则来识别第二次点击:在Shock窗口结束之前,斜率数据必须返回到低于阈值之下.
要避免因输入信号伪突变而产生不期望的点击,适当定义Quiet窗口是非常重要的.
在双击情况下,如果TAP_CFG寄存器的LIR位被置为0,则中断在Quiet窗口持续时间内保持激活.
如果LIR位被置为1,则中断保持激活直至TAP_SRC寄存器被读取.
图16.
双击事件识别(LIR位=0)+点击阈值中断(a)(b)中断斜率SHOCKQUIETDURATIONSHOCKQUIETDURATIONSHOCK-点击阈值QUIET根据保密协议–不可复制AN5040单击和双击识别AN5040-Rev3page44/1205.
5.
3单击和双击识别配置可对LSM6DSL器件进行配置,使其在任一方向发生点击(一次或两次)时均输出中断信号:TAP_CFG寄存器的TAP_X_EN、TAP_Y_EN和TAP_Z_EN位必须置为1,分别使能X、Y、Z方向上的点击识别.
此外,TAP_CFG寄存器的INTERRUPTS_ENABLE位必须设置为1.
点击识别功能的可配置参数为点击阈值和Shock、Quiet及Duration时间窗.
TAP_THS_6D寄存器的TAP_THS[4:0]位用来选择用于检测点击事件的无符号阈值.
这5bit的1LSB值取决于所选加速度计满量程:1LSB=(FS_XL)/(25).
无符号阈值可应用于正负斜率数据上.
注:通过TAP_THS_6D寄存器的TAP_THS[4:0]位设置的点击阈值(以mg为单位)必须高于通过WAKE_UP_THS寄存器的WK_THS[5:0]位设置的唤醒阈值(以mg为单位).
Shock时间窗口定义了超阈值事件的最大持续时间:在Shock窗口结束前,加速度必须返回到低于阈值之下,否则不能检测到该点击事件.
INT_DUR2寄存器的SHOCK[1:0]位用来设置Shock时间窗口值:这几个位的默认值为00b,对应于4/ODR_XL的时间,这里ODR_XL为加速度计输出数据率.
如果SHOCK[1:0]位被置为其他不同的值,那么1LSB对应于8、ODR_XL的时间.
双击情况下,Quiet时间窗口定义了第一次点击识别后的时间,期间不能发生超阈值.
当锁存模式禁用(TAP_CFG的LIR位置为0)时,Quiet时间还定义了中断脉冲的长度(单击和双击情况下均如此).
INT_DUR2寄存器的QUIET[1:0]位用来设置Quiet时间窗口值:这几个位的默认值为00b,对应于2/ODR_XL的时间,这里ODR_XL为加速度计输出数据率.
如果QUIET[1:0]位被置为其他不同的值,那么1LSB对应于4/ODR_XL的时间.
双击情况下,Duration时间窗口定义了连续两次检测到点击之间的最大时间.
Duration时间周期在第一次点击的Quiet时间结束后开始.
INT_DUR2寄存器的DUR[3:0]位用来设置Duration时间窗口值:这几个位的默认值为0000b,对应于16/ODR_XL的时间,这里ODR_XL为加速度计输出数据率.
如果DUR[3:0]位被置为其他不同的值,那么1LSB对应于32/ODR_XL的时间.
图17.
单击和双击识别(LIR位=0)显示了单击事件(a)和双击事件(b).
这些中断信号可被驱动至两个中断引脚,单击情况下通过将MD1_CFG寄存器的INT1_SINGLE_TAP位或MD2_CFG寄存器的INT2_SINGLE_TAP位置为1来实现,双击情况下通过将MD1_CFG寄存器的INT1_DOUBLE_TAP位或MD2_CFG寄存器的INT2_DOUBLE_TAP位置为1来实现.
如果加速度计处于下电状态,则不产生单击/双击中断(更多详细信息见第5.
6节活动/不活动识别).
图17.
单击和双击识别(LIR位=0)(a)(b)-SHOCKQUIETDURATIONSHOCKQUIETQUIETQUIETSHOCKSHOCK单击双击+点击阈值中断中断斜率点击阈值根据保密协议–不可复制AN5040单击和双击识别AN5040-Rev3page45/120还可通过读取TAP_SRC(1Ch)寄存器来检查点击中断信号,如表29.
TAP_SRC寄存器所述.
表29.
TAP_SRC寄存器b7b6b5b4b3b2b1b00TAP_IASINGLE_TAPDOUBLE_TAPTAP_SIGNX_TAPY_TAPZ_TAP当检测到单击或双击事件时,TAP_IA置为高电平.
当检测到单击时,SINGLE_TAP置为高电平.
当检测到双击时,DOUBLE_TAP置为高电平.
TAP_SIGN指示检测到点击事件时的加速度符号.
符号为正时它为低电平,符号为负时它为高电平.

当在X(Y、Z)轴上检测到点击事件时,X_TAP(Y_TAP、Z_TAP)置为高电平.
单击和双击识别独立工作.
将WAKE_UP_THS寄存器的SINGLE_DOUBLE_TAP位置为0,则仅使能单击识别:双击识别被禁用,不能被检测到.
当SINGLE_DOUBLE_TAP置为1时,单击和双击识别均使能.
如果锁存模式使能,且中断信号被驱动至中断引脚,则指定到SINGLE_DOUBLE_TAP的值还会影响中断信号的特性:当它被置为0时,单击中断信号可应用于锁存模式;当它被置为1时,只有双击中断信号可应用于锁存模式.
锁存的中断信号保持激活,直至TAP_SRC寄存器被读取.
如果使能了锁存模式,但是中断信号未驱动至中断引脚,那么锁存功能不起作用.
5.
5.
4单击示例下面给出了单击检测的基本软件程序.
1.
将60h写入CTRL1_XL//启动加速度计//ODR_XL=416Hz,FS_XL=±2g2.
将8Eh写入TAP_CFG//使能X、Y、Z轴上的中断和点击检测3.
将89h写入TAP_THS_6D//设置点击阈值4.
将06h写入INT_DUR2//设置Quiet和Shock时间窗口5.
将00h写入WAKE_UP_THS//只使能单击(SINGLE_DOUBLE_TAP=0)6.
将40h写入MD1_CFG//单击中断驱动至INT1引脚本例中,TAP_THS_6D寄存器的TAP_THS字段被置为01001b,因此点击阈值为562.
5mg(=9*FS_XL/25).
INT_DUR2寄存器的SHOCK字段被置为10b:当斜率数据超出所编程阈值时,产生中断,并在38.
5ms(=2*8/ODR_XL)内返回到低于该阈值,这段时间对应于Shock时间窗口.
INT_DUR2寄存器的QUIET字段被置为01b:由于锁存模式禁用,中断会保持高电平并持续Quiet窗口的时间,因此为9.
6ms(=1*4/ODR_XL).
5.
5.
5双击示例下面给出了双击检测的基本软件程序.
1.
将60h写入CTRL1_XL//启动加速度计//ODR_XL=416Hz,FS_XL=±2g2.
将8Eh写入TAP_CFG//使能X、Y、Z轴上的点击检测3.
将8Ch写入TAP_THS_6D//设置点击阈值4.
将7Fh写入INT_DUR2//设置Duration、Quiet和Shock时间窗口根据保密协议–不可复制AN5040单击和双击识别AN5040-Rev3page46/1205.
将80h写入WAKE_UP_THS//使能单击&双击(SINGLE_DOUBLE_TAP=1)6.
将08h写入MD1_CFG//双击中断驱动至INT1引脚本例中,TAP_THS_6D寄存器的TAP_THS字段被置为01100b,因此点击阈值为750mg(=12*FS_XL/25).
要实现中断生成,在第一次和第二次点击过程中,Shock结束前,斜率数据必须返回到低于阈值.
INT_DUR2寄存器的SHOCK字段被置为11b,因此Shock时间为57.
7ms(=3*8/ODR_XL).
对于中断生成,第一次点击识别后,在Quiet时间窗口内斜率数据不能超阈值.
而且,由于锁存模式禁用,因此中断会保持高电平,并持续Quiet窗口的时间.
INT_DUR2寄存器的QUIET字段被置为11b,因此Quiet时间为28.
8ms(=3*4/ODR_XL).
要使连续两次检测到的点击之间时间达到最大,INT_DUR2寄存器的DUR字段被置为0111b,因此Duration时间为538.
5ms(=7*32/ODR_XL).
5.
6活动/不活动识别活动/不活动识别功能能够减少系统功耗,可支持开发新型智能应用.
当活动/不活动识别功能激活时,LSM6DSL器件能够自动将加速度计采样率降低至12.
5Hz,当检测到唤醒中断事件时增加加速度计ODR和带宽.
在LSM6DSL中这个功能可以扩展到陀螺仪,有三种可能的选择:陀螺仪配置不变;陀螺仪进入睡眠模式;陀螺仪进入下电模式.
利用此功能,根据用户所选的加速事件,系统可以高效地从低功耗模式转换成全性能模式,反之亦然,因此可以保证节能和灵活性.
使用活动/不活动功能所允许的最大加速度计ODR(可通过CTRL1_XL寄存器的ODR_XL[3:0]位来配置)为3.
3kHz.
通过将INTERRUPTS_ENABLE位置为1,并配置TAP_CFG寄存器的INACT_EN位,可使能活动/不活动识别功能.
表30.
不活动事件配置中总结了不活动事件的可能配置.
表30.
不活动事件配置INACT_EN[1:0]加速度计陀螺仪00不活动事件禁用不活动事件禁用01XLODR=12.
5Hz(低功耗模式)陀螺仪配置不变10XLODR=12.
5Hz(低功耗模式)Gyro处于睡眠模式11XLODR=12.
5Hz(低功耗模式)陀螺仪处于下电模式LSM6DSL器件中,可以利用斜率滤波器(更多详细信息见第3.
7.
1节加速度计斜率滤波器)或高通数字滤波器来实现活动/不活动识别功能,如图2.
加速度计滤波链中所示.
所用滤波器可通过TAP_CFG寄存器的SLOPE_FDS位来选择:如果该位被置为0(默认值),则使用斜率滤波器;如果被置为1,则使用高通数字滤波器.
此功能可完全由用户编程,利用专门的寄存器组对所期望的滤波数据幅度和时序进行编程(图18.

活动/不活动识别(利用斜率滤波器)).
该无符号阈值由WAKE_UP_THS寄存器的WK_THS[5:0]位来定义;这6bit的1LSB值取决于所选加速度计满量程:1LSB=(FS_XL)/(26).
该阈值可适用于正负滤波数据.
当一定数量的连续X、Y、Z滤波数据小于所配置阈值时,忽略CTRL1_XL寄存器的ODR_XL[3:0]位(不活动),加速度计被内部地设置为12.
5Hz,尽管CTRL1_XL内容保持不变.
陀螺仪的特性随着TAP_CFG寄存器INACT_EN位的配置而变化.
待识别的不活动状态的持续时间由WAKE_UP_DUR寄存器的SLEEP_DUR[3:0]位来定义:1LSB对应于512/ODR_XL的时间,这里ODR_XL为加速度计输出数据率.
当检测到不活动状态时,中断被置为高电平并持续1/ODR_XL[s]的时间周期,然后自动取消.
当一个轴上有一个采样的X、Y、Z滤波数据大于阈值时,会立即恢复CTRL1_XL寄存器设置(活动),并且陀螺仪恢复到先前的状态.
根据保密协议–不可复制AN5040活动/不活动识别AN5040-Rev3page47/120当检测到活动状态时,中断被置为高电平并持续1/ODR_XL[s]的时间周期,然后自动取消.
当使能活动/不活动检测功能时,通过将MD1_CFG寄存器的INT1_INACT_STATE位或MD2_CFG寄存器的INT2_INACT_STATE位置为1,可将其状态驱动至两个中断引脚;还可通过读取WAKE_UP_SRC寄存器的SLEEP_STATE_IA位来对其进行检查.
图18.
活动/不活动识别(利用斜率滤波器)中断斜率SLEEP_DUR+唤醒阈值-唤醒阈值活动状态活动状态不活动状态活动/不活动检测的基本软件例程如下所示:1.
将50h写入CTRL1_XL//启动加速度计//ODR_XL=208Hz,FS_XL=±2g2.
将40h写入CTRL2_G//开启陀螺仪//ODR_G=104Hz,FS_G=±250dps3.
将02h写入WAKE_UP_DUR//设置不活动检测的持续时间4.
将02h写入WAKE_UP_THS//设置活动/不活动阈值5.
将E0h写入TAP_CFG//使能中断//不活动配置:加速度计配置为12.
5LP,陀螺仪配置为下电//使能斜率滤波器6.
将80h写入MD1_CFG//活动/不活动中断驱动至INT1引脚本例中,WAKE_UP_THS寄存器的WK_THS字段被置为000010b,因此活动/不活动阈值为62.
5mg(=2*FS_XL/26).
进行不活动检测前,X、Y、Z斜率数据必须小于所配置阈值并持续一段时间,该时间由WAKE_UP_DUR寄存器的SLEEP_DUR字段定义:该字段被置为0010b,对应4.
92s(=2*512/ODR_XL).
经过这段时间之后,加速度计ODR内部设置为12.
5Hz,陀螺仪内部设置为下电模式.
根据保密协议–不可复制AN5040活动/不活动识别AN5040-Rev3page48/120如果(至少)一个轴的斜率数据大于阈值,则会检测到活动状态并立即恢复CTRL1_XL寄存器设置和开启陀螺仪.
5.
7启动状态器件上电后,LSM6DSL执行一段15ms的启动程序来加载配置参数.
启动完成后,加速度计和陀螺仪均自动配置为下电模式.
启动时间内,寄存器不可访问.
上电后,可通过将CTRL3_C寄存器的BOOT位置为1,来重载配置参数.
不需要切换设备电源线,器件控制寄存器内容不被修改,因此启动后器件工作模式不变.
如果需要复位至控制寄存器的默认值,可通过将CTRL3_C寄存器的SW_RESET位置为1来实现.
SW_RESET过程会花费50s;复位状态由CTRL3_C寄存器SW_RESET位的状态为信号:当复位完成时,该位自动置为低电平.
启动状态信号可通过将INT1_CTRL寄存器的INT1_BOOT位置为1,来把启动状态信号驱动至INT1中断引脚:当正在运行启动时此信号被置为高电平,启动过程结束时此信号被重新置为低电平.

重启流程如下:1.
将陀螺仪设置为下电模式;2.
将加速度计设置为高性能模式;3.
将CTRL3_C寄存器的BOOT为设置为1;4.
等待15ms.
复位流程如下:1.
将陀螺仪设置为下电模式;2.
将加速度计设置为高性能模式;3.
将CTRL3_C寄存器的SW_RESET为设置为1;4.
等待50s(或等待至CTRL3_C寄存器的SW_RESET位返回0).
为了避免冲突,重启和sw复位不能同时执行(不要同时将CTRL3_C寄存器的BOOT位和SW_RESET位同时置为1).
上述流程必须顺序执行.
根据保密协议–不可复制AN5040启动状态AN5040-Rev3page49/1206嵌入功能LSM6DSL器件在硬件中实现许多嵌入功能;功耗可忽略且高性能的专用IP模块仅用加速度计即可实现以下功能:计步功能(步伐侦测和步数计算);大幅运动检测;相对倾斜;绝对手腕倾斜;时间戳.
所有这些功能工作于26Hz,因此加速度计ODR必须设置为26Hz或更高的值.
6.
1计步功能:步伐侦测和步数计算LSM6DSL器件的专用IP模块来专门实现计步功能:步伐侦测和步数计算.
计步功能工作于26Hz,因此加速度计ODR必须设置为26Hz或更高的值.
要使能计步功能,需要将CTRL10_C寄存器的FUNC_EN位和PEDO_EN位置为1.
使能计步功能后,计步器显示算法检测到的步数.
步数由STEP_COUNTER_H和STEP_COUNTER_L寄存器输出,表示为一个16位无符号数字.
当加速度计被配置为下电或计步器禁用时,步数不会复位至0;可通过将CTRL10_C寄存器的PEDO_RST_STEP位置为1来将其复位至0.
计数器复位后,PEDO_RST_STEP位不会自动重置回0.
步伐侦测功能会在每次识别出一步时生成一个中断.
在随机行走事件中,须检测到连续7步(去抖动步数)才能生成第一个中断,以避免出现错误步数检测(去抖动功能).
去抖动步数可通过PEDO_DEB_REG寄存器的DEB_STEP字段进行修改:基本上,它对应于在第一次计步器增加前,要检测到的最小步数.
该字段的1LSB对应于1步,默认值为6步.
器件不活动约1秒后,会重新启动去抖动功能.
这段时间(去抖动时间)可通过PEDO_DEB_REG寄存器的DEB_TIME字段进行修改.
1LSB对应于80ms,默认值为13(13*80ms=1040ms).
此值必须大于0.
图19.
计步器去抖动中示例说明了改变去抖动时间,计步器特性会如何变化.
本例中,计步算法检测出彼此接近的7步,并在一定时间后检测到单独的另外两步;假设PEDO_DEB_REG寄存器的DEB_STEP字段值设置为6LSB(=6个去抖动步,默认值),且STEP_COUNTER_H/L寄存器中初始计步器值为零(先前未检测到步数):a.
情形(a)中,第七步之后步数开始增加,第一次检测到八步后,STEP_COUNTER_H/L寄存器的值将为8.
由于PEDO_DEB_REG寄存器的DEB_TIME字段中设置的去抖动时间大于步#8和步#9之间的时长,因此步#9和步#10还是会引起计步器增加:STEP_COUNTER_H/L寄存器中最后的步数值将为10.
b.
情形(b)中,也是第七步后步数开始增加,第一次检测到八步后,STEP_COUNTER_H/L寄存器的值将为8,但是由于PEDO_DEB_REG寄存器DEB_TIME字段中设置的去抖动时间小于步#8和步#9之间的时长,因此步#9和步#10不会引起计步器增加:STEP_COUNTER_H/L寄存器中最后的步数值将为8.
而且,如果步#10和下一步之间经过的这段时间大于去抖动时间,那么检测到的步#9和步#10将明确会丢弃且不再考虑.
根据保密协议–不可复制AN5040嵌入功能AN5040-Rev3page50/120图19.
计步器去抖动振幅t(a)(b)#1#2#3#4#5#6#7#8#9#10去抖动时间T0检测到的步去抖动时间默认情况下,计步器工作于±2g满量程,与所配置的器件满量程无关,但是它也可被配置为工作于±4g满量程,这样可以帮助避免加速度饱和(例如,快速行走时).
要为计步器设置±4g满量程,CONFIG_PEDO_THS_MIN寄存器的PEDO_FS位必须置为1,并且CTRL1_XL寄存器中配置的加速度计满量程必须≥±4g.
还可以设置"最小阈值",它是未检测到步数时步数识别阈值渐进趋向的值,并且不能下降到比它更小的值(见图20.

计步器最小阈值).
可在CONFIG_PEDO_THS_MIN寄存器的ths_min字段实现此配置.
这5位的1LSB值取决于所选计步器满量程:如果PEDO_FS位为0,1LSB=32mg;如果PEDO_FS位为1,1LSB=62.
5mg.
图20.
计步器最小阈值t振幅实际THS最小THS检测到的步通过将INT1_CTRL寄存器的INT1_STEP_DETECTOR位置为1,可将步数检测器中断信号驱动至INT1中断引脚上;还可通过读取FUNC_SRC1寄存器的STEP_DETECTED位对其进行检查.
根据保密协议–不可复制AN5040计步功能:步伐侦测和步数计算AN5040-Rev3page51/120如果在一定时间段内检测到了至少一步,即可生成中断,而不是每次识别出一步才生成中断.
这段时间可通过在STEP_COUNT_DELTA寄存器中设置一个高于00h的值来定义.
使用此功能时,需要将CTRL10_C寄存器的TIMER_EN位置为1(来使能定时器),并将WAKE_UP_DUR寄存器的TIMER_HR位置为0:这样,STEP_COUNT_DELTA寄存器值的1LSB对应1.
6384秒.
通过将INT2_CTRL寄存器的INT2_STEP_DELTA位置为1,可将该中断信号驱动至INT2中断引脚上;还可通过读取FUNC_SRC1寄存器的STEP_COUNT_DELTA_IA位对其进行检查.
可通过INT2_CTRL将寄存器的INT2_STEP_COUNT_OV位置为1,将计步器溢出信号驱动至INT2中断引脚:这种情况下,当步数达到216的值时,INT2引脚上会产生一个中断信号,步数自动复位至零,而无需通过将PEDO_RST_STEP位置为1来将其复位.
如果锁存模式禁用(TAP_CFG的LIR位置为0),计步功能所产生的中断信号为脉冲的:中断引脚上观测到的脉冲持续时间约为150s;FUNC_SRC1寄存器的STEP_COUNT_DELTA_IA、STEP_DETECTED和STEP_OVERFLOW位上观测到的脉冲持续时间为1/26Hz.
如果锁存模式使能(TAP_CFG的LIR位置为1),且中断信号被驱动至中断引脚,则当进行一步时,对FUNC_SRC1寄存器的读取会将两个引脚上的请求以及FUNC_SRC1寄存器的STEP_COUNT_DELTA_IA、STEP_DETECTED和STEP_OVERFLOW位清除,器件准备好识别下一步.
如果锁存模式使能但是中断信号未驱动至中断引脚,那么FUNC_SRC1寄存器位上观测到的中断信号是脉冲,且持续时间固定为1/26Hz.
计步器时间戳信息可在STEP_TIMESTAMP_H和STEP_TIMESTAMP_L寄存器中获取:当检测到一步时,TIMESTAMP_REG2寄存器的值复制到STEP_TIMESTAMP_H中,TIMESTAMP_REG1寄存器的值复制到STEP_TIMESTAMP_L中,提供该步的时间戳信息.
关于LSM6DSL时间戳计数器和TIMESTAMP_REG2/TIMESTAMP_REG1的更多详细信息,见第6.
5节时间戳.
计步器时间戳的分辨率取决于WAKE_UP_DUR寄存器TIMER_HR位的值:当该位被置为0时,步数的1LSB对应的时间为1638.
4ms;当该位被置为1时,步数的1LSB对应的时间为6.
4ms.
计步器数据可连同时间戳数据一起作为第四数据集存储在FIFO中(更多详细信息见第8.
8节FIFO中的计步器和时间戳数据).
以下是一个基本软件程序,显示如何使能计步功能:1.
将80h写入FUNC_CFG_ACCESS//使能对嵌入功能寄存器的访问(A区)2.
将8Eh写入CONFIG_PEDO_THS_MIN//PEDO_FS=±4g并配置计步器最小阈值3.
将00h写入FUNC_CFG_ACCESS//禁用对嵌入功能寄存器的访问(A区)4.
将28h写入CTRL1_XL//启动加速度计//ODR_XL=26Hz,FS_XL=±4g5.
将14h写入CTRL10_C//启用嵌入功能和计步器算法6.
将80h写入INT1_CTRL//步数探测器中断驱动至INT1引脚当识别出一步时,产生该中断信号,可通过读取STEP_COUNTER_H/STEP_COUNTER_L寄存器来获取步数.
6.
2大幅运动检测检测到"大幅运动"(该运动可能是由于用户位置发生变化)时,大幅运动检测功能会产生一个中断:LSM6DSL器件中,仅利用加速度计,已经在硬件中实现了此功能.
大幅运动检测功能可用于基于位置的应用,用来接收指示用户何时改变位置的通知.

大幅运动检测功能工作于26Hz,因此加速度计ODR必须设置为26Hz或更高的值.
要使能大幅运动检测检测,需要将CTRL10_C寄存器的FUNC_EN位和SIGN_MOTION_EN位置为1.
通过将INT1_CTRL寄存器的INT1_SIGN_MOT位置为1,可将大幅运动中断信号驱动至INT1中断引脚上;还可通过读取FUNC_SRC1寄存器的SIGN_MOTION_IA位对其进行检查.
如果锁存模式禁用(TAP_CFG的LIR位置为0),大幅运动检测功能所产生的中断信号为脉冲的:中断引脚上观测到的脉冲持续时间约为150s;FUNC_SRC1寄存器的SIGN_MOTION_IA位上观测到的脉冲持续时间为1/26Hz.
如果锁存模式使能(TAP_CFG的LIR位置为1),且中断信号被驱动至中断引脚,那么当检测到倾斜时,对FUNC_SRC1寄存器的读取会将两个引脚上的请求以及FUNC_SRC1寄存器的TILT_IA位清零,器件准备识别下一次倾斜事件.
如果锁存模式使能但是中断信号未驱动至中断引脚,那么FUNC_SRC1寄存器SIGN_MOTION_IA位上观测到的中断信号是脉冲,且持续时间固定为1/26Hz.
根据保密协议–不可复制AN5040大幅运动检测AN5040-Rev3page52/120用来配置大幅运动阈值参数的嵌入功能寄存器(可通过将FUNC_CFG_ACCESS的FUNC_CFG_EN位置1来访问)为SM_THS寄存器.
此寄存器的SM_THS_[7:0]位定义了阈值:它对应于产生大幅运动中断前,位置改变时用户所行走的步数.
它表示为8位无符号值:该字段默认值等于6(=00000110b).
当计步器的去抖动功能激活时(详细信息见第6.
1节计步功能:步伐侦测和步数计算),仅当其值(对应SM_THS寄存器SM_THS_[7:0]位的值)大于等于计步器去抖动阈值(对应PEDO_DEB_REG寄存器DEB_STEP[2:0]位的值)时,大幅运动阈值有效.
基本上,对于大幅运动阈值,可以有三种不同的情形:a.
如果计步器去抖动功能未激活,则大幅运动阈值由SM_THS_[7:0]位定义;b.
如果计步器去抖动功能激活,且大幅运动阈值大于等于计步器去抖动阈值,则有效的大幅运动阈值由SM_THS_[7:0]位定义;c.
如果计步器去抖动功能激活,且大幅运动阈值小于计步器去抖动阈值,则有效的大幅运动阈值由DEB_STEP[2:0]位定义.
注意:情形c)中,如果所需大幅运动阈值低于默认值,则PEDO_DEB_REG寄存器DEB_STEP[2:0]位的值必须随之降低.
注意,过度减少计步器去抖动阈值可能导致计步器步数检测报错!

以下是一个基本软件程序,显示如何使能大幅运动检测功能:1.
将80h写入FUNC_CFG_ACCESS//使能对嵌入功能寄存器的访问(A区)2.
将08h写入SM_THS//设置大幅运动阈值3.
将00h写入FUNC_CFG_ACCESS//禁用对嵌入功能寄存器的访问(A区)4.
将20h写入CTRL1_XL//启动加速度计//ODR_XL=26Hz,FS_XL=±2g5.
将05h写入CTRL10_C//使能嵌入功能//使能大幅运动检测6.
将40h写入INT1_CTRL//大幅运动中断驱动至INT1引脚本例中SM_THS寄存器的SM_THS_[7:0]位被置为00001000b,因此大幅运动阈值等于8.
6.
3相对倾斜倾斜度检测功能支持检测何时发生活动改变(例如,当电话在前口袋中用户从坐到站或从站到坐时):在LSM6DSL器件中,仅使用加速度计即可在硬件中实现它.
要使能倾斜探测器,需要将CTRL10_C寄存器的FUNC_EN位和TILT_EN位置为1.
如果器件配置为用于倾斜度检测,那么当器件距起始位置的倾斜角度大于35度时,会产生一个中断.
起始位置定义为倾斜检测使能时器件的位置,或上一次倾斜中断产生时的器件位置.

使能此功能后,要产生第一次倾斜中断,器件距起始位置的倾斜角度应大于35度并持续2秒的时间.
产生第一次倾斜中断后,当器件距离上次中断检测时的器件位置的倾斜角度大于35度时(不需要等待2秒),倾斜中断信号即被置为高电平.
在图21.
倾斜度检测中所示的示例中,当器件方向对应"起始位置#0"时,倾斜检测使能:如果器件从起始位置开始旋转角度大于35度,并且保持在蓝色区域中至少2秒的时间,则会产生第一次中断.
第一次倾斜检测中断产生后,新的起始位置(#1)对应前次中断产生的器件位置(结束位置#0),当器件倾斜角度大于35度时,即产生下一个中断信号,进入起始位置#1周围的蓝色区域.
根据保密协议–不可复制AN5040相对倾斜AN5040-Rev3page53/120图21.
倾斜度检测3535开始位置最终位置#0#035#135倾斜检测中断开始位置通过将MD1_CFG寄存器的INT1_TILT位或MD2_CFG寄存器的INT2_TILT位置为1,可将此中断信号驱动至两个中断引脚;还可通过读取FUNC_SRC1寄存器的TILT_IA位来对其进行检查.
如果锁存模式禁用(TAP_CFG的LIR位置为0),则倾斜功能所产生的中断信号为脉冲的:中断引脚上观测到的脉冲持续时间约为150s;FUNC_SRC1寄存器TILT_IA位上观测到的脉冲持续时间为1/26Hz.
如果锁存模式使能(TAP_CFG的LIR位置为1),且中断信号被驱动至中断引脚,那么当检测到倾斜时,对FUNC_SRC1寄存器的读取会将两个引脚上的请求以及FUNC_SRC1寄存器的TILT_IA位清零,器件准备识别下一次倾斜事件.
如果锁存模式使能但是中断信号未驱动至中断引脚,那么FUNC_SRC1寄存器TILT_IA位上观测到的中断信号是脉冲,且持续时间固定为1/26Hz.
倾斜度检测功能工作于26Hz,因此加速度计ODR必须设置为26Hz或更高的值.
下面是显示如何使能倾斜度检测功能的基本软件程序:1.
将20h写入CTRL1_XL//启动加速度计//ODR_XL=26Hz,FS_XL=±2g2.
将0Ch写入CTRL10_C//使能嵌入功能//使能倾斜度检测3.
将02h写入MD1_CFG//倾斜探测器中断驱动至INT1引脚6.
4绝对手腕倾斜LSM6DSL设备在硬件中实现了绝对手腕倾斜(AWT)功能:它能够检测可选加速度计半轴与水平面之间的角度何时高于特定的用户可选值.
AWT功能仅基于加速度计传感器,工作于26Hz:要使用它,加速度计ODR必须设置为26Hz或更高的值.
可以通过将CTRL10_C寄存器的FUNC_EN和WRIST_TILT_EN位置为1,来启用AWT功能.
如果器件配置为进行绝对手腕倾斜事件检测,则当器件倾斜角度大于可配置阈值并持续倾斜了最小可配置时间时,会产生一个中断:如果倾斜角度大于阈值角度并且持续倾斜时间大于等于延迟时间,则会产生AWT中断信号.
默认情况下,AWT中断应用于正X轴.
通过将DRDY_PULSE_CFG寄存器的INT2_WRIST_TILT位置为1,可将其驱动到INT2中断引脚,通过读取FUNC_SRC2寄存器的WRIST_TILT_IA位,还可以检查该位(如果通过设置寄存器TAP_CFG的LIR位为1将其锁存,则此读取会清除中断信号).
如果锁存模式禁用(TAP_CFG的LIR位置为0),AWT功能所产生的中断信号为脉冲的:中断引脚上观测到的脉冲持续时间约为150s;FUNC_SRC2寄存器的WRIST_TILT_IA位上观测到的脉冲持续时间为1/26Hz.
如果锁存模式使能(TAP_CFG的LIR位置为1),且中断信号被驱动至中断引脚,那么当检测到手腕倾斜时,对FUNC_SRC2寄存器的读取会将两个引脚上的请求以及FUNC_SRC2寄存器的WRIST_TILT_IA位清零,器件准备识别下一次手腕倾斜事件.
如果锁存模式使能但是中断信号未驱动至中断引脚,那么FUNC_SRC2寄存器WRIST_TILT_IA位上观测到的中断信号是脉冲,且持续时间固定为1/26Hz.
启用AWT功能默认配置的基本例程如下:根据保密协议–不可复制AN5040绝对手腕倾斜AN5040-Rev3page54/1201.
将20h写入CTRL1_XL//启动加速度计//ODR_XL=26Hz,FS_XL=±2g2.
将84h写入CTRL10_C//使能嵌入功能//使能AWT检测3.
将01h写入DRDY_PULSE_CFG//AWT中断驱动至INT1引脚通过三个相关的嵌入功能寄存器(B区):A_WRIST_TILT_LAT、A_WRIST_TILT_THS和A_WRIST_TILT_Mask,可以调整延迟值、阈值和轴掩码.
通过设置嵌入寄存器A_WRIST_TILT_LAT的WRIST_TILT_TIMER字段,可以修改延迟参数:1LSB=40ms,默认值为0Fh,即600ms.
阈值参数可通过设置嵌入功能寄存器A_WRIST_TILT_THS的WRIST_TILT_THS字段进行配置.
它是完全独立的.
1LSB对应于15.
625mg,WRIST_TILT_THS字段必须<40h(64d).
相对于水平面的倾斜角度可以如下计算:angledeg=180π*asinWRIST_TILT_THS64寄存器54h的默认值是20h=32d=500mg,相当于30度的倾斜角度.
通过配置嵌入寄存器A_WRIST_TILT_Mask的位WRIST_TILT_MASK_Xpos、WRIST_TILT_MASK_Xneg、WRIST_TILT_MASK_Ypos、WRIST_TILT_MASK_Yneg、WRIST_TILT_MASK_Zpos、WRIST_TILT_MASK_Zneg,用户可以选择AWT算法所考虑的轴;默认配置是X正轴AWT检测.
可以选择另一个或另外的半轴来更改/修改AWT检测:应用这些位的"或"组合.
注:每次加速计退出下电模式时,这些嵌入功能寄存器(B区)都会复位为其默认值,因此每次将电源模式从下电模式切换到活动模式时,都必须对它们进行重新配置.
当加速器退出下电模式时,要重复进行的完整AWT配置过程如下:1.
将20h写入CTRL1_XL//启动加速度计//ODR_XL=26Hz,FS_XL=±2g2.
将04h写入CTRL10_C//使能嵌入功能3.
等待50ms4.
将00h写入CTRL10_C//禁用嵌入功能5.
将A0h写入FUNC_CFG_ACCESS//使能对嵌入寄存器的访问(B区)6.
在A_WRIST_TILT_LAT中设置新的延迟7.
在A_WRIST_TILT_THS中设置新的阈值8.
在A_WRIST_TILT_Mask中设置新的掩码9.
将00h写入FUNC_CFG_ACCESS//禁用对嵌入寄存器的访问(B区)10.
将84h写入CTRL10_C//使能嵌入功能//使能AWT检测11.
将01h写入DRDY_PULSE_CFG//AWT中断驱动至INT1引脚根据保密协议–不可复制AN5040绝对手腕倾斜AN5040-Rev3page55/1206.
5时间戳同时利用传感器数据,LSM6DSL器件能够给出时间戳信息.
如果加速度计和陀螺仪均处于下电模式,则时间戳计数器不工作.
要使能此功能,CTRL10_C寄存器的TIMER_EN位必须置位1:时间步数由TIMESTAMP_REG2&TIMESTAMP_REG1&TIMESTAMP_REG0寄存器输出,并表示为一个24位的无符号数.
时间戳精度可利用WAKE_UP_DUR寄存器的WAKE_UP_DUR位进行配置:该位被置为0时,1LSB的时间步数对应6.
4ms(低精度模式);该位被置为1时,1LSB的时间步数对应25s(高精度模式).
当达到最大值16777215LSB(对应FFFFFFh)时,计数器自动复位至000000h并继续计数.
可通过向TIMESTAMP_REG2寄存器中写入值AAh,来随时将定时器计数复位至零.
在高精度模式(当定时器步数达到值FF0000h时)和低精度模式(当定时器步数达到值FFFF00h)中,在定时器饱和前约1.
638秒时均会产生中断产生.
通过将MD1_CFG寄存器的INT1_TIMER位置为1,可将此中断信号驱动至INT1引脚.
当中断引脚被产生,则它必须通过向TIMESTAMP_REG2寄存器中写入AAh来复位至0(定时器步数也将复位).
时间戳计数可与计步器数据一起作为第四数据集存储在FIFO里(详细信息见第8.
8节FIFO中的计步器和时间戳数据).
时间戳精度必须在使能时间戳功能前设置;基本程序如下:1.
将50h写入CTRL1_XL//启动加速度计//ODR_XL=208Hz,FS_XL=±2g2.
将10h写入WAKE_UP_DUR//时间戳精度=25s3.
将20h写入CTRL10_C//使能时间戳计数4.
将01h写入MD1_CFG//计数器结束中断驱动至INT1引脚当从低时间戳精度切换到高时间戳精度时,定时器计数必须复位,如以下示例所示:1.
将50h写入CTRL1_XL//启动加速度计//ODR_XL=208Hz,FS_XL=±2g2.
将00h写入WAKE_UP_DUR//时间戳精度=6.
4ms3.
将20h写入CTRL10_C//使能时间戳计数.
.
.
N将10h写入WAKE_UP_DUR//时间戳精度=25sN+1将AAh写入TIMESTAMP_REG2//复位定时器计数器根据保密协议–不可复制AN5040时间戳AN5040-Rev3page56/1207模式2-传感器集合(sensorhub)模式LSM6DSL的硬件灵活性允许通过不同的模式连接将引脚连接至外部传感器以扩展功能,如增加传感器集合(sensorhub).
使能传感器集合模式(模式2)时,用来连接外部传感器的主I2C/SPI(3线和4线)从接口和I2C主接口都可用.
模式2连接模式在下面的段落中详细描述.
7.
1传感器集合(sensorhub)模式说明在传感器集合(sensorhub)模式(模式2)下,可有4个外部传感器连接至LSM6DSL器件的I2C主接口.
传感器集合触发信号可以与加速度计数据就绪信号(最高104Hz)同步;或者,连接到INT2引脚的外部信号可用作传感器集合触发器.
在第二种情况下,外部传感器支持的最大ODR取决于两个连续触发信号之间可以执行的读/写操作数.
在传感器集合触发信号上,通过寄存器SLVx_ADD、SLVx_SUBADD、SLAVEx_CONFIG和DATAWRITE_SRC_MODE_SUB_SLV0配置的所有写和读IC操作都是从外部传感器0到外部传感器3顺序执行(取决于由SLAVE0_CONFIG寄存器中Aux_sens_on[1:0]字段所使能的外部传感器).
利用可配置抽取因子,外部传感器数据也可存储在FIFO中(详细信息见第8节先进先出(FIFO)缓冲区).
如果加速度计和陀螺仪均处于下电模式,则传感器集合(sensorhub)不工作.
所有外部传感器必须并联到器件的SDx/SCx引脚,对于单个外部传感器,如图22.
模式2下外部传感器连接所示.
外部上拉电阻和外部触发器信号连接是可选的,取决于寄存器配置.
图22.
模式2下外部传感器连接器件外部传感器SDxSCxINT2SDASCL数据就绪IC主设备IC从设备外部触发器为可选项1.
5kOhmRVdd_IO1.
5kOhmRVdd_IO外部上拉为可选项227.
2传感器集合(sensorhub)模式寄存器要使能LSM6DSL嵌入功能,CTRL10_C寄存器FUNC_EN位必须置为1;使能嵌入功能后,MASTER_CONFIG寄存器必须用来配置I2C主接口.
一组寄存器SLVx_ADD、SLVx_SUBADD、SLAVEx_CONFIG专门用来配置到4个可连接外部传感器的4个从接口.
一个额外的寄存器DATAWRITE_SRC_MODE_SUB_SLV0只关联到从属#0:它可对从属#0所关联外部传感器的寄存器实现写入以及源模式条件读取.
最后,有18个寄存器(从SENSORHUB1_REG到SENSORHUB18_REG)可用来存储从外部传感器读取的数据.
根据保密协议–不可复制AN5040模式2-传感器集合(sensorhub)模式AN5040-Rev3page57/1207.
2.
1CTRL10_C(19h)表31.
CTRL10_C寄存器b7b6b5b4b3b2b1b0X0XXXFUNC_ENXXFUNC_EN必须置为1,以使能LSM6DSL的嵌入功能(计步器,倾斜,大幅运动,铁磁校正).
7.
2.
2MASTER_CONFIG(1Ah)此寄存器用于配置I2C主控制器.
表32.
MASTER_CONFIG寄存器b7b6b5b4b3b2b1b0DRDY_ON_INT1X0START_CONFIGPULL_UP_ENPASS_THROUGH_MODEX主_ONDRDY_ON_INT1位必须置为1,以驱动INT1引脚上的I2C主数据准备就绪信号(对应FUNC_SRC1寄存器的SENSORHUB_END_OP位特性).
关于SENSORHUB_END_OP位的更多详细信息,请参考第7.
2.
3节FUNC_SRC1(53h).
如果DRDY_PULSE_CFG寄存器的DRDY_PULSED位置为1,则I2C主线数据就绪信号会是脉冲的,脉冲持续时间为150s.
START_CONFIG位对传感器集合(sensorhub)触发信号进行选择.
当此位被置为0时,加速度计传感器必须激活(不能处于下电模式),传感器集合(sensorhub)触发信号为加速度计数据准备就绪信号,其频率对应加速度计ODR,可达104Hz.
当此位被置为1时,加速度计和陀螺仪中必须激活至少一个传感器,并且传感器集合(sensorhub)触发信号到INT2引脚;实际上,当MASTER_ON位和START_CONFIG位被置为1时,INT2引脚被配置为输入信号.
这种情况下,INT2引脚必须连接到外部传感器的数据准备就绪信号(图22.
模式2下外部传感器连接),以触发对外部传感器寄存器的读取/写入操作.
来自INT2的传感器集合中断是"高电平触发的"(不可编程).
注意:使用外部触发信号的情况下(START_CONFIG=1),如果INT2引脚连接到外部传感器的数据准备就绪(图22.
模式2下外部传感器连接),并且后者处于下电模式,那么外部传感器可以生成数据准备就绪信号.
因此,必须使用内部触发信号来实现外部传感器寄存器的初始配置(START_CONFIG=0).
外部传感器激活且数据准备就绪信号可用之后,通过将START_CONFIG位切换为1,可以使用外部触发信号.
PULL_UP_EN位使能/禁用辅I2C线路上的内部上拉.
当此位被置为0时,内部上拉禁用,SDx/SCx引脚上需要外部上拉电阻,如图22.
模式2下外部传感器连接所示.
当此位被置为1时,内部上拉使能,SDx/SCx引脚上不需要外部上拉电阻.
PASS_THROUGH_MODE位用来使能/禁用I2C接口直通.
当此位被置为1,主I2C线(例如,连接到外部微控制器)短接到辅线,以实现对外部传感器寄存器的直接访问.
详细信息,请参见第7.
3节传感器集合(sensorhub)直连功能.
MASTER_ON位必须置为1,以使能LSM6DSL器件的辅助I2C主线(传感器集合(sensorhub)模式).
根据保密协议–不可复制AN5040传感器集合(sensorhub)模式寄存器AN5040-Rev3page58/1207.
2.
3FUNC_SRC1(53h)表33.
FUNC_SRC1寄存器b7b6b5b4b3b2b1b0XXXXXXXSENSORHUB_END_OPSENSORHUB_END_OP位报告IC主器件的状态:当IC主器件处于空闲状态时,此位等于1;当IC主器件处于读/写操作状态时,此位变为0.
当传感器集合例程完成时,此位自动变为1,并且可以从SENSORHUBx_REG寄存器读取外部传感器数据(取决于SLVx_ADD、SLVx_SUBADD和SLAVEx_CONFIG寄存器的配置).
注:如果TAP_CFG寄存器的LIR位置为1,则SENSORHUB_END_OP位通过读取而被清零,否则该位仅在IC主线读或写操作期间清零.
通过将MASTER_CONFIG寄存器的DRDY_ON_INT1位置为1,可将IC主器件的状态信号驱动至INT1中断引脚:如果TAP_CFG寄存器的LIR位置为0,则在SENSORHUB_END_OP信号的上升沿生成脉冲中断信号(典型脉冲持续时间为约150s).
如果锁存模式使能(LIR位置为1)且中断信号被驱动至中断引脚INT1,则通过读取FUNC_SRC1寄存器清除中断信号.
7.
2.
4FUNC_SRC2(54h)表34.
FUNC_SRC2寄存器b7b6b5b4b3b2b1b00SLAVE3__NACKSLAVE2_NACKSLAVE1_NACKSLAVE0_NACKX0X如果在与相应从线x的通信过程中发生了"未确认"事件,则SLAVEx_NACK位会被置为1.
7.
2.
5SLV0_ADD(02h),SLV0_SUBADD(03h),SLAVE0_CONFIG(04h)嵌入功能寄存器(当FUNC_CFG_ACCESS寄存器的FUNC_CFG_EN位被置为1,FUNC_CFG_EN_B位被置为0时可访问)用来配置关联到第一外部传感器的I2C从接口,下面对此进行介绍.
表35.
SLV0_ADD寄存器b7b6b5b4b3b2b1b0Slave0_add6Slave0_add5Slave0_add4Slave0_add3Slave0_add2Slave0_add1Slave0_add0rw_0Slave0_add[6:0]位用来指示第一个外部传感器的I2C从线地址.
rw_0位对第一外部传感器进行读取/写入操作(0:写操作;1:读操作).
当发生下一个传感器集合(sensorhub)触发事件时,执行读取/写入操作.
当rw_0位设置为0(选择写入操作)时,SENSORHUBx_REG寄存器的内容不会更新.
表36.
SLV0_SUBADD寄存器b7b6b5b4b3b2b1b0Slave0_reg7Slave0_reg6Slave0_reg5Slave0_reg4Slave0_reg3Slave0_reg2Slave0_reg1Slave0_reg0根据保密协议–不可复制AN5040传感器集合(sensorhub)模式寄存器AN5040-Rev3page59/120Slave0_reg[7:0]位用来指示要写入的第一个外部传感器寄存器的地址(如果SLV0_ADD寄存器的rw_0位置为0)或要读取的第一个寄存器的地址(如果rw_0位被置为1).
表37.
SLAVE0_CONFIG寄存器b7b6b5b4b3b2b1b0Slave0_rate1Slave0_rate0Aux_sens_on1Aux_sens_on0Src_modeSlave0_numop2Slave0_numop1Slave0_numop0Slave0_rate[1:0]位用来定义从传感器集合(sensorhub)触发的第一个外部传感器上读操作所应用的抽取因子:–00:无抽取–01:每隔2次传感器集合(sensorhub)触发事件更新一次–10:每隔4次传感器集合(sensorhub)触发事件更新一次–11:每隔8次传感器集合(sensorhub)触发事件更新一次必须用Aux_sens_on[1:0]位来指示传感器集合(sensorhub)所管理外部传感器数:–00:无外部传感器–01:两个外部传感器–10:三个外部传感器–11:四个外部传感器Src_mode位使能/禁用源模式条件读取.
当此位被置为1时,源模式条件读取使能;继续读取SLV0_SUBADD寄存器中所示的寄存器地址之前,检查DATAWRITE_SRC_MODE_SUB_SLV0所指定地址上寄存器的内容:如果其内容非零,则操作继续,否则读取操作中断.
源模式条件读取仅在从线0上可用.
Slave0_numop[2:0]位专门用来定义从SLV0_SUBADD寄存器所示的寄存器地址开始的第一个外部传感器上执行的连续读取操作数.
7.
2.
6SLV1_ADD(05h),SLV1_SUBADD(06h),SLAVE1_CONFIG(07h)嵌入功能寄存器(当FUNC_CFG_ACCESS寄存器的FUNC_CFG_EN位被置为1,FUNC_CFG_EN_B位被置为0时可访问)用来配置关联到第二外部传感器的IC从接口,下面对此进行介绍.
表38.
SLV1_ADD寄存器b7b6b5b4b3b2b1b0Slave1_add6Slave1_add5Slave1_add4Slave1_add3Slave1_add2Slave1_add1Slave1_add0r_1Slave1_add[6:0]位用来指示第二个外部传感器的I2C从线地址.
r_1位使能/禁用第二个外部传感器上执行的读取操作(0:读操作禁用;1:读操作使能).
当发生下一个传感器集合(sensorhub)触发事件时,执行读取操作.
表39.
SLV1_SUBADD寄存器b7b6b5b4b3b2b1b0Slave1_reg7Slave1_reg6Slave1_reg5Slave1_reg4Slave1_reg3Slave1_reg2Slave1_reg1Slave1_reg0Slave1_reg[7:0]位用来表示,当SLV1_ADD寄存器的r_1位被置为1时,要读取的第二个外部传感器寄存器的地址.
根据保密协议–不可复制AN5040传感器集合(sensorhub)模式寄存器AN5040-Rev3page60/120表40.
SLAVE1_CONFIG寄存器b7b6b5b4b3b2b1b0Slave1_rate1Slave1_rate0写_once00Slave1_numop2Slave1_numop1Slave1_numop0Slave1_rate[1:0]位用来定义从传感器集合(sensorhub)触发的第二个外部传感器上读操作所应用的抽取因子:–00:无抽取–01:每隔2次传感器集合(sensorhub)触发事件更新一次–10:每隔4次传感器集合(sensorhub)触发事件更新一次–11:每隔8次传感器集合(sensorhub)触发事件更新一次write_once位用来限制从线0的写操作只发生一次(避免多次重复相同的写操作).
如果该位未被产生,那么每个ODR都会触发写操作.
注:要启用write_once功能,SLAVE0_CONFIG寄存器中的Aux_sens_on字段必须不为00b(即使只使用从0).
Slave3_numop[2:0]位专门用来定义从SLV3_SUBADD寄存器所示的寄存器地址开始的第四个外部传感器上执行的连续读取操作数.
根据保密协议–不可复制AN5040传感器集合(sensorhub)模式寄存器AN5040-Rev3page61/1207.
2.
7SLV2_ADD(08h),SLV2_SUBADD(09h),SLAVE2_CONFIG(0Ah)嵌入功能寄存器(当FUNC_CFG_ACCESS寄存器的FUNC_CFG_EN位被置为1,FUNC_CFG_EN_B位被置为0时可访问)用来配置关联到第三外部传感器的I2C从接口,下面对此进行介绍.
表41.
SLV2_ADD寄存器b7b6b5b4b3b2b1b0Slave2_add6Slave2_add5Slave2_add4Slave2_add3Slave2_add2Slave2_add1Slave2_add0r_2Slave2_add[6:0]位用来指示第三个外部传感器的I2C从线地址.
r_2位使能/禁用第三个外部传感器上执行的读取操作(0:读操作禁用;1:读操作使能).
当发生下一个传感器集合(sensorhub)触发事件时,执行读取操作.
表42.
SLV2_SUBADD寄存器b7b6b5b4b3b2b1b0Slave2_reg7Slave2_reg6Slave2_reg5Slave2_reg4Slave2_reg3Slave2_reg2Slave2_reg1Slave2_reg0Slave3_reg[7:0]位用来表示,当SLV3_ADD寄存器的r_3位被置为1时,要读取的第四个外部传感器寄存器的地址.
表43.
SLAVE2_CONFIG寄存器b7b6b5b4b3b2b1b0Slave2_rate1Slave2_rate0000Slave2_numop2Slave2_numop1Slave2_numop0Slave2_rate[1:0]位用来定义从传感器集合(sensorhub)触发的第三个外部传感器上读操作所应用的抽取因子:–00:无抽取–01:每隔2次传感器集合(sensorhub)触发事件更新一次–10:每隔4次传感器集合(sensorhub)触发事件更新一次–11:每隔8次传感器集合(sensorhub)触发事件更新一次Slave2_numop[2:0]位专门用来定义从SLV2_SUBADD寄存器所示的寄存器地址开始的第三个外部传感器上执行的连续读取操作数.
根据保密协议–不可复制AN5040传感器集合(sensorhub)模式寄存器AN5040-Rev3page62/1207.
2.
8SLV3_ADD(0Bh),SLV3_SUBADD(0Ch),SLAVE3_CONFIG(0Dh)嵌入功能寄存器(当FUNC_CFG_ACCESS寄存器的FUNC_CFG_EN位被置为1,FUNC_CFG_EN_B位被置为0时可访问)用来配置关联到第四外部传感器的I2C从接口,下面对此进行介绍.
表44.
SLV3_ADD寄存器b7b6b5b4b3b2b1b0Slave3_add6Slave3_add5Slave3_add4Slave3_add3Slave3_add2Slave3_add1Slave3_add0r_3Slave3_add[6:0]位用来指示第四个外部传感器的I2C从线地址.
r_3位使能/禁用第四个外部传感器上执行的读取操作(0:读操作禁用;1:读操作使能).
当发生下一个传感器集合(sensorhub)触发事件时,执行读取操作.
表45.
SLV3_SUBADD寄存器b7b6b5b4b3b2b1b0Slave3_reg7Slave3_reg6Slave3_reg5Slave3_reg4Slave3_reg3Slave3_reg2Slave3_reg1Slave3_reg0Slave3_reg[7:0]位用来表示,当SLV3_ADD寄存器的r_3位被置为1时,要读取的第四个外部传感器寄存器的地址.
表46.
SLAVE3_CONFIG寄存器b7b6b5b4b3b2b1b0Slave3_rate1Slave3_rate0000Slave3_numop2Slave3_numop1Slave3_numop0Slave3_rate[1:0]位用来定义从传感器集合(sensorhub)触发的第四个外部传感器上读操作所应用的抽取因子:–00:无抽取–01:每隔2次传感器集合(sensorhub)触发事件更新一次–10:每隔4次传感器集合(sensorhub)触发事件更新一次–11:每隔8次传感器集合(sensorhub)触发事件更新一次Slave3_numop[2:0]位专门用来定义从SLV3_SUBADD寄存器所示的寄存器地址开始的第四个外部传感器上执行的连续读取操作数.
根据保密协议–不可复制AN5040传感器集合(sensorhub)模式寄存器AN5040-Rev3page63/1207.
2.
9DATAWRITE_SRC_MODE_SUB_SLV0(0Eh)表47.
DATAWRITE_SRC_MODE_SUB_SLV0寄存器b7b6b5b4b3b2b1b0Slave_dataw7Slave_dataw6Slave_dataw5Slave_dataw4Slave_dataw3Slave_dataw2Slave_dataw1Slave_dataw0当SLV0_ADD寄存器的rw_0位被置为0(写操作)时,Slave_dataw[7:0]位专门用来表示要写入到第一个外部传感器(其地址在SLV0_SUBADD寄存器中指定)的数据.
读操作过程中(rw_0=1),如果源模式条件读取使能,则使用此寄存器(SLAVE0_CONFIG寄存器中Src_modebit=1),它表示在继续进行读操作前所要检查的外部传感器寄存器地址.
7.
2.
10SENSORHUBx_REG寄存器当辅助I2C主线使能时,每个外部传感器读取若干寄存器,该数等于Slavex_numop(x=0,1,2,3)字段的值,从SLVx_SUBADD(x=0,1,2,3)寄存器指定的寄存器地址开始.
要处理的外部传感器数在SLAVE0_CONFIG寄存器的Aux_sens_on位中指定.
读取的数据连续存储在(按照与读取它们相同的顺序)LSM6DSL寄存器中,从SENSORHUB1_REG寄存器开始,如图23.
SENSORHUBx_REG配置示例中示例所示;18个寄存器,从SENSORHUB1_REG到SENSORHUB18_REG,可以用来存储从外部传感器中读取的数据.
从SENSORHUB1_REG到SENSORHUB6_REG寄存器的值可作为第三数据集保存在FIFO缓冲器中;从SENSORHUB7_REG到SENSORHUB12_REG寄存器的值可作为第四数据集保存在FIFO缓冲器中(详细信息见第8节先进先出(FIFO)缓冲区).
图23.
SENSORHUBx_REG配置示例SLV0_SUBADD(03h)=28hSLAVE0_CONFIG(04h)–Slave0_numop[2:0]=3#1SLV1_SUBADD(06h)=00hSLAVE1_CONFIG(07h)–Slave1_numop[2:0]=6#2SLV2_SUBADD(09h)=20hSLAVE2_CONFIG(0Ah)–Slave2_numop[2:0]=4#3SLV3_SUBADD(0Ch)=40hSLAVE3_CONFIG(0Dh)–Slave3_numop[2:0]=5#4SENSORHUB1_REGSENSORHUB2_REGSENSORHUB3_REGSENSORHUB4_REGSENSORHUB5_REGSENSORHUB6_REGSENSORHUB7_REGSENSORHUB8_REGSENSORHUB9_REGSENSORHUB10_REGSENSORHUB11_REGSENSORHUB12_REGSENSORHUB13_REGSENSORHUB14_REGSENSORHUB15_REGSENSORHUB16_REGSENSORHUB17_REGSENSORHUB18_REG#1Valueofreg28hValueofreg29hValueofreg2AhValueofreg00hValueofreg01hValueofreg02hValueofreg03hValueofreg04hValueofreg05hValueofreg20hValueofreg21hValueofreg22hValueofreg23hValueofreg40hValueofreg41hValueofreg42hValueofreg43hValueofreg44h#2#4#3传感器#1传感器传感器传感器传感器#1传感器传感器传感器根据保密协议–不可复制AN5040传感器集合(sensorhub)模式寄存器AN5040-Rev3page64/1207.
3传感器集合(sensorhub)直连功能MASTER_CONFIG寄存器的PASS_THROUGH_MODE位用来使能/禁用I2C接口直连功能:当此位被置为1,主I2C线(例如,连接到外部微控制器)短接到辅线,以实现对外部传感器寄存器的直接访问.
建议在配置外部传感器时使用此功能.
图24.
直连功能器件SDxSCxINT2外部传感器SDASCL1.
5kOhmRVdd_IO1.
5kOhmRVdd_IOSDASCLPASS_THROUGH_MODEbit10kOhmRVdd_IO10kOhmRVdd_IOMCUSDASCL使用传感器集合(sensorhub)和直连功能时必须考虑一些限制.
可能有如下三种情形:1.
传感器集合(sensorhub)在MASTER_CONFIG寄存器的START_CONFIG位被置为0时使用(内部触发),且直连功能不使用:在使用INT2引脚时无限制.
2.
传感器集合(sensorhub)在MASTER_CONFIG寄存器的START_CONFIG位被置为0时使用(内部触发),且直连功能使用:INT2引脚必须接地;不能切换到外部触发配置(通过将START_CONFIG位置为1),并且INT2引脚上不能使用数字中断.
必须使用特定的步骤来使能/禁用直连功能:在第7.
3.
1节直连功能使能和第7.
3.
2节直连功能禁用中有相应描述.
3.
传感器集合(sensorhub)在MASTER_CONFIG寄存器的START_CONFIG位被置为1时使用(外部触发):直连功能不能使用;INT2引脚必须连接到外部传感器的数据准备就绪引脚(触发信号),并且必须执行以下步骤来避免与INT2线的冲突:a.
将CTRL6_C寄存器的TRIG_EN或LVL1_EN或LVL2_EN位置为1(将INT2引脚配置为输入引脚);b.
配置外部传感器(不使用直连功能);c.
配置传感器集合(sensorhub)SLAVEx寄存器;d.
将MASTER_CONFIG寄存器的START_CONFIG位置1;e.
将MASTER_CONFIG寄存器的MASTER_ON位置1;f.
在步骤a中将CTRL6_C寄存器中的位复位为0.
不使用直连功能的外部传感器配置示例在第7.
4节传感器集合(sensorhub)模式示例和第7.
5.
4节铁磁校准示例中给出.
根据保密协议–不可复制AN5040传感器集合(sensorhub)直连功能AN5040-Rev3page65/1207.
3.
1直连功能使能当嵌入传感器集合(sensorhub)功能禁用时,可通过将MASTER_CONFIG寄存器的PASS_THROUGH_MODE位置为1,来随时使能直连功能.
当嵌入传感器集合(sensorhub)功能使能时,必须按照特定步骤来使能直连功能,以防止I2C总线仲裁丢失:1.
将MASTER_CONFIG寄存器的START_CONFIG位置为1,以禁用传感器集合(sensorhub)触发(外部触发使能,但是在INT2引脚上不能接收到触发,因为该引脚连接到GND);2.
至少等待5ms(将会完成正在运行的I2C操作);3.
将MASTER_CONFIG寄存器的MASTER_ON位置为0,以禁用嵌入传感器集合(sensorhub);4.
将MASTER_CONFIG寄存器的START_CONFIG位置为0,以恢复传感器集合(sensorhub)触发;5.
将MASTER_CONFIG寄存器的PULL_UP_EN位置为0,以禁用I2C主线上拉;6.
将MASTER_CONFIG寄存器的PASS_THROUGH_MODE位置为1,以使能直连功能.
7.
3.
2直连功能禁用必须使用以下步骤来禁用直连:1.
等待外部微控制器连接到主I2C线完成所有正在运行的I2C操作.
在一个I2C事务过程中,直连功能无法禁用;2.
将MASTER_CONFIG寄存器的PASS_THROUGH_MODE位置0.
这时,可通过将MASTER_CONFIG寄存器的PULL_UP_EN位置为1,来恢复内部I2C主线上拉,可通过将MASTER_CONFIG寄存器的MASTER_ON位置为1,来使能辅助I2C主线.
7.
4传感器集合(sensorhub)模式示例应利用直连功能来实现外部传感器配置:此功能可通过将MASTER_CONFIG寄存器的PASS_THROUGH_MODE位置为1来使能,并且能够实现对外部传感器寄存器的直接访问,允许进行快速配置.
下面提供的代码给出了将LSM6DSL配置为传感器集合(sensorhub)模式的基本程序.
而且,该程序将LIS2MDL外部磁力计传感器(额外细节参考数据手册)配置为Continue模式,并读取磁力计输出寄存器,将其值保存到SENSORHUB1_REG到SENSORHUB6_REG寄存器中.
本例中不使用直连功能.
1.
将80h写入FUNC_CFG_ACCESS//使能对嵌入功能寄存器的访问(A区)2.
将3Ch写入SLV0_ADD//LIS2MDL从设备地址=0011110b//使能写操作(rw_0=0)3.
将60h写入SLV0_SUBADD//60h为待写入的LIS2MDL寄存器4.
将8Ch写入DATAWRITE_SRC_MODE_SUB_SLV0//8Ch为写入到LIS2MDL的寄存器60h的值//以将其配置为Continue模式,//ODR=100Hz,温度补偿使能5.
将10h写入SLAVE0_CONFIG//将Aux_sens_on位设置为不等于00b6.
将20h写入SLAVE1_CONFIG//使能write_once位7.
将00h写入FUNC_CFG_ACCESS//禁用对嵌入功能寄存器的访问(A区)8.
将04h写入CTRL10_C//使能嵌入功能9.
将09h写入MASTER_CONFIG//使能SDx/SCx线上的内部上拉//传感器集合(sensorhub)触发信号为XL数据准备就绪//使能辅助I2C主线10.
将80h写入CTRL1_XL//开启加速度计(以获取触发信号)11.
读取FUNC_SRC1//等待传感器集合通信结束12.
如果SENSORHUB_END_OP=0,转到913.
将00h写入CTRL10_C//禁用嵌入功能14.
将00h写入MASTER_CONFIG//禁用辅助I2C主线根据保密协议–不可复制AN5040传感器集合(sensorhub)模式示例AN5040-Rev3page66/12015.
将00h写入CTRL1_XL//关闭加速度计16.
将80h写入FUNC_CFG_ACCESS//使能对嵌入功能寄存器的访问(A区)17.
将3Dh写入SLV0_ADD//LIS2MDL从设备地址=0011110b//使能读操作(rw_0=1)18.
将68h写入SLV0_SUBADD//68h为待读取的第一个LIS2MDL输出寄存器19.
将06h写入SLAVE0_CONFIG//无抽取//连接了1个外部传感器//读取的寄存器数=620.
将00h写入FUNC_CFG_ACCESS//禁用对嵌入功能寄存器的访问(A区)21.
将04h写入CTRL10_C//使能嵌入功能22.
将09h写入MASTER_CONFIG//使能SDx/SCx线上的内部上拉//传感器集合(sensorhub)触发信号为XL数据准备就绪//使能辅助I2C主线23.
将80h写入CTRL1_XL//开启加速度计(以获取触发信号)根据保密协议–不可复制AN5040传感器集合(sensorhub)模式示例AN5040-Rev3page67/1207.
5磁力计硬磁/软磁校准LSM6DSL器件支持外部磁力计数据采集,并具有软磁和硬磁校准功能.
为此,需要将MASTER_CONFIG寄存器的MASTER_ON位置为1来使能传感器集合(sensorhub)模式,将外部磁力计关联到从0寄存器(SLV0_ADD,SLV0_SUBADD和SLAVE0_CONFIG),并将SLAVE0_CONFIG的Slave0_numop字段置为6.
CTRL10_C寄存器的FUNC_EN位必须置位1,以使能嵌入铁磁校准功能.
然后,可使能校准算法,如表48.
铁磁校准配置中所述:MASTER_CONFIG的IRON_EN位和CTRL9_XL的SOFT_EN位可用来单独使能硬磁校准,也可同时使能硬磁和软磁校准.
后一种情况下,校准(硬磁&软磁)和非校准(仅限软磁)磁力计数据均可用.
表48.
铁磁校准配置CTRL9_XLSOFT_EN位MASTER_CONFIGIRON_EN位铁磁校准配置00不使用校准01仅用硬磁校准11硬磁+软磁校准7.
5.
1硬磁校准硬磁失真通常由具有永久磁场的铁磁材料产生,该永久磁场是所用物体(例如,平板)的一部分;这些材料可以是永磁体或磁化铁或钢.
它们是时不变的,并且使局部磁场发生扭曲,在不同方向上产生不同偏移.

通常,如果用户在理想环境中对对象执行多次3D旋转(无硬磁/软磁失真),并画出所采集的磁传感器原始数据,其结果将是无偏移的完美球体.
硬磁失真效应是使球体沿着X、Y和Z轴偏移;在X-Y平面上,硬磁失真利用理想圆原点到(0,0)的偏移来识别,如图25.
硬磁效应(X-Y2D散点图)中所示.
根据保密协议–不可复制AN5040磁力计硬磁/软磁校准AN5040-Rev3page68/120图25.
硬磁效应(X-Y2D散点图)XY硬铁扭曲无扭曲根据保密协议–不可复制AN5040磁力计硬磁/软磁校准AN5040-Rev3page69/120在LSM6DSL器件中,3x1硬磁化矢量包含用户计算出的X、Y、Z磁偏移值,必须由专门的寄存器来显示:MAG_OFFX_L和MAG_OFFX_H寄存器专门用于X-轴偏移,MAG_OFFY_L和MAG_OFFY_H寄存器专门用于Y-轴偏移,MAG_OFFZ_L和MAG_OFFZ_H寄存器专门用于Z-轴偏移.
这些寄存器值以二进制补码的形式表示为16位字;计算硬磁寄存器值所应用的灵敏度[LSB/Gauss]对应于外部磁力计的灵敏度.

当FUNC_CFG_ACCESS寄存器的FUNC_CFG_EN位置为1时,可访问硬磁寄存器.
要使能硬磁校准算法,需要将CTRL10_C寄存器的FUNC_EN位和MASTER_CONFIG寄存器的IRON_EN位均置为1(表48.
铁磁校准配置).
7.
5.
2软磁校准软磁失真由软磁材料或载流PCB走迹线产生.
硬磁失真是恒定的,与方向无关,而软磁失真会随着对象在地球场中的方向而改变.
基本上,局部地磁场会发生变形,在不同方向上有不同增益.

软磁失真的效果是使理想的全圆球体变成倾斜的椭球体;在X-Y平面上,软磁失真利用原点在(0,0)的倾斜椭球体来识别,如图25.
硬磁效应(X-Y2D散点图)中所示.
根据保密协议–不可复制AN5040磁力计硬磁/软磁校准AN5040-Rev3page70/120图26.
软磁效应(X-Y2D散点图)XY软铁扭曲无扭曲根据保密协议–不可复制AN5040磁力计硬磁/软磁校准AN5040-Rev3page71/120LSM6DSL器件中,用户计算出的3x3软磁变换矩阵必须由9个专门的寄存器来显示:MAG_SI_XX,MAG_SI_XY,MAG_SI_XZ,MAG_SI_YX,MAG_SI_YY,MAG_SI_YZ,MAG_SI_ZX,MAG_SI_ZY,MAG_SI_ZZ.
这些寄存器值以有符号数据格式表示为8位字;对于这些寄存器,1LSB对应1/8,因此在将用户计算出的矩阵参数写入软磁寄存器之前,它们必须乘以8.
当FUNC_CFG_ACCESS寄存器的FUNC_CFG_EN位置为1时,可访问软磁寄存器.
要使能软磁校准算法,需要将CTRL10_C寄存器的FUNC_EN位、MASTER_CONFIG寄存器的IRON_EN位和CTRL9_XL寄存器的SOFT_EN位均置为1(表48.
铁磁校准配置).
根据保密协议–不可复制AN5040磁力计硬磁/软磁校准AN5040-Rev3page72/1207.
5.
3得到磁力计补偿数据可利用FUNC_SRC1寄存器对磁力计数据采集和硬磁/软磁校准的状态进行检查:当传感器集合(sensorhub)程序完成时,SENSORHUB_END_OP位被置为高电平.
采集的磁力计原始数据可在地址从66h(OUT_MAG_RAW_X_L)至6Bh(OUT_MAG_RAW_Z_H)的寄存器中获取.
当已使能的硬磁和软磁算法执行完成时,SI_END_OP位被置为高电平.
如果软磁校准使能,磁力计未校准数据(仅应用软磁)可在地址从4Dh(SENSORHUB13_REG)至52h(SENSORHUB18_REG)的寄存器中获取.
磁力计校准数据,使用了硬磁(如果使能)和软磁(如果使能)校准,可在地址从2Eh(SENSORHUB1_REG)至33h(SENSORHUB6_REG)的寄存器中获取.
如果锁存模式禁用(TAP_CFG的LIR位置为0),则SENSORHUB_END_OP和SI_END_OP位仅在1/100Hz下激活,然后它们自动取消.
如果锁存模式使能,通过读取FUNC_SRC1寄存器,可使这两位清零.
通过将MASTER_CONFIG寄存器的DRDY_ON_INT1位置为1,可将SENSORHUB_END_OP信号驱动至INT1引脚.
通过将MD2_CFG寄存器的INT2_IRON位置为1,可将SI_END_OP信号驱动至INT1引脚.
硬磁和软磁校准特性图示如下面的图27.
硬磁/软磁校准框图中所示.
如果软磁校准使能,且软磁寄存器仍然具有默认零值,那么磁力计校准数据和磁力计非标准数据也将等于零.
因此,当软磁校准使能,软磁变换矩阵必须至少初始化为单位矩阵乘以8,将MAG_SI_XX、MAG_SI_YY和MAG_SI_ZZ寄存器的值置为08h.
图27.
硬磁/软磁校准框图M_raw(3x1)=HI(3x1):硬磁化矢量MAG_OFFX_H&MAG_OFFX_LMAG_OFFY_H&MAG_OFFY_LMAG_OFFZ_H&MAG_OFFZ_LSI(3X3):软铁旋转矩阵MAG_SI_XXMAG_SI_YXMAG_SI_ZXMAG_SI_XYMAG_SI_YYMAG_SI_ZYMAG_SI_XZMAG_SI_YZMAG_SI_ZZHI(3x1)SI(3x3)MxMyMzSI(3x3)*[M_raw(3x1)–HI(3x1)]SI(3x3)*[M_raw(3x1)–HI(3x1)]+HI(3x1)MASTER_CONFIGIRON_ENCTRL9_XLSOFT_EN硬铁修正算法软铁修正算法MAG原始数据:(从寄存器66h到寄存器6Bh)MAG校准数据:(从寄存器2Eh到寄存器33h)MAG未校准数据:(从寄存器4Dh到寄存器52h)7.
5.
4铁磁校准示例以下示例演示了如何从计算出的硬磁矢量和软磁旋转矩阵开始,定义分配到硬磁和软磁校准寄存器的值.
本例中涉及LIS2MDL磁力计传感器的使用.
硬磁(X,Y,Z)偏移值矢量(高斯):HI3x1=0.
3356050.
1264870.
114722这三个偏移值必须除以LIS2MDL灵敏度值(0.
0015高斯/LSB),以获得要写入到硬磁校准寄存器的LSB值(表49.
硬磁寄存器值).
根据保密协议–不可复制AN5040磁力计硬磁/软磁校准AN5040-Rev3page73/120表49.
硬磁寄存器值偏移值[LSB]寄存器值X-224(FF20h)MAG_OFFX_H=FFhMAG_OFFX_L=20h是84(0054h)MAG_OFFY_H=00hMAG_OFFY_L=54hZ-76(FFB4h)MAG_OFFZ_H=FFhMAG_OFFZ_L=B4h软磁旋转矩阵:SI3x3)=1.
2290060.
1739170.
0523270.
1739171.
0333070.
1300890.
0523270.
1300891.
243645这些软磁矩阵元素必须乘以8,以获得要写入到软磁校准寄存器的LSB值(表50.
软磁寄存器值).
LSB值表示为有符号数据格式.
表50.
软磁寄存器值软磁矩阵元素寄存器值XX+1.
229006MAG_SI_XX=0AhXY+0.
173917MAG_SI_XY=01hXZ+0.
052327MAG_SI_XZ=00hYX+0.
173917MAG_SI_YX=01hYY+1.
033307MAG_SI_YY=08hYZ-0.
130089MAG_SI_YZ=81hZX+0.
052327MAG_SI_ZX=00hZY-0.
130089MAG_SI_ZY=81hZZ+1.
243645MAG_SI_ZZ=0Ah下面提供的代码给出了将LIS2MDL外部磁力计传感器(更多详细信息请参考数据手册)配置为Continue模式,初始化硬磁和软磁校准寄存器,以及读取磁力计输出寄存器的基本程序.
本实例中,磁力计配置中不使用直连功能.

1.
将80h写入FUNC_CFG_ACCESS//使能对嵌入功能寄存器的访问(A区)2.
将3Ch写入SLV0_ADD//LIS2MDL从设备地址=0011110b//使能写操作(rw_0=0)3.
将60h写入SLV0_SUBADD//60h为待写入的LIS2MDL寄存器4.
将8Ch写入DATAWRITE_SRC_MODE_SUB_SLV0//8Ch为写入到LIS2MDL的寄存器60h的值//以将其配置为Continue模式,//ODR=100Hz,温度补偿使能5.
将10h写入SLAVE0_CONFIG//将Aux_sens_on位设置为不等于00b6.
将20h写入SLAVE1_CONFIG//使能write_once位7.
将00h写入FUNC_CFG_ACCESS//禁用对嵌入功能寄存器的访问(A区)8.
将04h写入CTRL10_C//使能嵌入功能根据保密协议–不可复制AN5040磁力计硬磁/软磁校准AN5040-Rev3page74/1209.
将09h写入MASTER_CONFIG//使能SDx/SCx线上的内部上拉//传感器集合(sensorhub)触发信号为XL数据准备就绪//使能辅助I2C主线10.
将80h写入CTRL1_XL//开启加速度计(以获取触发信号)11.
读取FUNC_SRC1//等待传感器集合通信结束12.
如果SENSORHUB_END_OP=0,转到913.
将00h写入CTRL10_C//禁用嵌入功能14.
将00h写入MASTER_CONFIG//禁用辅助I2C主线15.
将00h写入CTRL1_XL//关闭加速度计16.
将80h写入FUNC_CFG_ACCESS//使能对嵌入功能寄存器的访问(A区)17.
将3Dh写入SLV0_ADD//LIS2MDL从设备地址=0011110b//使能读操作(rw_0=1)18.
将68h写入SLV0_SUBADD//68h为待读取的第一个LIS2MDL输出寄存器19.
将06h写入SLAVE0_CONFIG//无抽取//连接了1个外部传感器//读取的寄存器数=620.
将FFh写入MAG_OFFX_H//X偏移值初始化21.
将20h写入MAG_OFFX_L//X偏移值初始化22.
将00h写入MAG_OFFY_H//Y偏移值初始化23.
将54h写入MAG_OFFY_L//Y偏移值初始化24.
将FFh写入MAG_OFFZ_H//Z偏移值初始化25.
将B4h写入MAG_OFFZ_L//Z偏移值初始化26.
将0Ah写入MAG_SI_XX//XX软磁参数27.
将01h写入MAG_SI_XY//XY软磁参数28.
将00h写入MAG_SI_XZ//XZ软磁参数29.
将01h写入MAG_SI_YX//YX软磁参数30.
将08h写入MAG_SI_YY//YY软磁参数31.
将81h写入MAG_SI_YZ//YZ软磁参数32.
将00h写入MAG_SI_ZX//ZX软磁参数33.
将81h写入MAG_SI_ZY//ZY软磁参数34.
将0Ah写入MAG_SI_ZZ//ZZ软磁参数35.
将00h写入FUNC_CFG_ACCESS//禁用对嵌入功能寄存器的访问(A区)36.
将04h写入CTRL10_C//使能嵌入功能37.
将0Bh写入MASTER_CONFIG//使能SDx/SCx线上的内部上拉//传感器集合(sensorhub)触发信号为XL数据准备就绪//使能硬磁校准//使能辅助I2C主线38.
将04h写入CTRL9_XL//使能软磁校准39.
将80h写入CTRL1_XL//开启加速度计(以获取触发信号)采集的磁力计原始数据可在地址从66h(OUT_MAG_RAW_X_L)至6Bh(OUT_MAG_RAW_Z_L)的寄存器中获取.
根据保密协议–不可复制AN5040磁力计硬磁/软磁校准AN5040-Rev3page75/120磁力计非校准数据(仅使用软磁)可在地址从4Dh(SENSORHUB13_REG)至52h(SENSORHUB18_REG)的寄存器中获取.
磁力计校准数据(使用了硬磁和软磁校准)可在地址从2Eh(SENSORHUB1_REG)至33h(SENSORHUB6_REG)的寄存器中获取.
根据保密协议–不可复制AN5040磁力计硬磁/软磁校准AN5040-Rev3page76/1208先进先出(FIFO)缓冲区为了限制主处理器干预并简化事件识别的后处理数据,LSM6DSL嵌入了一个4kB的先进先出缓冲器(FIFO).
FIFO可配置为存储以下数据:陀螺仪传感器数据;加速度计传感器数据;外部传感器(连接到传感器集合(sensorhub)接口)数据;计步器和时间戳数据;温度传感器数据.
将数据保存在FIFO缓冲器是基于四个"FIFO数据集",每个数据集由6个字节构成:第1FIFO数据集预留给陀螺仪数据;第2FIFO数据集预留给加速度计数据;第3FIFO数据集预留给存储在从SENSORHUB1_REG至SENSORHUB6_REG的寄存器中外部传感器数据(关于SENSORHUBx_REG的详细信息,请参考第7.
2.
10节SENSORHUBx_REG寄存器);第4FIFO数据集可交替关联到外部传感器数据(存储在从SENSORHUB7_REG至SENSORHUB12_REG的寄存器中)、计步器和时间戳信息,或温度传感器数据.
通过设置FIFO_CTRL3和FIFO_CTRL4寄存器的抽取因子,所有这些数据集能够以不同的ODR存储在FIFO中.
抽取因子也可用来选择哪个FIFO数据集必须存储在FIFO中.
利用FIFO_CTRL5寄存器的FIFO_MODE_[2:0]位,有五种不同的FIFO操作模式可供选择:Bypass模式;FIFO模式;Continue模式;Continue-FIFO模式;Bypass-Continue模式.
注意:当使用FIFO时,CTRL3_C寄存器的IF_INC和BDU位必须等于1.
通过两个专用寄存器从FIFO中恢复数据:FIFO_DATA_OUT_L和FIFO_DATA_OUT_H.
这样,数据可从FIFO(以较低ODR)或从器件输出寄存器(以正常ODR)进行读取.
要监控FIFO状态(满,空,存储的采样数,等等),可以使用四个专用寄存器:FIFO_STATUS1,FIFO_STATUS2,FIFO_STATUS3,FIFO_STATUS4.
可编程FIFO阈值可以利用FTH_[10:0]位在FIFO_CTRL1和FIFO_CTRL2中进行设置.
通过INT1_CTRL寄存器的INT1_FULL_FLAG、INT1_FTH和INT1_FIFO_OVR位,以及INT2_CTRL寄存器的INT2_FULL_FLAG、INT2_FTH和INT2_FIFO_OVR位,可以使能FIFO满、FIFO阈值和FIFO溢出事件,在两个中断引脚(INT1和INT2)上产生专门的中断.
要增加可存储在FIFO中的采样数,还可以通过将FIFO_CTRL4寄存器的ONLY_HIGH_DATA置为1,只存储(作为第1个FIFO数据集)加速度计和陀螺仪数据的8个最高有效位.
向FIFO中写入数据可由加速度计/陀螺仪数据准备就绪来触发;还可由传感器集合(sensorhub)数据准备就绪(对应FUNC_SRC1寄存器SENSORHUB_END_OP位特性):这种情况下,MASTER_CONFIG寄存器的DATA_VALID_SEL_FIFO位必须置为1.
而且,如果DATA_VALID_SEL_FIFO被置为0,且FIFO_CTRL2寄存器的TIMER_PEDO_FIFO_DRDY位被置为1,则每次检测到一步时,数据存储到FIFO中.
8.
1FIFO寄存器FIFO缓冲器由以下几项管理:五个控制寄存器(从FIFO_CTRL1至FIFO_CTRL5);四个状态寄存器(从FIFO_STATUS1至FIFO_STATUS4);两个数据输出寄存器(FIFO_DATA_OUT_L和FIFO_DATA_OUT_H);一些附加位,用来使能阈值使用(STOP_ON_FTH)和将FIFO满、阈值或溢出事件发送至两个中断引脚(位:INT1_FULL_FLAG、INT2_FULL_FLAG、INT1_FTH、INT2_FTH、INT1_FIFO_OVR、INT2_FIFO_OVR).
根据保密协议–不可复制AN5040先进先出(FIFO)缓冲区AN5040-Rev3page77/1208.
1.
1FIFO_CTRL1(06h)FIFO_CTRL1寄存器包含11位FIFO阈值的低位部分.
对于完整的阈值配置,还要考虑FIFO_CTRL2寄存器的FTH_[10:8]位.
FIFO阈值的值是指16位格式的数据.
当FIFO中存储的字节数大于或等于阈值水平时,FIFO水印标记(FIFO_STATUS2寄存器的WaterM位)升高.
要将FIFO深度限制为水印级别,FIFO_CTRL4寄存器中STOP_ON_FTH位必须设置为1.
表51.
FIFO_CTRL1寄存器b7b6b5b4b3b2b1b0FTH_7FTH_6FTH_5FTH_4FTH_3FTH_2FTH_1FTH_08.
1.
2FIFO_CTRL2(07h)表52.
FIFO_CTRL2寄存器b7b6b5b4b3b2b1b0TIMER_PEDO_FIFO_ENTIMER_PEDO_FIFO_DRDY00FIFO_TEMP_ENFTH_10FTH_9FTH_8TIMER_PEDO_FIFO_EN将计步器和时间戳数据作为第4FIFO数据集存储起来.
当此位置为1时,FIFO中存储的6个字节内容如第8.
8节FIFO中的计步器和时间戳数据中所示.
TIMER_PEDO_FIFO_DRDY.
当此位置为1,并且MASTER_CONFIG寄存器的DATA_VALID_SEL_FIFO位被置为0时,每次计步器检测到新的一步时,所有数据均存储到FIFO中.
详细信息,请参见第8.
3节设置FIFO触发、FIFOODR和抽取因子.
FIFO_TEMP_EN位能够将温度数据作为第四个FIFO数据集存储起来.
当此位置为1时,FIFO中存储的6个字节内容如第8.
9节FIFO中的温度数据中所示.
FTH_[10:8]包含了FIFO阈值的高位部分.
对于完整的阈值配置,还要考虑FIFO_CTRL1寄存器的FTH_[7:0]位.
根据保密协议–不可复制AN5040FIFO寄存器AN5040-Rev3page78/1208.
1.
3FIFO_CTRL3(08h)FIFO_CTRL3寄存器包含了加速度计和陀螺仪FIFO抽取因子,用于选择这些传感器的数据是否必须存储到FIFO中,以及以什么速率进行存储.
当DEC_FIFO_GYRO[2:0]位被置为000b,第1FIFO数据集(预留给陀螺仪数据)不存储在FIFO中.
当DEC_FIFO_XL[2:0]位被置为000b时,第2FIFO数据集(预留给加速度计数据)不存储在FIFO中.
表53.
FIFO_CTRL3寄存器b7b6b5b4b3b2b1b000DEC_FIFO_GYRO2DEC_FIFO_GYRO1DEC_FIFO_GYRO0DEC_FIFO_XL2DEC_FIFO_XL1DEC_FIFO_XL0表54.
陀螺仪FIFO抽取设置DEC_FIFO_GYRO[2:0]配置000陀螺仪传感器不在FIFO中001//无抽取010抽取因子为2011抽取因子为3100抽取因子为4101抽取因子为8110抽取因子为16111抽取因子为32表55.
加速度计FIFO抽取设置DEC_FIFO_XL[2:0]配置000加速度计传感器不在FIFO中001//无抽取010抽取因子为2011抽取因子为3100抽取因子为4101抽取因子为8110抽取因子为16111抽取因子为32根据保密协议–不可复制AN5040FIFO寄存器AN5040-Rev3page79/1208.
1.
4FIFO_CTRL4(09h)FIFO_CTRL4寄存器含有抽取因子,用来定义第3FIFO和第4FIFO数据集所关联的数据以多少数据率存储到FIFO中.
当DEC_DS3_FIFO[2:0]位置为000b时,第3个FIFO数据集不存储在FIFO中.
当DEC_DS4_FIFO[2:0]位被置为000b时,第4个FIFO数据集不存储在FIFO中.
FIFO_CTRL4寄存器还还有位ONLY_HIGH_DATA,该位允许只将加速度计和陀螺仪数据的高位部分(最高有效字节)存储到FIFO中,以增加FIFO中加速度计和陀螺仪的最大采样数.
关于此功能的更多详细信息,参见第8.
7节陀螺仪和加速度计数据的高位部分.
FIFO_CTRL4寄存器包含了位STOP_ON_FTH,可将FIFO深度限制在水印级别.
表56.
FIFO_CTRL4寄存器b7b6b5b4b3b2b1b0STOP_ON_FTHONLY_HIGH_DATADEC_DS4_FIFO2DEC_DS4_FIFO1DEC_DS4_FIFO0DEC_DS3_FIFO2DEC_DS3_FIFO1DEC_DS3_FIFO0表57.
第3FIFO数据集抽取设置DEC_DS3_FIFO[2:0]配置000第3FIFO数据集不在FIFO中001//无抽取010抽取因子为2011抽取因子为3100抽取因子为4101抽取因子为8110抽取因子为16111抽取因子为32表58.
第4FIFO数据集抽取设置DEC_DS4_FIFO[2:0]配置000第4FIFO数据集不在FIFO中001//无抽取010抽取因子为2011抽取因子为3100抽取因子为4101抽取因子为8110抽取因子为16111抽取因子为328.
1.
5FIFO_CTRL5(0Ah)FIFO_CTRL5寄存器包含FIFO操作模式位(FIFO_MODE_[2:0])和FIFO输出数据率位(ODR_FIFO_[3:0]).
FIFO操作模式如第8.
2节FIFO模式中所示.
根据保密协议–不可复制AN5040FIFO寄存器AN5040-Rev3page80/120当使用内部触发(加速度计/陀螺仪数据准备就绪)时,ODR_FIFO_[3:0]位定义数据存储到FIFO中的最大数据率.
利用FIFO抽取因子,数据能够以较低速率存储到FIFO中.
关于FIFO触发和FIFOODR配置的更多信息,参见第8.
3节设置FIFO触发、FIFOODR和抽取因子.
注意:当使用FIFO时,CTRL3_C寄存器的IF_INC位必须等于1.
表59.
FIFO_CTRL5寄存器b7b6b5b4b3b2b1b00ODR_FIFO_3ODR_FIFO_2ODR_FIFO_1ODR_FIFO_0FIFO_MODE_2FIFO_MODE_1FIFO_MODE_0表60.
FIFOODR选择设置ODR_FIFO[3:0]配置0000FIFO禁用0001FIFOODR被置为12.
5Hz0010FIFOODR被置为26Hz0011FIFOODR被置为52Hz0100FIFOODR被置为104Hz0101FIFOODR被置为208Hz0110FIFOODR被置为416Hz0111FIFOODR被置为833Hz1000FIFOODR被置为1.
66kHz1001FIFOODR被置为3.
33kHz1010FIFOODR被置为6.
66kHz表61.
FIFO模式选择FIFO_MODE[2:0]配置000Bypass模式.
FIFO禁用.
001FIFO模式.
当FIFO满时,停止采集数据.
010Reserved011直至触发条件满足前均为Continue模式,条件满足后进入FIFO模式.
100直至触发条件满足前均为Bypass模式,条件满足后进入Continue模式.
101Reserved110Continue模式.
如果FIFO已满,则新的采样将会覆盖原有值.
111Reserved8.
1.
6FIFO_STATUS1(3Ah)FIFO_STATUS1寄存器,连同FIFO_STATUS2寄存器一起,可提供FIFO中存储的采样数相关信息.
每个采样被表示为16位数据.
表62.
FIFO_STATUS1寄存器b7b6b5b4b3b2b1b0DIFF_DIFF_DIFF_DIFF_DIFF_DIFF_DIFF_DIFF_根据保密协议–不可复制AN5040FIFO寄存器AN5040-Rev3page81/120b7b6b5b4b3b2b1b0FIFO_7FIFO_6FIFO_5FIFO_4FIFO_3FIFO_2FIFO_1FIFO_08.
1.
7FIFO_STATUS2(3Bh)FIFO_STATUS2寄存器,连同FIFO_STATUS1寄存器一起,可提供FIFO中存储的采样数相关信息和FIFO缓冲器当前状态信息(水印,溢出,满,空).
表63.
FIFO_STATUS2寄存器b7b6b5b4b3b2b1b0WaterMOVER_RUNFIFO_FULL_SMARTFIFO_空0DIFF_FIFO_10DIFF_FIFO_9DIFF_FIFO_8WaterM表示水印状态.
当FIFO中已存储的字节数大于等于水印水平,则此位被置为高电平(每个采样表示为16位数据).
通过将INT1_CTRL寄存器的INT1_FTH位或INT2_CTRL寄存器的INT2_FTH位置为1,可将水印状态驱动至两个中断引脚上.
当FIFO溢出,至少一个采样已经被覆盖掉以存储新数据时,OVER_RUN置为高电平.
通过将INT1_CTRL寄存器的INT1_FIFO_OVR位或INT2_CTRL寄存器的INT2_FIFO_OVR位置为1,可将此信号驱动至两个中断引脚上.
当要存储在FIFO中的下一数据集将要使FIFO满时,FIFO_FULL_SMART被置为高电平.
通过将INT1_CTRL寄存器的INT1_FULL_FLAG位或INT2_CTRL寄存器的INT2_FULL_FLAG位置为1,可将此信号驱动至两个中断引脚上.
当FIFO空时,FIFO_EMPTY置为高电平.
DIFF_FIFO_[10:8]包含FIFO中存储的未读字(16位数据)数的高位部分.
其低位部分由FIFO_STATUS1中的DIFF_FIFO_[7:0]位表示.
DIFF_FIFO_[10:0]字段的值对应FIFO中的采样数(每个采样表示为16位数据).
当发生FIFO溢出事件时(OVER_RUN位置为高电平),DIFF_FIFO_[10:0]字段的值置为0.
寄存器内容与FIFO读写操作同步更新,如表64.
FIFO_STATUS2特性(一个传感器处于FIFO模式,且STOP_ON_FTH=0的情况下)所示.
表64.
FIFO_STATUS2特性(一个传感器处于FIFO模式,且STOP_ON_FTH=0的情况下)FIFO_OVER_RUNFIFO_FULLFIFO_EMPTYDIFF_FIFO_[10:0]FIFO采样数FIFO触发时序00100t000033t100066t200020442044t_full-201020472047t_full-111002048(旧的采样被覆盖)t_full8.
1.
8FIFO_STATUS3(3Ch)FIFO_STATUS3寄存器,连同FIFO_STATUS4寄存器一起,指明了下次读取时读取哪个传感器哪个轴上的数据.
关于如何从FIFO中恢复数据,更多信息参见第8.
5节FIFO标识.
表65.
FIFO_STATUS3寄存器b7b6b5b4b3b2b1b0FIFO_PATTERNFIFO_PATTERNFIFO_PATTERNFIFO_PATTERNFIFO_PATTERNFIFO_PATTERNFIFO_PATTERNFIFO_PATTERN根据保密协议–不可复制AN5040FIFO寄存器AN5040-Rev3page82/120b7b6b5b4b3b2b1b0_7_6_5_4_3_2_1_08.
1.
9FIFO_STATUS4(3Dh)FIFO_STATUS4寄存器,连同FIFO_STATUS3寄存器一起,指明了下次读取时读取哪个传感器哪个轴上的数据.
关于如何从FIFO中恢复数据,更多信息参见第8.
5节FIFO标识.
表66.
FIFO_STATUS4寄存器b7b6b5b4b3b2b1b0000000FIFO_PATTERN_9FIFO_PATTERN_88.
1.
10FIFO_DATA_OUT_L(3Eh)FIFO_DATA_OUT_L寄存器为FIFO输出数据的最低有效字节.
最高有效字节存储在FIFO_DATA_OUT_H寄存器中.
关于如何从FIFO中恢复数据,更多信息参见第8.
4节从FIFO恢复数据.
表67.
FIFO_DATA_OUT_L寄存器b7b6b5b4b3b2b1b0DATA_OUT_FIFO_L_7DATA_OUT_FIFO_L_6DATA_OUT_FIFO_L_5DATA_OUT_FIFO_L_4DATA_OUT_FIFO_L_3DATA_OUT_FIFO_L_2DATA_OUT_FIFO_L_1DATA_OUT_FIFO_L_08.
1.
11FIFO_DATA_OUT_H(3Fh)FIFO_DATA_OUT_H寄存器为FIFO输出数据的最高有效字节.
最低有效字节存储在FIFO_DATA_OUT_L寄存器中.
关于如何从FIFO中恢复数据,更多信息参见第8.
4节从FIFO恢复数据.
表68.
FIFO_DATA_OUT_H寄存器b7b6b5b4b3b2b1b0DATA_OUT_FIFO_H_7DATA_OUT_FIFO_H_6DATA_OUT_FIFO_H_5DATA_OUT_FIFO_H_4DATA_OUT_FIFO_H_3DATA_OUT_FIFO_H_2DATA_OUT_FIFO_H_1DATA_OUT_FIFO_H_08.
2FIFO模式通过FIFO_CTRL5寄存器的FIFO_MODE_[2:0]字段,LSM6DSLFIFO缓冲器可配置为五种不同的可选工作模式.
可用配置确保了高度灵活性,并扩展了可用于应用开发的功能数量.
以下段落描述了Bypass、FIFO、Continue、Continue-FIFO和Bypass-Continue模式.
注意:当使用FIFO时,CTRL3_C寄存器的IF_INC位必须等于1.
8.
2.
1Bypass模式使能Bypass模式时,FIFO不使用,缓冲器内容被清零,并保持为空,直至选择了另一种模式.
当FIFO_MODE_[2:0]位被置为000b时,选用Bypass模式.
当此模式使能,FIFO_STATUS2寄存器含有值10h(FIFO空).
当在不同模式下工作时,要停止和复位FIFO缓冲器,必须使用Bypass模式.
注意,将FIFO缓冲器置于Bypass模式时,整个缓冲器内容会被清零.
8.
2.
2FIFO模式FIFO模式中,缓冲器继续填充直至填满.
然后停止采集数据,FIFO内容保持不变,直至选用不同模式.
按照这些步骤进行FIFO模式配置(如果加速度计/陀螺仪数据准备就绪被用作FIFO触发):根据保密协议–不可复制AN5040FIFO模式AN5040-Rev3page83/1201.
通过FIFO_CTRL3和FIFO_CTRL4寄存器中的抽取位来为每个传感器选择抽取因子(详细信息参见第8.
3节设置FIFO触发、FIFOODR和抽取因子);2.
通过FIFO_CTRL5寄存器中的ODR_FIFO_[3:0]位选择FIFOODR;3.
将FIFO_CTRL5寄存器中的FIFO_MODE_[2:0]位置为001b来使能FIFO模式.
当选用此模式时,FIFO开始采集数据.
FIFO_STATUS1和FIFO_STATUS2寄存器根据所存储的采样数来更新.
当下一个要存储的数据集将会使FIFO满时,FIFO_STATUS2寄存器的FIFO_FULL_SMART位被置为1,不再有数据存储到FIFO缓冲器中.
通过读取FIFO_DATA_OUT_L和FIFO_DATA_OUT_H寄存器获取FIFO_STATUS1和FIFO_STATUS2寄存器的DIFF_FIFO_[10:0]位所指定的次数,可在FIFO_FULL_SMART事件后恢复.
利用FIFO_STATUS2寄存器的WaterM位,如果应用要求FIFO中采样数较低,则数据还可在达到阈值(FIFO_CTRL1和FIFO_CTRL2寄存器中的FTH_[10:0])时恢复.
如果FIFO_CTRL4寄存器的STOP_ON_FTH位置为1,则FIFO空间大小被限制为FIFO_CTRL1和FIFO_CTRL2寄存器中FTH_[10:0]位的值:这种情况下,当下一次FIFO写操作时FIFO中采样数达到或超过FTH_[11:0]值,那么FIFO_STATUS2寄存器的FIFO_FULL_SMART位会被置为高电平.
FIFO模式下通信速度不是很重要,因为数据采集已停止,不存在已采集数据被覆盖的风险.
重启FIFO模式之前,需要首先设置为Bypass模式,以完全清空FIFO内容.
图28.
FIFO模式(STOP_ON_FTH=0)显示了FIFO模式使用的示例.
示例中,X-Y-Z数据(绿色单元表示采样数)只来自一个传感器,存储到FIFO中.
这些条件下,FIFO中可存储2046个16位采样值.
根据保密协议–不可复制AN5040FIFO模式AN5040-Rev3page84/120图28.
FIFO模式(STOP_ON_FTH=0)tFIFO_FULL_SMARTFIFO读取…29652964…2045……543210…F1F0…F2045……F5F4F3F2F1F0FIFO停止FIFOBypassFIFO模式启用FIFO模式启用根据保密协议–不可复制AN5040FIFO模式AN5040-Rev3page85/1208.
2.
3Continue模式Continue模式中,FIFO连续填充.
当缓冲器满时,FIFO索引重新从头开始,原有数据被新数据替代.
最早先的数据继续被覆盖,直至读取操作释放了FIFO空间.
要实现空间释放速度快于新数据产生速度,主处理器读取速度很重要.
要停止此配置,必须选用Bypass模式.
按照这些步骤进行Continue模式配置(如果加速度计/陀螺仪数据准备就绪被用作FIFO触发):1.
通过FIFO_CTRL3和FIFO_CTRL4寄存器中的抽取位来为每个传感器选择抽取因子(详细信息参见第8.
3节设置FIFO触发、FIFOODR和抽取因子);2.
通过FIFO_CTRL5寄存器中的ODR_FIFO_[3:0]位选择FIFOODR;3.
将FIFO_CTRL5寄存器中FIFO_MODE_[2:0]位置为110b来使能FIFOContinue模式.
当选用此模式时,FIFO连续采集数据.
FIFO_STATUS1和FIFO_STATUS2寄存器根据所存储的采样数来更新.
当下一个要存储的数据集将会使FIFO满时,FIFO_STATUS2寄存器的FIFO_FULL_SMART位被置为1.
FIFO_STATUS2寄存器的OVER_RUN位表示至少有一个采样被覆盖以存储新数据.
通过读取FIFO_DATA_OUT_L和FIFO_DATA_OUT_H寄存器获取FIFO_STATUS1和FIFO_STATUS2寄存器的DIFF_FIFO_[10:0]位所指定的次数,可在FIFO_FULL事件后恢复.
利用FIFO_STATUS2寄存器的WaterM位,数据还可在达到阈值(FIFO_CTRL1和FIFO_CTRL2寄存器中的FTH_[10:0])时恢复.
如果FIFO_CTRL4寄存器的STOP_ON_FTH位置为1,则FIFO空间大小被限制为FIFO_CTRL1和FIFO_CTRL2寄存器中FTH_[10:0]位的值:这种情况下,当下一次FIFO写操作时FIFO中采样数达到FTH_[10:0]值,那么FIFO_STATUS2寄存器的FIFO_FULL_SMART位会被置为高电平.
要释放FIFO空间用于新数据,建议读取速度比1*ODR至少快已使能FIFO数据数的三倍:这能够避免丢失数据.
图29.
Continue模式显示了Continue模式使用的示例.
示例中,X-Y-Z数据(绿色单元表示采样数)仅来自一个传感器,存储到FIFO中,并且读取速度快于1*ODR,因此无数据丢失.
这些条件下,所存储的16位采样数为2046.
根据保密协议–不可复制AN5040FIFO模式AN5040-Rev3page86/120图29.
Continue模式tContinue模式启用启动FIFO读取……409340924091…204720462045……543210……F1F0F2045…F1F0F2045……F5F4F3F2F1F0FIFO_FULL_SMARTFIFO读取16位数据X-Y-Z数据启动FIFO读取根据保密协议–不可复制AN5040FIFO模式AN5040-Rev3page87/1208.
2.
4Continue-FIFO模式此模式是先前所述的Continue和FIFO模式的组合.
在Continue-FIFO模式中,FIFO缓冲器开始工作于Continue模式,当发生事件条件时切换为FIFO模式.
事件条件可为以下之一:双击:必须配置事件检测,并且MD2_CFG寄存器的INT2_DOUBLE_TAP位必须被置为1;倾斜:必须配置事件检测,并且MD2_CFG寄存器的INT2_TILT位必须被置为1;计步运动:必须配置事件检测,并且INT1_CTRL寄存器的INT1_STEP_DETECTOR位必须被置为1;单击:必须配置事件检测,并且MD2_CFG寄存器的INT2_SINGLE_TAP位必须被置为1;双击:必须配置事件检测,并且MD2_CFG寄存器的INT2_DOUBLE_TAP位必须被置为1;自由落体:必须配置事件检测,并且MD2_CFG寄存器的INT2_FF位必须被置为1;唤醒:必须配置事件检测,并且MD2_CFG寄存器的INT2_WU位必须被置为1;6D:必须配置事件检测,并且MD2_CFG寄存器的INT2_6D位必须被置为1.
Continue-FIFO模式对中断信号的边沿感应:在第一次中断事件时,FIFO从Continue模式变为FIFO模式,并维持该模式,直到Bypass模式被置位.
根据保密协议–不可复制AN5040FIFO模式AN5040-Rev3page88/120图30.
Continue-FIFO模式F0中断事件tFIFO读取2048204720462045……543210F2045F2F1FIFO_FULL_SMART16位数据启动FIFO读取FIFO停止FIFO不停止Continue-FIFO模式启用根据保密协议–不可复制AN5040FIFO模式AN5040-Rev3page89/120按照这些步骤进行Continue-FIFO模式配置(如果加速度计/陀螺仪数据准备就绪被用作FIFO触发):1.
配置先前所述的其中一个事件;2.
通过FIFO_CTRL3和FIFO_CTRL4寄存器中的抽取位来为每个传感器选择抽取因子(详细信息参见第8.
3节设置FIFO触发、FIFOODR和抽取因子);3.
通过FIFO_CTRL5寄存器中的ODR_FIFO_[3:0]位选择FIFOODR;4.
将FIFO_CTRL5寄存器中FIFO_MODE_[2:0]位置为011b来使能Continue-FIFO模式.
在Continue-FIFO模式中,FIFO缓冲器连续填充;当下一次存储的数据集会填满FIFO时,FIFO_FULL_SMART位置为高电平.
如果FIFO_CTRL4寄存器的STOP_ON_FTH位置为1,则FIFO空间大小被限制为FIFO_CTRL1和FIFO_CTRL2寄存器中FTH_[10:0]位的值:这种情况下,当下一次FIFO写操作时FIFO中采样数达到或超过FTH_[11:0]值,那么FIFO_STATUS2寄存器的FIFO_FULL_SMART位会被置为高电平.
发生触发事件时,可观察到两种不同的情况:1.
如果FIFO缓冲器已满(FIFO_FULL_SMART=1),则事件触发后第一次采样时即停止采集数据.
FIFO内容由该事件之前所采集的采样组成.
2.
如果FIFO尚未满(初始瞬态),则继续填充直至填满(FIFO_FULL_SMART=1),然后如果触发仍然存在,则停止采集数据.
Continue-FIFO可用来分析产生中断的采样历史;当触发FIFO模式,且FIFO缓冲器已满、停止填充时,标准操作是读取FIFO内容.
根据保密协议–不可复制AN5040FIFO模式AN5040-Rev3page90/1208.
2.
5Bypass-Continue模式此模式是先前所述的Bypass和Continue模式的组合.
在Bypass-Continue模式中,FIFO缓冲器开始工作于Bypass模式,当发生事件条件时切换为Continue模式.
事件条件可为以下之一:双击:必须配置事件检测,并且MD2_CFG寄存器的INT2_DOUBLE_TAP位必须被置为1;倾斜:必须配置事件检测,并且MD2_CFG寄存器的INT2_TILT位必须被置为1;计步运动:必须配置事件检测,并且INT1_CTRL寄存器的INT1_STEP_DETECTOR位必须被置为1;单击:必须配置事件检测,并且MD2_CFG寄存器的INT2_SINGLE_TAP位必须被置为1;双击:必须配置事件检测,并且MD2_CFG寄存器的INT2_DOUBLE_TAP位必须被置为1;自由落体:必须配置事件检测,并且MD2_CFG寄存器的INT2_FF位必须被置为1;唤醒:必须配置事件检测,并且MD2_CFG寄存器的INT2_WU位必须被置为1;6D:必须配置事件检测,并且MD2_CFG寄存器的INT2_6D位必须被置为1.
Bypass-Continue模式对中断信号的边沿感应:在第一次中断事件时,FIFO从Bypass模式切换到Continue模式,并维持该模式,直到Bypass模式被置位.
按照这些步骤进行Bypass-Continue模式配置(如果加速度计/陀螺仪数据准备就绪被用作FIFO触发):1.
配置先前所述的其中一个事件;2.
通过FIFO_CTRL3和FIFO_CTRL4寄存器中的抽取位来为每个传感器选择抽取因子(详细信息参见第8.
3节设置FIFO触发、FIFOODR和抽取因子);3.
通过FIFO_CTRL5寄存器中的ODR_FIFO_[3:0]位选择FIFOODR.
4.
将FIFO_CTRL5寄存器中FIFO_MODE_[2:0]位置为100b来使能Bypass-Continue模式.
根据保密协议–不可复制AN5040FIFO模式AN5040-Rev3page91/120图31.
Bypass-Continue模式F0t……409640954094…205020492048……543210……F1F0F2045…F1F0F2045……F2F1FIFO_FULL_SMARTFIFO读取中断事件FIFO切换到Continue模式启动FIFO读取启动FIFO读取FIFO切换到Bypass模式Bypass-Continue模式启用根据保密协议–不可复制AN5040FIFO模式AN5040-Rev3page92/120当出现触发条件且缓冲器切换至Continue模式时,FIFO缓冲器继续填充.
当下一个要存储的数据集将会使FIFO满时,FIFO_FULL_SMART位被置为高电平.
Bypass-Continue可用来在产生所配置中断时启动采集.
根据保密协议–不可复制AN5040FIFO模式AN5040-Rev3page93/1208.
3设置FIFO触发、FIFOODR和抽取因子向FIFO中写入数据可配置为由三种不同的源来触发.
图32.
FIFO触发信号选择F(odr)F(odr)=min(MAX(ODR_XL,ODR_G),ODR_FIFO)FIFOODR_XLODR_GODR_FIFODATA_VALID_SEL_FIFO=0TIMER_PEDO_FIFO_DRDY=0DATA_VALID_SEL_FIFO=0TIMER_PEDO_FIFO_DRDY=1STEP_DETECTEDDATA_VALID_SEL_FIFO=1TIMER_PEDO_FIFO_DRDY=XSENSORHUB_END_OPDEC_FIFO_GYRO[2:0]DEC_FIFO_XL[2:0]DEC_DS3_FIFO[2:0]DEC_DS4_FIFO[2:0]FIFOFIFOFIFOFIFO第4个FIFO触发信号数据设置抽取器数据设置抽取器数据设置抽取器数据设置抽取器第3个第2个第1个如图32.
FIFO触发信号选择中所述,MASTER_CONFIG寄存器的DATA_VALID_SEL_FIFO位和FIFO_CTRL2寄存器的TIMER_PEDO_FIFO_DRDY位可用来实现此目的:如果DATA_VALID_SEL_FIFO位和TIMER_PEDO_FIFO_DRDY位均被置为0,则向FIFO中写入数据由加速度计/陀螺仪数据准备就绪来触发.
FIFO_CTRL5的ODR_FIFO_[3:0]位定义了向FIFO中存储数据的最大数据率;后者受限于加速度计ODR(由CTRL1_XL寄存器的ODR_XL[3:0]位定义)和陀螺仪ODR(由CTRL2_G寄存器的ODR_G[3:0]位定义)之间的最大值;如果DATA_VALID_SEL_FIFO位被置为0,且TIMER_PEDO_FIFO_DRDY位被置为1,则向FIFO中写入数据由计步来触发(对应于STEP_DETECTED寄存器STEP_DETECTED位的特性):每次检测到一步时,数据存储到FIFO中;如果DATA_VALID_SEL_FIFO位被置为1,则向FIFO中写入数据由传感器集合(sensorhub)来触发(对应于FUNC_SRC1寄存器SENSORHUB_END_OP位的特性),而无论TIMER_PEDO_FIFO_DRDY位是何配置:当传感器集合(sensorhub)程序完成时,数据存储到FIFO中.
使用FIFO抽取因子,数据能够以低于FIFO触发信号速率的速率存储到FIFO中.
可以配置四种抽取因子,每个FIFO数据集一个:FIFO_CTRL3寄存器的DEC_FIFO_G[2:0]位定义了陀螺仪数据(与第1个FIFO数据集相关)是否存储在FIFO中及其速率;FIFO_CTRL3寄存器的DEC_FIFO_XL[2:0]位定义了加速度计数据(与第2个FIFO数据集相关)是否存储在FIFO中及其速率;FIFO_CTRL4寄存器的DEC_DS3_FIFO[2:0]位定义了加速度计数据(与第3个FIFO数据集相关)是否存储在FIFO中及其速率;FIFO_CTRL4寄存器的DEC_DS4_FIFO[2:0]位定义了加速度计数据(与第4个FIFO数据集相关)是否存储在FIFO中及其速率.
8.
3.
1使用FIFO时改变ODR或FIFO配置步骤当必须改变加速度计/陀螺仪ODR或FIFO配置时,使用以下步骤:1.
读取FIFO中存储的所有数据,直至将其清空(详细信息见第8.
4节从FIFO恢复数据);根据保密协议–不可复制AN5040设置FIFO触发、FIFOODR和抽取因子AN5040-Rev3page94/1202.
将FIFO置为Bypass模式(将FIFO_CTRL5寄存器的FIFO_MODE位置为000b);3.
分别通过CTRL1_XL寄存器的ODR_XL位和CTRL2_G寄存器的ODR_G位,为加速度计和陀螺仪设置目标ODR;4.
通过FIFO_CTRL5寄存器的ODR_FIFO位,为FIFO设置ODR;5.
如下在FIFO_CTRL3寄存器的DEC_FIFO_G[2:0]位中设置陀螺仪抽取因子,在FIFO_CTRL3寄存器的DEC_FIFO_XL[2:0]位中设置加速度计抽取因子(参见表54.
陀螺仪FIFO抽取设置和表55.
加速度计FIFO抽取设置,得到FIFO_CTRL3的DEC_FIFO_G[2:0]位和DEC_FIFO_XL[2:0]位中要设置的值).
6.
设置所需的FIFO工作模式(详细信息见第8.
3节设置FIFO触发、FIFOODR和抽取因子).
8.
4从FIFO恢复数据注意:当数据存储到FIFO中时,不能改变配置,以便正确恢复数据.
当FIFO使能且其模式不是Bypass模式时,读取FIFO输出寄存器(FIFO_DATA_OUT_L和FIFO_DATA_OUT_H)会返回原FIFO采样集.
无论何时读取这些数据,其内容均会移动到SPI/I2C输出缓冲器.
理想地,FIFO插槽会向上移动一格,以便释放空间给新的采样,并且FIFO输出寄存器载入FIFO缓冲器中存储的当前最旧的值.
从FIFO中恢复数据的建议方法如下:1.
读取FIFO_STATUS1和FIFO_STATUS2寄存器来检查FIFO中存储了多少字(16位数据).
此信息在DIFF_FIFO_[10:0]位中.
2.
读取FIFO_STATUS3和FIFO_STATUS4寄存器.
FIFO_PATTERN_[9:0]位可以识别哪个传感器以及哪些字节被读取(更多详细信息见第8.
5节FIFO标识).
3.
读取FIFO_DATA_OUT_L和FIFO_DATA_OUT_H寄存器来恢复FIFO中最旧的采样(16位格式).
它们分别是该最旧采样的低位部分和高位部分.
通过从FIFO输出寄存器执行一定次数的读操作,直至缓冲器为空(FIFO_STATUS2寄存器的FIFO_EMPTY位置为高电平),可以恢复全部FIFO内容.
注:一旦FIFO为空,则数据不能从FIFO_DATA_OUT_L和FIFO_DATA_OUT_H寄存器中取回.
要释放FIFO空间用于新数据,建议读取速度比1*ODR至少快已使能FIFO数据集的三倍:这能够避免丢失数据.
对FIFO输出寄存器FIFO_DATA_OUT_L和FIFO_DATA_OUT_H应用多次读取操作时,环行函数(详细信息见第4.
7节环行功能)自动使能.
8.
5FIFO标识存储在FIFO中的数据没有任何标签,以便能够最大化存储采样数.
要识别将要读取哪些数据以及哪个FIFO数据集,需要检查FIFO_STATUS3和FIFO_STATUS4寄存器的FIFO_PATTERN_[9:0]位的内容.
数据以特定模式写入FIFO(例如,GyroX,GyroY,GyroZ,AccX,AccY,AccZ).
此模式根据四个FIFO数据集所分配的ODR和抽取因子而改变.
FIFO_PATTERN_[9:0]位含有一个数字,此数字从0至其模式上次采样的索引,然后对所有FIFO内容重复该模式.
FIFO缓冲器中存储的第一个数据序列包含所有使能FIFO数据集(从第一个至第四个)中的数据.
然后,根据每个FIFO数据集所设置的抽取因子,重复数据.
下节中的示例说明了如何使用FIFO_PATTERN_[9:0]位中包含的信息.
8.
5.
1示例1假设FIFO正在存储来自陀螺仪和加速度计(二者具有相同的ODR)的数据:陀螺仪ODR=104Hz,加速度计ODR=104Hz.
如果使用了内部触发(加速度计/陀螺仪数据准备就绪),建议将FIFO_CTRL5寄存器的ODR_FIFO_[3:0]位置为0100b,以便将FIFO触发ODR设置为104Hz.
FIFO_CTRL3寄存器的DEC_FIFO_GYRO[2:0]和DEC_FIFO_XL[2:0]字段必须置为001b(无抽取).
每6次采样后重复以下数据模式(每个采样表示为16位数据):GxGyGzXLxXLyXLz(陀螺仪和加速度计数据)FIFO_PATTERN_[9:0]位会含有一个从0至5的数字,如表69.
示例1:FIFO_PATTERN_[9:0]位和下一个读数所示.
根据保密协议–不可复制AN5040从FIFO恢复数据AN5040-Rev3page95/120表69.
示例1:FIFO_PATTERN_[9:0]位和下一个读数时间FIFO_PATTERN_[9:0]下次读取FIFO输出寄存器t00Gxt01Gyt02Gzt03XLxt04XLyt05XLz8.
5.
2示例2假设FIFO正在存储来自陀螺仪和加速度计(二者ODR不同)的数据:陀螺仪ODR=208Hz,加速度计ODR=104Hz.
如果使用了内部触发(加速度计/陀螺仪数据准备就绪),建议将FIFO_CTRL5寄存器的ODR_FIFO_[3:0]位置为0101b,以便将FIFO触发ODR设置为208Hz.
FIFO_CTRL3寄存器的DEC_FIFO_GYRO[2:0]字段必须置为001b(陀螺仪数据不使用抽取),并且DEC_FIFO_XL[2:0]字段必须置为010b(加速度计数据所用抽取因子为2).
由于陀螺仪ODR是加速度计ODR的两倍,因此每9次采样后重复以下数据模式(每个采样表示为16位数据):GxGyGzXLxXLyXLzGxGyGzFIFO_PATTERN_[9:0]位会含有一个从0至8的数字,如表70.
示例2:FIFO_PATTERN_[9:0]位和下一个读数所示.
表70.
示例2:FIFO_PATTERN_[9:0]位和下一个读数时间FIFO_PATTERN_[9:0]下次读取FIFO输出寄存器t00Gxt01Gyt02Gzt03XLxt04XLyt05XLzt16Gxt17Gyt18Gz8.
5.
3示例3假设FIFO正在存储来自陀螺仪、加速度计和磁力计(它们具有不同的ODR)的数据:陀螺仪ODR=104Hz,加速度计ODR=208Hz,磁力计ODR=52Hz.
如果使用了内部触发(加速度计/陀螺仪数据准备就绪),建议将FIFO_CTRL5寄存器的ODR_FIFO_[3:0]位置为0101b,以便将FIFO触发ODR设置为208Hz.
FIFO_CTRL3寄存器的DEC_FIFO_GYRO[2:0]字段必须置为010b(陀螺仪数据所用抽取因子为2),并且DEC_FIFO_XL[2:0]字段必须置为001b(加速度计数据不使用抽取).
假设磁力计关联到第3FIFO数据集,FIFO_CTRL4寄存器的DEC_DS3_FIFO[2:0]字段必须置为100b(磁力计数据所用抽取因子为4).
每21个采样后,重复以下数据模式:GxGyGzXLxXLyXLzMxMyMz(陀螺仪、加速度计、磁力计数据-9个采样)XLxXLyXLz(加速度计数据-3个采样)GxGyGzXLxXLyXLz(陀螺仪和加速度计数据-6个采样)XLxXLyXLz(加速度计数据-3个采样)根据保密协议–不可复制AN5040FIFO标识AN5040-Rev3page96/120FIFO_PATTERN_[9:0]位会含有一个从0至20的数字,如表71.
示例3:FIFO_PATTERN_[9:0]位和下一个读数所示.
表71.
示例3:FIFO_PATTERN_[9:0]位和下一个读数时间FIFO_PATTERN_[9:0]下次读取FIFO输出寄存器t00Gxt01Gyt02Gzt03XLxt04XLyt05XLzt06Mxt07Myt08Mzt19XLxt110XLyt111XLzt212Gxt213Gyt214Gzt215XLxt216XLyt217XLzt318XLxt319XLyt320XLz根据保密协议–不可复制AN5040FIFO标识AN5040-Rev3page97/1208.
6FIFO阈值FIFO阈值是LSM6DSLFIFO的功能,可用于检查FIFO中的采样数何时达到定义的阈值水平.
FIFO_CTRL1和FIFO_CTRL2寄存器的FTH_[10:0]中有阈值水平.
FTH_[10:0]字段的精度为两字节(1LSB=2字节,每个采样表示为16位数据).
因此,用户能够在0至2047之间选择所需的值.
FIFO_STATUS2寄存器的位WaterM表示水印状态.
如果FIFO中采样数达到或超出了水印水平,则此位被置为高电平(每个采样表示为16位数据).
通过将FIFO_CTRL4寄存器的STOP_ON_FTH位置为1,FIFO空间大小可由阈值水平来限制.
根据保密协议–不可复制AN5040FIFO阈值AN5040-Rev3page98/120图33.
FIFO阈值(STOP_ON_FTH=0)……FTH_[10:0]=21STOP_ON_FTH=0tContinue模式启用……409340924091…204720462045…20…210……F1F0F2045…F1F0F2045…F20…F2F1F0FIFO_FULL_SMARTWaterM根据保密协议–不可复制AN5040FIFO阈值AN5040-Rev3page99/120图33.
FIFO阈值(STOP_ON_FTH=0)显示了只存储加速度计(或陀螺仪)数据时,FIFO阈值水平使用的示例.
FIFO_CTRL4寄存器中STOP_ON_FTH位置为0.
利用FTH_[10:0]位,阈值水平设置为21.
达到21后(FIFO中有21个采样),FIFO_STATUS2寄存器的WaterM位升高.
因此,STOP_ON_FTH位置为0,FIFO不会在第21个采样时停止,而是会继续存储数据,直至FIFO_FULL_SMART标志被置为高电平.
根据保密协议–不可复制AN5040FIFO阈值AN5040-Rev3page100/120图34.
FIFO模式下的FIFO阈值(STOP_ON_FTH=1)tFIFO_FULL_SMARTFIFO读取…303302…17……543210…F1F0…F17……F5F4F3F2F1F0FIFO模式启用FIFO模式启用FIFO停止FIFOBypass根据保密协议–不可复制AN5040FIFO阈值AN5040-Rev3page101/120图34.
FIFO模式下的FIFO阈值(STOP_ON_FTH=1)显示了FIFO模式下FIFO阈值使用的示例,其中FIFO_CTRL4寄存器中STOP_ON_FTH位被置为1;本例中只存储了加速度计(或陀螺仪)数据.
利用FTH_[10:0]位,阈值水平设置为21,并定义当前FIFO空间大小.
FIFO模式下,数据存储到FIFO缓冲器中,直至FIFO_FULL_SMART信号升高;当FIFO中存储的下一个数据会使得FIFO满时,FIFO_STATUS2寄存器的FIFO_FULL_SMART位升高,因此本例中,第一次有18个数据(每个16位)存储到FIFO中后,该位升高.
因为永远不会达到FTH阈值,所以FIFO_STATUS2寄存器的WaterM位不会变为1(FIFO满后,数据不再存储到FIFO中).
根据保密协议–不可复制AN5040FIFO阈值AN5040-Rev3page102/120图35.
Continue模式下的FIFO阈值(STOP_ON_FTH=1)….
21…F020F2019F1918F18……FTH_[10:0]=21STOP_ON_FTH=1t……4241…17…210……F0F20…F17…F2F1F0FIFO_FULL_SMARTWaterM16位数据Continue模式启用根据保密协议–不可复制AN5040FIFO阈值AN5040-Rev3page103/120图35.
Continue模式下的FIFO阈值(STOP_ON_FTH=1)显示了Continue模式下FIFO阈值使用的示例,其中FIFO_CTRL4寄存器中STOP_ON_FTH位被置为1;本例中只存储了加速度计(或陀螺仪)数据.
利用FTH_[10:0]位,阈值水平设置为21.
当FIFO中存储的下一个数据会使得FIFO满时,FIFO_STATUS2寄存器的FIFO_FULL_SMART位升高,因此本例中,第一次有18个数据(每个16位)存储到FIFO中后,该位升高.
达到21后(FIFO中有21个采样),FIFO_STATUS2寄存器的WaterM位升高.
8.
7陀螺仪和加速度计数据的高位部分只存储陀螺仪和加速度计数据的高位部分(8位),可以增加FIFO中存储的采样数.
此功能对其他(外部)传感器无效.
要使能此功能,FIFO_CTRL4寄存器中位ONLY_HIGH_DATA必须置为1.
陀螺仪和加速度计数据将以相同的ODR写入FIFO,顺序如表72.
FIFO中陀螺仪和加速度计数据的高位部分所示.
表72.
FIFO中陀螺仪和加速度计数据的高位部分Byte1Byte2Byte3Byte4Byte5Byte6Accel_X_HGyro_X_HAccel_Y_HGyro_Y_HAccel_Z_HGyro_Z_H当此功能使能时,包含陀螺仪和加速度计数据的高位部分(8位)的6个字节关联到第1个FIFO数据集,而第2个FIFO数据集不使用.
FIFO_CTRL3寄存器的DEC_FIFO_G[2:0]字段必须置为非000b的值(FIFO中存储的第1个FIFO数据集).
FIFO_CTRL3寄存器的DEC_FIFO_XL[2:0]字段必须置为000b(FIFO中存储的第2个FIFO数据集).
根据保密协议–不可复制AN5040陀螺仪和加速度计数据的高位部分AN5040-Rev3page104/1208.
8FIFO中的计步器和时间戳数据可以将时间戳和计步器数据存储到FIFO中.
这些数据按6字节数据的格式存储为第4FIFO数据集,如表73.
FIFO中时间戳和计步器数据所示.
3个字节用于时间戳;1字节不用;2个字节用于步数.
表73.
FIFO中时间戳和计步器数据Byte1Byte2Byte3Byte4Byte5Byte6TIMESTAMP[15:8]TIMESTAMP[23:16]-TIMESTAMP[7:0]STEPS[7:0]STEPS[15:8]要使能此功能,FIFO_CTRL2寄存器中位TIMER_PEDO_FIFO_EN必须置为1.
当此功能使能时,包含时间戳和计步器数据的6个字节关联到第4FIFO数据集:FIFO_CTRL4寄存器的DEC_DS4_FIFO[2:0]字段必须用来定义抽取因子.
当此功能使能,且MASTER_CONFIG寄存器的DATA_VALID_SEL_FIFO位置为0,则数据能够以两种方式存入FIFO中,取决于FIFO_CTRL2中TIMER_PEDO_FIFO_DRDY位的配置:当TIMER_PEDO_FIFO_DRDY位置为0时,数据以FIFO_CTRL5寄存器中设置的ODR_FIFO速率写入FIFO中.
当TIMER_PEDO_FIFO_DRDY位置为1时,每次检测到新的一步时数据存储到FIFO中.
按照以下步骤,利用内部触发(加速度计/陀螺仪数据准备就绪)或"检测到步数"的方式,将时间戳和计步器数据存储到FIFO中:1.
启动加速度计;2.
使能时间戳和计步器(参见第6.
1节计步功能:步伐侦测和步数计算和第6.
5节时间戳);3.
通过FIFO_CTRL4寄存器的DEC_DS4_FIFO[2:0]位选择第4个FIFO数据集的抽取因子;4.
将FIFO_CTRL2寄存器中的TIMER_PEDO_FIFO_EN位置1;5.
配置FIFO_CTRL2寄存器中的位TIMER_PEDO_FIFO_DRDY,以选择将数据存储到FIFO中的方式(内部触发或每检测到一步);6.
如果使用了内部触发,则通过FIFO_CTRL5寄存器中的ODR_FIFO_[3:0]位选择FIFOODR.
如果使用"检测到一步"触发,则无需设置ODR_FIFO_[3:0]位;7.
利用FIFO_CTRL5寄存器的FIFO_MODE_[2:0]字段,配置FIFO工作模式.
根据保密协议–不可复制AN5040FIFO中的计步器和时间戳数据AN5040-Rev3page105/1208.
9FIFO中的温度数据可以只将温度数据作为第4个FIFO数据集存储.
要使能此功能:FIFO_CTRL2寄存器的位TIMER_PEDO_FIFO_EN必须置为0;FIFO_CTRL2寄存器的位FIFO_TEMP_EN必须置为1.
温度采样(16位)以6字节数据格式存储到FIFO中,如表74.
FIFO中的温度数据中所示.
表74.
FIFO中的温度数据Byte1Byte2Byte3Byte4Byte5Byte6--TEMP[7:0]TEMP[15:8]--按照以下步骤,利用内部触发(加速度计/陀螺仪数据准备就绪),将16位温度数据存储到FIFO中:1.
开启加速度计或陀螺仪;2.
通过FIFO_CTRL4寄存器的DEC_DS4_FIFO[2:0]位选择第4个FIFO数据集的抽取因子(非000b);3.
将FIFO_CTRL2寄存器的FIFO_TEMP_EN位置为1,并将FIFO_CTRL2寄存器的位TIMER_PEDO_FIFO_EN置为0;4.
通过FIFO_CTRL5寄存器中的ODR_FIFO_[3:0]位选择FIFOODR;5.
利用FIFO_CTRL5寄存器的FIFO_MODE_[2:0]字段,配置FIFO工作模式.
根据保密协议–不可复制AN5040FIFO中的温度数据AN5040-Rev3page106/1209温度传感器LSM6DSL具有内部温度传感器,适用于环境温度测量.
如果加速度计和陀螺仪传感器均处于下电模式,则温度传感器关闭.
温度传感器的最大输出数据率为52Hz,其值取决于加速度计和陀螺仪传感器如何配置:如果陀螺仪处于下电模式:–如果加速度计ODR等于12.
5Hz低功耗模式,则温度数据速率等于12.
5Hz;–如果加速度计配置为26Hz低功耗模式,则温度数据速率等于26Hz;–对于所有其他的加速度计配置,温度数据速率均等于52Hz.
如果陀螺仪不是处于下电模式,则无论加速度计和陀螺仪配置是什么,温度数据速率均为52Hz.
对于温度传感器,数据准备就绪信号由STATUS_REG寄存器的TDA位表示.
通过将INT2_CTRL寄存器的INT2_DRDY_TEMP位置为1,可将该信号驱动至INT2引脚.
温度数据由OUT_TEMP_H和OUT_TEMP_L寄存器联合给出,以二进制补码的格式表示为一个16位的数字,其灵敏度为+256LSB/°C.
输出零值对应于25°C.
将CTRL3_C寄存器的BLE位置为1,LSM6DSL可支持温度输出数据寄存器低位部分和高位部分的内容进行交换(即,OUT_TEMP_H和OUT_TEMP_L).
温度传感器数据也可以采用可配置的抽取因子而存储在FIFO中(详细信息见第8.
9节FIFO中的温度数据).
9.
1温度数据计算示例表75.
输出数据寄存器内容vs.
温度提供了在不同环境温度值下从温度数据寄存器中读取数据的几个基本示例.
本表中所列值是在理想器件校准的假设下给出的(即,无偏移,无增益误差,……).

表75.
输出数据寄存器内容vs.
温度温度值BLE=0BLE=1寄存器地址OUT_TEMP_H(21h)OUT_TEMP_L(20h)OUT_TEMP_H(21h)OUT_TEMP_L(20h)0°CE7h00h00hE725°C00h00h00h00h50°C19h00h00h19h根据保密协议–不可复制AN5040温度传感器AN5040-Rev3page107/12010自检功能嵌入式自检功能可支持无需移动器件而对其功能进行检查.
10.
1加速度计自检当加速度计自检使能时,传感器上会施加一个驱动力,模拟一定的加速度.
这种情况下,传感器输出会在其DC电平上表现出变化,该电平通过灵敏度值关联到所选量程.
当CTRL5_C寄存器的ST[1:0]_XL位被设定为00b时,加速度计自检功能关闭;当ST[1:0]_XL位被置为01b(正符号自检)或10b(负符号自检)时,该功能使能.
当加速度计自检功能激活时,传感器的输出由作用在传感器上的加速度和静电测试力的代数和给出.

完整的加速度计自检过程如图36.
加速度计自检步骤中所示.
根据保密协议–不可复制AN5040自检功能AN5040-Rev3page108/120图36.
加速度计自检步骤AN5040-Rev3page109/120根据保密协议–不可复制AN504010.
2陀螺仪自检陀螺仪自检能够支持对陀螺仪传感器的机械和电气部分进行测试:当它激活时,驱动力施加到传感器上,模拟一定的Coriolis力,并利用该静电测试力移动质量块.
这种情况下,传感器输出会显示出一个输出变化.

当CTRL5_C寄存器的ST[1:0]_G位被设定为00b时,陀螺仪自检功能关闭;当ST[1:0]_G位被置为01b(正符号自检)或11b(负符号自检)时,该功能使能.
当陀螺仪自检功能激活时,传感器的输出由作用在传感器上的角速度和静电测试力的代数和给出.

LOCVPS新上日本软银线路VPS,原生IP,8折优惠促销

LOCVPS在农历新年之后新上架了日本大阪机房软银线路VPS主机,基于KVM架构,配备原生IP,适用全场8折优惠码,最低2GB内存套餐优惠后每月仅76元起。LOCVPS是一家成立于2012年的国人VPS服务商,提供中国香港、韩国、美国、日本、新加坡、德国、荷兰、俄罗斯等地区VPS服务器,基于KVM或XEN架构(推荐选择KVM),线路方面均选择国内直连或优化方案,访问延迟低,适合建站或远程办公使用。...

美得云(20元)香港特价将军澳CTG+CN2云服务器

美得云成立于2021年,是一家云产品管理服务商(cloud)专业提供云计算服务、DDOS防护、网络安全服务、国内海外数据中心托管租用等业务、20000+用户的选择,43800+小时稳定运行香港特价将军澳CTG+CN2云服务器、采用高端CPU 优质CN2路线 SDD硬盘。香港CTG+CN22核2G3M20G数据盘25元点击购买香港CTG+CN2​2核2G5M30G数据盘39元点击购买香港CTG+CN...

什么是BGP国际线路及BGP线路有哪些优势

我们在选择虚拟主机和云服务器的时候,是不是经常有看到有的线路是BGP线路,比如前几天有看到服务商有国际BGP线路和国内BGP线路。这个BGP线路和其他服务线路有什么不同呢?所谓的BGP线路机房,就是在不同的运营商之间通过技术手段时间各个网络的兼容速度最佳,但是IP地址还是一个。正常情况下,我们看到的某个服务商提供的IP地址,在电信和联通移动速度是不同的,有的电信速度不错,有的是移动速度好。但是如果...

去鼠标加速度为你推荐
站长故事爱迪生发明电灯的故事简短深圳公交车路线深圳公交车路线真正免费的网络电话谁有真正免费的网络电话??中国论坛大全有谁知道国内人气最高的论坛排行榜?怎么在qq空间里添加背景音乐如何在qq空间中添加背景音乐百度抢票浏览器百度手机浏览器怎么抢票 手机百度浏览器抢票方法吴晓波频道买粉吴晓波频道学习卡资费?神雕侠侣礼包大全神雕侠侣陈晓礼包兑换码怎么获得神雕侠侣礼包大全神雕侠侣手游华山论剑礼包有什么 怎么领取系统分析员一个优秀的系统分析师应该具备哪些方面的知识和素质?
网站域名空间 godaddy域名注册 美国服务器租用 本网站服务器在美国维护 virpus 美国主机代购 174.127.195.202 新世界电讯 华为云主机 京东商城双十一活动 云全民 赞助 idc是什么 umax120 服务器硬件防火墙 ledlamp 实惠 测速电信 97rb wordpress空间 更多