今天小編給大家分享一下gpio接口的作用是什么的相關(guān)知識點,內(nèi)容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
公司主營業(yè)務(wù):成都做網(wǎng)站、成都網(wǎng)站制作、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出勃利免費做網(wǎng)站回饋大家。
gpio接口是用于和硬件進行數(shù)據(jù)交互;gpio是“General Purpose I/O Ports”的簡寫,是通用輸入輸出端口的意思,其接腳可以供使用者由程控自由使用,可以通過接口輸出高低電平或者讀出引腳的狀態(tài)是高電平還是低電平。
本教程操作環(huán)境:windows10系統(tǒng)、DELL G3電腦。
GPIO,通用型之輸入輸出的簡稱,功能類似8051的P0-P3,其接腳可以供使用者由程控自由使用,PIN腳依現(xiàn)實考量可作為通用輸入(GPI)或通用輸出(GPO)或通用輸入與輸出(GPIO),如當clk generator, chip select等
GPIO(General Purpose I/O Ports)意思為通用輸入/輸出端口,通俗地說,就是一些引腳,可以通過它們輸出高低電平或者通過它們讀入引腳的狀態(tài)-是高電平或是低電平。
GPIO口一是個比較重要的概念,用戶可以通過GPIO口和硬件進行數(shù)據(jù)交互(如UART),控制硬件工作(如LED、蜂鳴器等),讀取硬件的工作狀態(tài)信號(如中斷信號)等。GPIO口的使用非常廣泛。
gpio接口怎么用
要使用GPIO,系統(tǒng)首先要分配一個GPIO,使用gpio_request() 為系統(tǒng)分配一個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錯誤碼。它應(yīng)該被檢查,因為get/set調(diào)用沒有錯誤返回,且可能會有錯誤配置。你通常應(yīng)該在線程上下文中使用這些調(diào)用。雖然如此,對于spinlock-safe的GPIO,在tasking使能之前使用也是可以的,作為一個早期的單板建立。
對于輸出GPIO,value參數(shù)提供了初始輸出值。這有助于避免系統(tǒng)啟動過程中的信號干擾。
為了與GPIO早期的接口兼容,設(shè)置一個GPIO的方向,隱性要求申請GPIO。這個兼容性從可選的gpiolib架構(gòu)中移除了。
如果GPIO號碼無效或是指定的GPIO不能使用對應(yīng)模式操作的話,設(shè)置方向會失敗。依靠boot固件設(shè)置好GPIO的方向通常不是一個好主意,因為boot的功能可能沒有通過驗證(除了boot linux)。(類似的,單板setup代碼可能需要將管腳復(fù)用為一個GPIO,和配置為合適的上拉/下拉。)
Spinlock-Safe GPIO訪問
大多數(shù)GPIO控制器可以使用內(nèi)存讀寫指令訪問。它們不需要休眠,且可以從內(nèi)部硬件中斷處理(非線程)和類似的上下文環(huán)境安全完成。
使用下列調(diào)用訪問這些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是一個布爾型參數(shù),零表示低,非零表示高。當讀一個輸出管腳的值時,返回的值應(yīng)該是在管腳上看到的值。。。這并不總是與指定輸出值相匹配的,因為存在開漏信號和輸出延遲問題。
get/set調(diào)用沒有錯誤返回,因為“無效GPIO”應(yīng)該已經(jīng)由gpio_direction_*()提早報告了。雖然如此,并非所有的平臺都可以讀取輸出管腳的值,那些不能讀的應(yīng)該總是返回零。同時,對那些可能導(dǎo)致睡眠的GPIO使用這些接口是一個錯誤。
平臺的特定實現(xiàn)被鼓勵優(yōu)化這兩個調(diào)用以獲取GPIO值。在那些GPIO號碼是常量的情況下,它們通常只需一對指令(讀或?qū)懸粋€硬件寄存器)訪問,且不需要spinlock。這樣的優(yōu)化可以使位拆分應(yīng)用更有效率(在時間和空間上)(相比較于花費一堆指令在子例程調(diào)用來說)。
gpio接口是干什么的
輸出值可寫(高=1,低=0)。一些芯片也可以選擇驅(qū)動這些值的方式,以便支持“線-或”或類似方案(開漏信號線)。
輸入值可讀(1,0)。一些芯片支持輸出管腳回讀,這在線或的情況下非常有用(以支持雙向信號線)。GPIO控制器可能具有一個輸入防故障/防反跳邏輯,有時還會有軟件控制。
輸入經(jīng)常被用作中斷信號,通常是邊沿觸發(fā),但也有可能是電平觸發(fā)。這些中斷可以配置為系統(tǒng)喚醒事件,從而將系統(tǒng)從低功耗模式喚醒。
一個GPIO經(jīng)常被配置為輸入/輸出雙向,根據(jù)不同的產(chǎn)品單板需求,但也存在單向的情況。
大多是GPIO可以在獲取到spinlock自旋鎖時訪問,但那些通過串行總線訪問的通常不能如此操作(休眠的原因)。一些系統(tǒng)中會同時存在這兩種形式的GPIO。
在一個給定單板上,每個GPIO用于一個特定的目的,如監(jiān)控MMC/SD卡的插入/移除,檢查卡寫保護狀態(tài),驅(qū)動LED,配置發(fā)送器,串行總線位拆,觸發(fā)一個硬件看門狗,觸發(fā)一個開關(guān)之類的。
以上就是“gpio接口的作用是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
分享標題:gpio接口的作用是什么
網(wǎng)頁鏈接:http://www.chinadenli.net/article24/piihje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、企業(yè)網(wǎng)站制作、網(wǎng)站策劃、定制開發(fā)、靜態(tài)網(wǎng)站、全網(wǎng)營銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)