Linux下ZYNQ中GPIO中斷號獲取

2021-10-05 08:17:43 字數 1164 閱讀 8425

使用提供的gpio_to_irq是最佳的選擇,裝置樹配置起來也比較方便,都需要將中斷父結點設定為gpio0。

key 

;

驅動程式申請一下對映後的終端號key_test.irq(int):

key_test.irq =

gpio_to_irq

(key_test.key_gpio)

;

使用key_test.irq就可以request中斷啦~

但是可以看出,現在的父結點是gpio,中斷號是12,也就是現在key使用的編號(mio12),而不是gpio的中斷號52。

irq_of_parse_and_map是一般性的方法,如果偏要使用也可以。使用irq_of_parse_and_map獲取中斷號。先要將裝置樹設定為:

key 

;

因為中斷父結點是gpio0,從上面那張圖可知需要將中斷號設定成12,即自己所使用的mio編號,的而不是gpio自己的中斷號52。

c程式中:

key_test.irq =

irq_of_parse_and_map

(key_test.nd,0)

;

之後照舊request就行啦。

ret =

request_irq

(key_test.irq,

key_handler,

irqf_trigger_falling | irqf_trigger_rising,

"key"

,null

);

為啥interrupts有兩個元素?因為gpio0節點規定了它的子節點的interrupts屬性的元素數目為2。分別是《終端號 觸發方式》。(如果是3個的話就是第乙個是中斷域:《中斷域 中斷號 觸収方式》)

注意,不可以想當然的把中斷父結點直接設定為,直接設定中斷號為52-32=20會報錯:

zynq中各種GPIO方式的區別

zynq可以提供多種方式提供gpio的能力,早上到公司就想應該先搞清楚裡面的各種區別,因為我自己不自然就只會用自己的最熟悉的方案來實現,所以在此總結一下 很多帖子討論這個,當然是因為簡單了 但是好像都沒有整理完整 zynq中gpio有四種,其中ps中mio emio兩種,而pl中同樣有兩種情況,ax...

zynq新增GPIO中斷程式

核心原始碼為adi官方關於ad9361的核心,編譯工具為petalinux2015.2,開發板為zynqxc7z100 一 修改裝置樹 1.開啟petalinux專案下的.project spec meta user recipes dt device tree files system top.d...

學會Zynq(4)GPIO中MIO的使用方法

本文將介紹ps部分gpio中mio的使用。本文先通過乙個控制led閃爍的例項體會mio的用法,學習gpio相關結構體與api函式的使用 然後再系統講解gpio的相關概念。include xgpiops.h include sleep.h xgpiops gpiops init int main re...