iT邦幫忙

2021 iThome 鐵人賽

DAY 20
0
Arm Platforms

基於ARM-M0架構MCU之落摔檢測韌體開發系列 第 20

[DAY 20] _前20天的結語(落摔判斷流程)

從一開使的開發板的教學,再來開發環境的建置,一開始先從最底層的概念講起以直接操作暫存器講起,再來以標準庫環境來開發,懂了底層就可以來用標準庫開發了,之後真的有要當韌體開發工程師才有可能會需要操作到暫存器,先理解暫存器開發的原理不是多餘的事,在來介紹I2C的協議不的不說I2C協議剛開始看真的很難懂,一堆規定要遵守麻煩的是還要根據所有手冊的I2C協議去組成,也要懂那些的意義,例如說EEPROM較大容量的部分,地址為有兩段8+8=16位的地址,這地址包含你要寫入的地址,當初看那個手冊花了不少時間,這20天也有介紹三軸感測器的I2C讀寫和手冊部分的看法,我講的沒有到非常詳細,需要更多時間來說明,但我想把比較重要的部分呈現上來,我相信這對有一定底子的人又還沒接觸的人會蠻有幫助的。

今天來講講最後判斷的部分吧,判斷很簡單有了三軸數值就可以來判斷了我講一下我的判斷方式,三個軸X、Y、Z各軸平方相加在開根號,這先訂為S值。再用UART觀察這S的變化會發現靜態時的S值會接近1,在高處落下後S會大幅降低約0.1~0.3之間,可以把這個時間當做落下的時間,撞到地面後會有很大S值遠大於1,就可以利用這個特性去做落下的高度判斷,利用計數的方式來判斷。可以看看下圖大概的判斷流程圖。https://ithelp.ithome.com.tw/upload/images/20211003/201419797hJ7OBtojP.png
再來看看我之前做落衰判斷的計數曲線圖:
https://ithelp.ithome.com.tw/upload/images/20211003/20141979gC9mSAfSRK.png
這計數值僅供參考,後來有做一些落摔判斷的修改計數值會更精確點,這邊就給大家自行研究瞜,上面都是同1個高度落摔的計數值,會有些差異是無法避免的。

這20天我覺得濃縮了很多,感測器的程式和讀寫手冊看法,我也沒講很細的配置方法,但我把能動作的源碼都丟上來了也做了一部份,接下來我最近開始在學I2S跟SPI協定,首先我講一下I2S在STM32F030沒有外設I2S,所以我會拿現有的開發板F429來做,教學資源也來至於野火我會把我所學的做個整理在擺上來,這個整理也是為了日後複習可以查看的筆記。至於SPI協定會想學是因為蠻多2.4GHz的通訊模組是利用SPI,像是LoRa。
假如看前20天的文章有什麼想知道或詢問的都可以,歡迎提問。


上一篇
[DAY 19] _ARM-M0-內核外設SysTick-寫個精準的Delay
下一篇
[DAY 21] _SPI協議(1)
系列文
基於ARM-M0架構MCU之落摔檢測韌體開發32

尚未有邦友留言

立即登入留言