欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長(zhǎng)資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          gpio接口是干什么的

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

          gpio接口是干什么的

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

          gpio接口是干什么的

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

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

          GPIO口一是個(gè)比較重要的概念,用戶可以通過(guò)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。

          接下來(lái)要做的一件事是標(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)用沒(méi)有錯(cuò)誤返回,且可能會(huì)有錯(cuò)誤配置。你通常應(yīng)該在線程上下文中使用這些調(diào)用。雖然如此,對(duì)于spinlock-safe的GPIO,在tasking使能之前使用也是可以的,作為一個(gè)早期的單板建立。

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

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

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

            Spinlock-Safe GPIO訪問(wèn)

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

            使用下列調(diào)用訪問(wèn)這些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)榇嬖陂_(kāi)漏信號(hào)和輸出延遲問(wèn)題。

          get/set調(diào)用沒(méi)有錯(cuò)誤返回,因?yàn)椤盁o(wú)效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è)硬件寄存器)訪問(wèn),且不需要spinlock。這樣的優(yōu)化可以使位拆分應(yīng)用更有效率(在時(shí)間和空間上)(相比較于花費(fèi)一堆指令在子例程調(diào)用來(lái)說(shuō))。

          gpio接口是干什么的

          gpio接口是干什么的

          輸出值可寫(xiě)(高=1,低=0)。一些芯片也可以選擇驅(qū)動(dòng)這些值的方式,以便支持“線-或”或類(lèi)似方案(開(kāi)漏信號(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í)訪問(wèn),但那些通過(guò)串行總線訪問(wèn)的通常不能如此操作(休眠的原因)。一些系統(tǒng)中會(huì)同時(shí)存在這兩種形式的GPIO。

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

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)