日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

gpio接口是干什么的(什么是gpio接口)

發布時間:2023/12/15 综合教程 33 生活家
生活随笔 收集整理的這篇文章主要介紹了 gpio接口是干什么的(什么是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接口是干什么的

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

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

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

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

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

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

更多相關知識,請訪問常見問題欄目!

以上就是gpio接口是干什么的的詳細內容,更多請關注風君子博客其它相關文章!

總結

以上是生活随笔為你收集整理的gpio接口是干什么的(什么是gpio接口)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。