您好,登錄后才能下訂單哦!
今天小編給大家分享一下gpio接口的作用是什么的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
gpio接口是用于和硬件進行數據交互;gpio是“General Purpose I/O Ports”的簡寫,是通用輸入輸出端口的意思,其接腳可以供使用者由程控自由使用,可以通過接口輸出高低電平或者讀出引腳的狀態是高電平還是低電平。
本教程操作環境:windows10系統、DELL G3電腦。
GPIO,通用型之輸入輸出的簡稱,功能類似8051的P0-P3,其接腳可以供使用者由程控自由使用,PIN腳依現實考量可作為通用輸入(GPI)或通用輸出(GPO)或通用輸入與輸出(GPIO),如當clk generator, chip select等
GPIO(General Purpose I/O Ports)意思為通用輸入/輸出端口,通俗地說,就是一些引腳,可以通過它們輸出高低電平或者通過它們讀入引腳的狀態-是高電平或是低電平。
GPIO口一是個比較重要的概念,用戶可以通過GPIO口和硬件進行數據交互(如UART),控制硬件工作(如LED、蜂鳴器等),讀取硬件的工作狀態信號(如中斷信號)等。GPIO口的使用非常廣泛。
gpio接口怎么用
要使用GPIO,系統首先要分配一個GPIO,使用gpio_request() 為系統分配一個GPIO。
接下來要做的一件事是標示GPIO的方向,通常在使用GPIO建立一個platform_device時(位于單板的setup代碼中):
/* set as input or output, returning 0 or negative errno */ int gpio_direction_input(unsigned gpio); int gpio_direction_output(unsigned gpio, int value);
返回0標示成功,或是一個負的errno錯誤碼。它應該被檢查,因為get/set調用沒有錯誤返回,且可能會有錯誤配置。你通常應該在線程上下文中使用這些調用。雖然如此,對于spinlock-safe的GPIO,在tasking使能之前使用也是可以的,作為一個早期的單板建立。
對于輸出GPIO,value參數提供了初始輸出值。這有助于避免系統啟動過程中的信號干擾。
為了與GPIO早期的接口兼容,設置一個GPIO的方向,隱性要求申請GPIO。這個兼容性從可選的gpiolib架構中移除了。
如果GPIO號碼無效或是指定的GPIO不能使用對應模式操作的話,設置方向會失敗。依靠boot固件設置好GPIO的方向通常不是一個好主意,因為boot的功能可能沒有通過驗證(除了boot linux)。(類似的,單板setup代碼可能需要將管腳復用為一個GPIO,和配置為合適的上拉/下拉。)
Spinlock-Safe GPIO訪問
大多數GPIO控制器可以使用內存讀寫指令訪問。它們不需要休眠,且可以從內部硬件中斷處理(非線程)和類似的上下文環境安全完成。
使用下列調用訪問這些GPIO,此時gpio_cansleep將總是返回錯誤
/* GPIO INPUT: return zero or nonzero */ int gpio_get_value(unsigned gpio); /* GPIO OUTPUT */ void gpio_set_value(unsigned gpio, int value);
其中,value是一個布爾型參數,零表示低,非零表示高。當讀一個輸出管腳的值時,返回的值應該是在管腳上看到的值。。。這并不總是與指定輸出值相匹配的,因為存在開漏信號和輸出延遲問題。
get/set調用沒有錯誤返回,因為“無效GPIO”應該已經由gpio_direction_*()提早報告了。雖然如此,并非所有的平臺都可以讀取輸出管腳的值,那些不能讀的應該總是返回零。同時,對那些可能導致睡眠的GPIO使用這些接口是一個錯誤。
平臺的特定實現被鼓勵優化這兩個調用以獲取GPIO值。在那些GPIO號碼是常量的情況下,它們通常只需一對指令(讀或寫一個硬件寄存器)訪問,且不需要spinlock。這樣的優化可以使位拆分應用更有效率(在時間和空間上)(相比較于花費一堆指令在子例程調用來說)。
gpio接口是干什么的
輸出值可寫(高=1,低=0)。一些芯片也可以選擇驅動這些值的方式,以便支持“線-或”或類似方案(開漏信號線)。
輸入值可讀(1,0)。一些芯片支持輸出管腳回讀,這在線或的情況下非常有用(以支持雙向信號線)。GPIO控制器可能具有一個輸入防故障/防反跳邏輯,有時還會有軟件控制。
輸入經常被用作中斷信號,通常是邊沿觸發,但也有可能是電平觸發。這些中斷可以配置為系統喚醒事件,從而將系統從低功耗模式喚醒。
一個GPIO經常被配置為輸入/輸出雙向,根據不同的產品單板需求,但也存在單向的情況。
大多是GPIO可以在獲取到spinlock自旋鎖時訪問,但那些通過串行總線訪問的通常不能如此操作(休眠的原因)。一些系統中會同時存在這兩種形式的GPIO。
在一個給定單板上,每個GPIO用于一個特定的目的,如監控MMC/SD卡的插入/移除,檢查卡寫保護狀態,驅動LED,配置發送器,串行總線位拆,觸發一個硬件看門狗,觸發一個開關之類的。
以上就是“gpio接口的作用是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。