2021/5/25

More on IIS2DLPC , Wake Up

ST 的 application note AN5201 有比較仔細的 wakeup 功能說明。

Section 5.4 Wake-up interrupt

Wakeup source 可以選 Hight-pass fileter 或 offset filter

選 offset filter 為 source 時..

三軸之中,任一軸的值大於 threshold
然後還要符合 duration,大於 threshold 的時間要超過 duration 的設定。

產生 interrupt 後的動作,如果沒有設定 latch mode,一旦 低於 threshold, interrupt 自動reset。
如果設定是 latch mode,一旦觸發 interrupt後,就會一直保持,直到 讀取了 WAKE_UP_SRC 或 ALL_INT_SRC

AN 中有使用 high pass filter 的設定範例,當sensor 有大幅度改變時..任一軸大於 threshold 後產生 interrupt。
write 64h in CTRL1(20h)
write 04h in CTRL6(25h)
write 20h in CTRL7(3fh)
write 00h in WAKE_UP_DUR(35h)
write 02h in WAKE_UP_THS(34h)
write 20h in CTRL4_INT1_PAD_CTRL(23h)
還有一個用USER OFFSET 做srce 的設定範例,採用 X-0. Y-0. Z-02 之後,大於 threshold 之後產生 interrupt (因為 duration 0)
write 04h in CTRL6(25h)
write 34h in CTRL7(35h)
write 00h in X/Y_OFS_USR(3ch,3dh)
write 40h in Z_OFS_USR(3eh)
write 00h in WAKE_UP_DUR(35h)
write 02h in WAKE_UP_THS(34h)
write 20h in CTRL4_INT1_PAD_CTRL(23h)
write 64h in CTRL1(20h)
發現 官方的 input driver 沒有宣告 CTRK7(3fh).
所以相關的 enable 也沒做,那個 input4/wake_up/enable 並沒有開啟 CTRK7 的 INTERRUPTS_ENABLE.

在 driver 的 i2c_write output log,開機有做的 register write..
[    0.945939] lis2dwi2c w 21 4c
[    0.949619] lis2dwi2c w 20 1
[    0.953205] lis2dwi2c w 22 10
[    0.956880] lis2dwi2c w 21 c
[    0.960467] lis2dwi2c w 36 1
[    0.964054] lis2dwi2c w 36 9
[    0.968054] lis2dwi2c w 30 9
[    0.971642] lis2dwi2c w 34 2
[    5.170523] lis2dwi2c w 20 11
[    5.175374] lis2dwi2c w 20 51
enable input4/wake_up/enable 的話..
[  198.030489] lis2dwi2c w 23 20
所以wakeup需要的幾乎都沒設
所以要再 enable 的時候都設好...

為了檢查,可能要把 intertupt status 讀出來,27h
                7           6         5           4              3         2       1      0
-----------------------------------------------------------------------------------------------
STATUS | 27h | FIFO_THS | WU_IA | SLEEP_STATE | DOUBLE_TAP | SINGLE_TAP | 6D_IA | FF_IA | DRDY |
在sysfs input4/wake_up 下增加一個 regv
cat 內容就是 27h 的內容。
測試..
# echo 1 > enable 
[  161.304567] --lis2dw12_enable_sensors--
[  161.308934] --lis2dw12_update_drdy_irq--
[  161.313552] lis2dwi2c w 23 20
[  161.317201] lis2dwi2c w 20 64
[  161.320851] lis2dwi2c w 25 4
[  161.324128] lis2dwi2c w 3f 20
[  161.327782] lis2dwi2c w 35 0
[  161.331009] lis2dwi2c w 34 2
[  161.334305] lis2dwi2c w 23 20
# 
# cat regv 
1
# cat regv 
0
# cat regv 
1
# cat regv 
0
----- 敲打機器 ----

# cat regv 
41
# cat regv 
40
WU_IA bit set,所以應該 OK

沒有留言:

張貼留言