站長資訊網
        最全最豐富的資訊網站

        gpio接口是干什么的

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

        gpio接口是干什么的

        本教程操作環境:windows10系統、DELL G3電腦。

        gpio接口是干什么的

        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接口是干什么的

        gpio接口是干什么的

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

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

        輸入經常被用作中斷信號,通常是邊沿觸發,但也有可能是電平觸發。這些中斷可以配置為系統喚醒事件,從而將系統從低功耗模式喚醒。

        一個GPIO經常被配置為輸入/輸出雙向,根據不同的產品單板需求,但也存在單向的情況。

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

        在一個給定單板上,每個GPIO用于一個特定的目的,如監控MMC/SD卡的插入/移除,檢查卡寫保護狀態,驅動LED,配置發送器,串行總線位拆,觸發一個硬件看門狗,觸發一個開關之類的。

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 日韩精品国产另类专区| 精品无码人妻夜人多侵犯18| 亚洲一日韩欧美中文字幕欧美日韩在线精品一区二 | 无码精品久久一区二区三区| 国产92成人精品视频免费| 亚洲国产精品成人| 精品国产一区二区三区2021| 四虎国产精品永久地址99新强| 色偷偷88888欧美精品久久久| 国产精品区AV一区二区| 久久最新精品国产| 99在线精品视频| 国产日韩精品欧美一区| 亚洲精品国产美女久久久| 久久se精品一区二区影院| 亚洲精品线在线观看| 国产产无码乱码精品久久鸭| 亚洲国产另类久久久精品黑人 | 午夜精品久久久久久久久| 鲸鱼传媒绿头鱼实验室之炮机测评日韩精品一级毛 | 精品日本一区二区三区在线观看 | 精品无码一区二区三区爱欲 | 99久久精品免费看国产免费| 国产成人精品日本亚洲直接| 国产精品无码专区| 国内少妇偷人精品视频免费| 日韩精品久久久久久久电影蜜臀| 在线精品亚洲一区二区三区| 亚洲国产精品成人一区| 亚洲精品视频久久久| 伊人 久久 精品| 亚洲AV无码久久精品成人| 亚洲精品自在在线观看| 亚洲AV永久无码精品网站在线观看 | 精品偷自拍另类在线观看丰满白嫩大屁股ass| 99久re热视频这里只有精品6| 亚洲天堂久久精品| 成人精品一区二区三区免费看 | 亚洲韩国精品无码一区二区三区| 亚洲AV乱码久久精品蜜桃| 亚洲2022国产成人精品无码区|