ITPub博客

首页 > 应用开发 > Python > 有关GPIO的使用方法教程

有关GPIO的使用方法教程

原创 Python 作者:coutuixixia 时间:2022-03-19 19:43:50 0 删除 编辑

  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博客 ” ,链接:https://blog.itpub.net/69920392/viewspace-2874083/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
CAICHEN点cc

注册时间:2022-03-18

  • 博文量
    13
  • 访问量
    4173