本文主要介紹LIS3DH的運動檢測功能(Motion detection),一旦兩次加速度值的差值超過了設置閾值,相應的引腳就會產生中斷。
LIS3DH接口非常簡單,四線SPI接口。
LIS3DH上電需要等待大約5ms才能對其寄存器進行操作,否則可能達不到想要的結果。
寄存器配置如下:
spi_lis3dh_writebyte(0x3f,0x20);//CTRL_REG1 設置采樣頻率為25Hz,低功耗模式,開啟x,y,z軸檢測
spi_lis3dh_writebyte(0x09,0x21);//CTRL_REG2 正常模式,數據從內部濾波器到輸出寄存器,高通濾波器使能到中斷1
spi_lis3dh_writebyte(0x40,0x22);//CTRL_REG3 AOI中斷1使能
spi_lis3dh_writebyte(0x00,0x23);//CTRL_REG4 分辨率+/-2g 每位~16mg
spi_lis3dh_writebyte(0x08,0x24);//CTRL_REG5 中斷鎖存
spi_lis3dh_writebyte(0x10,0x32);//INT1_TH = 16*16mg 設置中斷閾值
spi_lis3dh_writebyte(0x00,0x33);//INT_DURATION 中斷持續時間設置為0,因為已經設置中斷鎖存,所以中斷不會消失,直到手動清除中斷
spi_lis3dh_readbyte(0x26);//reference 第一次虛讀reference寄存器,強制將高通濾波器的值加載到當前加速度值,從這時開始比較了。
spi_lis3dh_writebyte(0x2A,0x30);//INT1_CFG 使能中斷,中斷模式是中斷事件的‘OR’組合,這里只使能了x,y,z軸的高事件中斷。開始時這個寄存器沒理解清楚,把x,y,z軸的高低事件都使能了,導致一直有中斷。因為不是高就是低,肯定有中斷。
spi_lis3dh_readbyte(0x31);//當檢測到中斷后,清除中斷