溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

gpio接口的作用是什么

發(fā)布時(shí)間:2022-08-26 14:11:56 來源:億速云 閱讀:388 作者:iii 欄目:互聯(lián)網(wǎng)科技

今天小編給大家分享一下gpio接口的作用是什么的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

gpio接口是用于和硬件進(jìn)行數(shù)據(jù)交互;gpio是“General Purpose I/O Ports”的簡寫,是通用輸入輸出端口的意思,其接腳可以供使用者由程控自由使用,可以通過接口輸出高低電平或者讀出引腳的狀態(tài)是高電平還是低電平。

本教程操作環(huán)境:windows10系統(tǒng)、DELL G3電腦。

gpio接口是干什么的

GPIO,通用型之輸入輸出的簡稱,功能類似8051的P0-P3,其接腳可以供使用者由程控自由使用,PIN腳依現(xiàn)實(shí)考量可作為通用輸入(GPI)或通用輸出(GPO)或通用輸入與輸出(GPIO),如當(dāng)clk generator, chip select等

GPIO(General Purpose I/O Ports)意思為通用輸入/輸出端口,通俗地說,就是一些引腳,可以通過它們輸出高低電平或者通過它們讀入引腳的狀態(tài)-是高電平或是低電平。

GPIO口一是個(gè)比較重要的概念,用戶可以通過GPIO口和硬件進(jìn)行數(shù)據(jù)交互(如UART),控制硬件工作(如LED、蜂鳴器等),讀取硬件的工作狀態(tài)信號(hào)(如中斷信號(hào))等。GPIO口的使用非常廣泛。

gpio接口怎么用

要使用GPIO,系統(tǒng)首先要分配一個(gè)GPIO,使用gpio_request() 為系統(tǒng)分配一個(gè)GPIO。

接下來要做的一件事是標(biāo)示GPIO的方向,通常在使用GPIO建立一個(gè)platform_device時(shí)(位于單板的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標(biāo)示成功,或是一個(gè)負(fù)的errno錯(cuò)誤碼。它應(yīng)該被檢查,因?yàn)間et/set調(diào)用沒有錯(cuò)誤返回,且可能會(huì)有錯(cuò)誤配置。你通常應(yīng)該在線程上下文中使用這些調(diào)用。雖然如此,對(duì)于spinlock-safe的GPIO,在tasking使能之前使用也是可以的,作為一個(gè)早期的單板建立。

  對(duì)于輸出GPIO,value參數(shù)提供了初始輸出值。這有助于避免系統(tǒng)啟動(dòng)過程中的信號(hào)干擾。

  為了與GPIO早期的接口兼容,設(shè)置一個(gè)GPIO的方向,隱性要求申請GPIO。這個(gè)兼容性從可選的gpiolib架構(gòu)中移除了。

  如果GPIO號(hào)碼無效或是指定的GPIO不能使用對(duì)應(yīng)模式操作的話,設(shè)置方向會(huì)失敗。依靠boot固件設(shè)置好GPIO的方向通常不是一個(gè)好主意,因?yàn)閎oot的功能可能沒有通過驗(yàn)證(除了boot linux)。(類似的,單板setup代碼可能需要將管腳復(fù)用為一個(gè)GPIO,和配置為合適的上拉/下拉。)

  Spinlock-Safe GPIO訪問

  大多數(shù)GPIO控制器可以使用內(nèi)存讀寫指令訪問。它們不需要休眠,且可以從內(nèi)部硬件中斷處理(非線程)和類似的上下文環(huán)境安全完成。

  使用下列調(diào)用訪問這些GPIO,此時(shí)gpio_cansleep將總是返回錯(cuò)誤

  /* GPIO INPUT: return zero or nonzero */
  int gpio_get_value(unsigned gpio);
  /* GPIO OUTPUT */
  void gpio_set_value(unsigned gpio, int value);

其中,value是一個(gè)布爾型參數(shù),零表示低,非零表示高。當(dāng)讀一個(gè)輸出管腳的值時(shí),返回的值應(yīng)該是在管腳上看到的值。。。這并不總是與指定輸出值相匹配的,因?yàn)榇嬖陂_漏信號(hào)和輸出延遲問題。

get/set調(diào)用沒有錯(cuò)誤返回,因?yàn)椤盁o效GPIO”應(yīng)該已經(jīng)由gpio_direction_*()提早報(bào)告了。雖然如此,并非所有的平臺(tái)都可以讀取輸出管腳的值,那些不能讀的應(yīng)該總是返回零。同時(shí),對(duì)那些可能導(dǎo)致睡眠的GPIO使用這些接口是一個(gè)錯(cuò)誤。

平臺(tái)的特定實(shí)現(xiàn)被鼓勵(lì)優(yōu)化這兩個(gè)調(diào)用以獲取GPIO值。在那些GPIO號(hào)碼是常量的情況下,它們通常只需一對(duì)指令(讀或?qū)懸粋€(gè)硬件寄存器)訪問,且不需要spinlock。這樣的優(yōu)化可以使位拆分應(yīng)用更有效率(在時(shí)間和空間上)(相比較于花費(fèi)一堆指令在子例程調(diào)用來說)。

gpio接口是干什么的

輸出值可寫(高=1,低=0)。一些芯片也可以選擇驅(qū)動(dòng)這些值的方式,以便支持“線-或”或類似方案(開漏信號(hào)線)。

輸入值可讀(1,0)。一些芯片支持輸出管腳回讀,這在線或的情況下非常有用(以支持雙向信號(hào)線)。GPIO控制器可能具有一個(gè)輸入防故障/防反跳邏輯,有時(shí)還會(huì)有軟件控制。

輸入經(jīng)常被用作中斷信號(hào),通常是邊沿觸發(fā),但也有可能是電平觸發(fā)。這些中斷可以配置為系統(tǒng)喚醒事件,從而將系統(tǒng)從低功耗模式喚醒。

一個(gè)GPIO經(jīng)常被配置為輸入/輸出雙向,根據(jù)不同的產(chǎn)品單板需求,但也存在單向的情況。

大多是GPIO可以在獲取到spinlock自旋鎖時(shí)訪問,但那些通過串行總線訪問的通常不能如此操作(休眠的原因)。一些系統(tǒng)中會(huì)同時(shí)存在這兩種形式的GPIO。

在一個(gè)給定單板上,每個(gè)GPIO用于一個(gè)特定的目的,如監(jiān)控MMC/SD卡的插入/移除,檢查卡寫保護(hù)狀態(tài),驅(qū)動(dòng)LED,配置發(fā)送器,串行總線位拆,觸發(fā)一個(gè)硬件看門狗,觸發(fā)一個(gè)開關(guān)之類的。

以上就是“gpio接口的作用是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI