Nordic nRF52832/nRF51822 GPIOTE


1、GPIOTE 簡單介紹

Nordic 的GPIO中斷是通過 GPIOTE這個外設模塊來實現的。

GPIOTE 使用task 和event的方式來控制GPIO,GPIO做為輸出可以通過 GPIOTE task 來控制IO輸出高電平、低電平、或者翻轉電平,GPIO做為輸入在IO發生變化(Rising edge、 Falling edge、Any change)產生GPIOTE event事件,可以觸發GPIOTE中斷,或着將event連接到PPI上觸發task。PPI這個外設功能非常好,可以減少CPU工作。

 

2、GPIOTE 通道

nRF52832 GPIOTE 有8 個通道,最多可以配置8個GPIO(Pin events and tasks)

 

3、如果超過8個怎么辦?

可以使用Port event

Port event是所有GPIO DETECT信號的組合事件,每個GPIO都可以觸發GPIOTE Port event。

 

4、程序代碼如何配置使用pin event還是port event ?

 

nrf_drv_gpiote_in_init 初始化函數中參數p_config->hi_accuracy = true 為 pin event,否則為port event

 

5、下面說說使用GPIOTE遇到的問題

無論是pin event還是port event的方式都有些問題,要根據自己的使用場景和要求來選擇配置

 

5.1  GPIOTE pin event 功耗高

GPIOTE pin event 需要使用16MHz HFCLK,所以功耗比較高

image

5.2  GPIOTE port event 不能多個GPIO同時觸發

因為GPIOTE port event是檢測DETECT 上升沿信號,GPIO的SENSE條件為真就將DETECT設置為1,DETECT是所有GPIO的組合信號,如果一個GPIO 已經觸發DETECT信號,並且IO狀態未改變,SENSE條件還是為真,DETECT將還是1,這里另一個GPIO再次Sense條件滿足,也不會觸發port event中斷,因為DETECT沒有改變(沒有檢測到上升沿)

image

 

5.3  解決方法

5.3.1 如果不在乎功耗,那么很簡單,配置p_config->hi_accuracy = true使用pin event

5.3.2 如果功耗非常重要,並且沒有多個GPIO同時中斷的場景,那么配置p_config->hi_accuracy = false使用port event

5.3.3 如果功耗非常重要 , 並且需要多個GPIO同時中斷,那么配置p_config->hi_accuracy = false使用port event,並且p_config->sense配置為NRF_GPIOTE_POLARITY_TOGGLE, 這樣配置如果按鍵按下觸發port event 中斷后改變按鍵GPIO sense設置就不會持續觸發DETECT信號,這時有其他GPIO中斷就可以觸發Port Event中斷


6、參考

https://devzone.nordicsemi.com/f/nordic-q-a/18052/gpiote-handler-module-or-gpiote-driver-for-port-interrupt
https://devzone.nordicsemi.com/f/nordic-q-a/14825/gpiote-interrupt-issue/56595#56595
https://devzone.nordicsemi.com/f/nordic-q-a/40386/question-about-current-in-low-power-mode/157035#157035
https://devzone.nordicsemi.com/f/nordic-q-a/5016/how-to-use-the-port-event/17685#17685
https://devzone.nordicsemi.com/f/nordic-q-a/37063/what-s-difference-between-hi_accuracy-and-port-event-interruption/142491#142491
https://devzone.nordicsemi.com/f/nordic-q-a/25428/gpio-in_event-to-gpio-port-event/100221#100221

https://devzone.nordicsemi.com/f/nordic-q-a/577/current-consumption-when-using-rtc-ppi-and-gpiote#post-id-18533


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM