有關GPIO的使用方法教程

coutuixixia發表於2022-03-19

  fireflyP的GPIO使用獨立於核心的GPIO介面,這意味著兩側的控制都是相互獨立的。 因此,在控制GPIO時,會注意核心是否申請並控制了GPIO,重複控制會發生意想不到的問題。


  在python上使用幫助( gpio  )可以列印gpio使用的方法。 主要介面如下。


  | init  ( ) )


  | init  gpio功能


  | implement  it  before  using  Gpio


  |


  | get  _ level  (自) )


  | returnsthelevelofthepinforinputdirection


  | orreturnsettingofthedrregisterforoutputgpios。


  |


  |set_dir(self,dir  )。


  | set  GPIO  direction


  | :dir: refer  to  GpioDir


  |


  | set  _ drv  (自,drv  ) )。


  | set  GPIO  drv


  | :drv: refer  to  GpioDrv


  |


  | set  _ level  (自,級別) )。


  | set  gpio輸出訊號


  | : level  : refertogpiolevel


  |


  | set  _ mux  (自,mux  ) )。


  | set  GPIO  mux


  | :mux: refer  to  GpioMux


  |


  | set  _ pull  (自,拉) )。


  |設定gpio  pull


  | :pull: refer  to  GpioPull


  GPIO的使用流程大致如下。


  初始化Gpio:Gpio.init  (


  2 .申請中使用的GPIO,例如pin=gpio(gpio0b5) )。


  3 .輸入輸出控制:


  3.1 .設定輸出:


  將GPIO設定為輸出,將Gpio.OUTPUT設定為引數。 例如,pin.set_dir(gpio.output  )


  設定輸出電平,將輸出高電平引數設為Gpio.HIGH,將低電平設為Gpio.LOW,例如pin.set_level(gpio.high  )3.2 .設定為輸入:


  將GPIO作為輸入進行構成,引數設為Gpio.INPUT。 例如pin.set_dir(gpio.input  ) )。


  如果讀取輸入級別,例如pin.get_level  ( )並處於高電平,則返回值為Gpio.HIGH,低電平為Gpio.LOW


  其他介面介紹:


  set  _ drv  :設定gpio的驅動能力。 drv引數為Gpio.E_2MA、Gpio.E_4MA、Gpio.E_8MA、Gpio.E_12MA


  如果要設定set_mux:io的複用功能並將其複用到GPIO,則mux引數包含gpio.mux_gpio(set_dir中包含set_mux  ) gpio.mux_gpio  ) mux的其他值的含義具體而言,可以參照RK3288 datesheet的"7.3.2 Detail  Register  Description  "的GRF_GPIOXX_IOMUX暫存器的記述,例如gpio7a1


  gpio7a1_sel


  GPIO7A[1] iomux  select


  1'b0: gpio


  1'b1: pwm_1


  因此,pin.set_mux(gpio.mux_1)將gpio7a1的功能設定為PWM1


  set  _ pull  :設定gpio的下拉選單。 引數為Gpio.NORAML、Gpio.UP、Gpio.DOWN、Gpio.BUS_HOLD。 分別是RK3288 datesheet的:


  2 ' b  00: z  (正常執行) )。


  2 ' b  01: weak1(拉動) )。


  2 ' b  10: weak0(拉動) )。


  2 ' b  11: repeater  (匯流排金鑰器) )。


  舉一個控制開發板黃色LED的簡單例子。


  首先看看黃色LED燈對應的引腳。 如紅框內所示,是GPIO8A2:找到GPIO管腳的定義後,可以開始編寫控制程式碼。


  $sudo  python


  from  fireflyP  import  Gpio


  Gpio.init  (


  LED_YELLOW='GPIO8A2'


  led_yellow=Gpio(LED_YELLOW  )


  led  _ yellow.# set_dir  ( gpio.output  ) set  _ dir已包含set  _ mux  ( gpio  )


  LED_yellow.set_level(gpio.low  ) #點亮黃色指示燈


  複製程式碼


  如下圖紅框所示,黃色LED燈點亮


  關閉LED_yellow.set_level(gpio.high  ) #黃色指示燈


  複製程式碼


  關閉後的效果:


  完整的demo可以訪問github中的demo/gpio_test.py


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69920392/viewspace-2874083/,如需轉載,請註明出處,否則將追究法律責任。

相關文章