3D加速度傳感器LIS2DS12硬體計步功能相關寄存器詳解

LIS2DS12是ST 3D MEMS家族中擁有stepcounter(硬體計步)功能的產品之一。它內部其實是有一套已經固化的有限狀態機,專門用於計步器功能:步長檢測器和步長計數器。

LIS2DS12被廣泛應用於醫療、穿戴、運動檢測等和人體行為相關的產品中。

因此,它比其它不帶硬體計步的MEMS多了一些寄存器,如下:

STEP_COUNTER_MINTHS (計步配置寄存器)

定義如下:

RST_nSTEP:重置計步寄存器,當該位為1時,強制將STEP_COUNTER_L / STEP_COUNTER_H里保存的計步值清零。

PEDO4g:4g量程配置位,1選擇4g量程,0選擇2g量程。考慮到使用者會出現疾跑急停等現象,此時加速度有可能超過2g,為避免飽和,通常建議stepcounter的加速度設置為4g。但前提是 CTRL1中設的量程必須>= 4g

SC_MTHS:計步觸發門限。手冊中沒有給出,查閱其它資料,該值LSB=16mg@ PEDO4g=0或LSB=16mg@ PEDO4g=1,。即用戶可配置一個門限值SC_MTHS*32mg,當行走時產生的加速度超越這個門限,則計步有效,步數加1,反之則無效。

STEP_COUNTER_L / STEP_COUNTER_H(計步值寄存器)

定義如下:

nSTEP_L[7:0]和nSTEP_H[7:0]組成一個16位的寄存器,用於存儲過去時間內的計步值,共計可存儲65535步。溢出清零。應用時MCU應定期訪問該寄存器,避免溢出。

PEDO_DEB_REG (去抖寄存器),該寄存器處於高級寄存器內,注意需要先配置 CTRL2 寄存器FUN_CFG_EN位才能訪問高級寄存器



定義如下:

DEB_TIME[4:0]是防抖時間,LSB=80ms,即定義一個時間範圍DEB_TIME*80ms,例如DEB_TIME=11,那這個時間是880ms。這時,晶片會自行判斷計步的間隔時間,前後兩次計步間隔時間若<=880ms,則計步有效;反之若前後兩次計步間隔時間>880ms,則認為這是一次無效的抖動造成的,不是走路,後一次的計步將會被捨棄。

DEB_STEP[2:0]是防抖門限。它用於補償在計步判斷時丟掉的步數。例如,人體從靜止開始行走,晶片此時開始做計步介入判斷,判斷有個反覆確認的過程,這難免會使之前已經行走的幾步沒有計算在內。為了補償,DEB_STEP提供了最大7步的補償,一旦晶片判斷出人開始行走後,這個補償會自動加入到計步寄存器STEP_COUNTER中

STEP_COUNT_DELTA (規定時間內檢測到計步的中斷),該寄存器處於高級寄存器內,注意需要先配置 CTRL2 寄存器FUN_CFG_EN位才能訪問高級寄存器

定義如下:

手冊中的解釋比較晦澀: Instead of generating an interrupt every time a step is recognized, it is possible to generate it if at least one step is detected within a certain time period. This time period is defined by setting a value higher than 00h in the bits [0:7] of the STEP_COUNT_DELTA register in the advanced configuration registers (1 LSB of the value of the STEP_COUNT_DELTA register corresponds to 1.6384 seconds). 個人理解是,該寄存器和中斷有關。晶片是可以設置stepcounter觸發中斷輸出的,但是每次計步都觸發1次中斷,顯得沒有必要,而且會占用MCU響應資源。這個寄存器的目的就是設置一個時間段STEP_COUNT_D*1.6384s,在這個時間段內,只要識別到至少1次計步,那麼在這段時間結束後才觸發中斷,上報MCU。這樣可大大節省MCU線程的開支。

以上就是LIS2DS12關於stepcounter硬體計步的幾個寄存器解釋,用戶可根據自身產品的需要,靈活配置這些寄存器,實現精準觸發、精確計步而且防止其它干擾動作。

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論