杜比服务器GPIO设置文档,GPIO

GPIO

General Purpose Input Output (通用输入/输出)简称为 GPIO,或总线扩展器。

K210上有高速 GPIO(GPIOHS) 和通用 GPIO

在 K210 上, GPIO 有一下特征:

高速 GPIO:

高速 GPIO 为 GPIOHS,共 32 个。具有如下特点:

可配置输入输出信号

每个 IO 具有独立中断源

中断支持边沿触发和电平触发

每个 IO 可以分配到 FPIOA 上 48 个管脚之一

可配置上下拉,或者高阻

通用 GPIO:

通用 GPIO 共 8 个,具有如下特点:

8 个 IO 使用一个中断源

可配置输入输出信号

可配置触发 IO 总中断,边沿触发和电平触发

每个 IO 可以分配到 FPIOA 上 48 个管脚之一

注意:

一下 GPIOHS 默认已经被使用, 程序中如非必要尽量不要使用:

GPIOHS

功能

GPIOHS31

LCD_DC

GPIOHS30

LCD_RST

GPIOHS29

SD_CS

GPIOHS28

MIC_LED_CLK

GPIOHS27

MIC_LED_DATA

1. 构造函数

class GPIO(ID, MODE, PULL, VALUE)

通过指定的参数新建一个 SPI 对象

1.1. 参数

ID: 使用的 GPIO 引脚(一定要使用 GPIO 里带的常量来指定)

MODE: GPIO模式

• GPIO.IN就是输入模式

• GPIO.OUT就是输出模式

PULL: GPIO上下拉模式

• GPIO.PULL_UP 上拉

​• GPIO.PULL_DOWN 下拉

​• GPIO.PULL_NONE 即不上拉也不下拉

2. 方法

2.1. value

修改/读取 GPIO 引脚状态

GPIO.value([value])

参数

[value]: 可选参数,如果此参数不为空,则返回当前 GPIO 引脚状态

返回值

如果 [value] 参数不为空,则返回当前 GPIO 引脚状态

2.2. irq

配置一个中断处理程序,当 pin 的触发源处于活动状态时调用它。如果管脚模式为 pin.in,则触发源是管脚上的外部值。

GPIO.irq(CALLBACK_FUNC,TRIGGER_CONDITION,GPIO.WAKEUP_NOT_SUPPORT,PRORITY)

参数

CALLBACK_FUNC:中断回调函数,当中断触发的时候被调用,一个入口函数 pin_num

​• PIN_NUM 返回的是触发中断的 GPIO 引脚号(只有GPIOHS支持中断,所以这里的引脚号也是GPIOHS的引脚号)

TRIGGER_CONDITION:GPIO 引脚的中断触发模式

​• GPIO.IRQ_RISING 上升沿触发

​• GPIO.IRQ_FALLING 下降沿触发

​• GPIO.IRQ_BOTH 上升沿和下降沿都触发

返回值

2.3. disirq

关闭中断

GPIO.disirq()

参数

返回值

2.4. mode

设置 GPIO 输入输出模式

GPIO.mode(MODE)

参数

MODE

• GPIO.IN 输入模式

• GPIO.PULL_UP 上拉输入模式

• GPIO.PULL_DOWN 下拉输入模式

• GPIO.OUT 输出模式

返回值

3. 常量

GPIO0: GPIO0

GPIO1: GPIO1

GPIO2: GPIO2

GPIO3: GPIO3

GPIO4: GPIO4

GPIO5: GPIO5

GPIO6: GPIO6

GPIO7: GPIO7

GPIOHS0: GPIOHS0

GPIOHS1: GPIOHS1

GPIOHS2: GPIOHS2

GPIOHS3: GPIOHS3

GPIOHS4: GPIOHS4

GPIOHS5: GPIOHS5

GPIOHS6: GPIOHS6

GPIOHS7: GPIOHS7

GPIOHS8: GPIOHS8

GPIOHS9: GPIOHS9

GPIOHS10: GPIOHS10

GPIOHS11: GPIOHS11

GPIOHS12: GPIOHS12

GPIOHS13: GPIOHS13

GPIOHS14: GPIOHS14

GPIOHS15: GPIOHS15

GPIOHS16: GPIOHS16

GPIOHS17: GPIOHS17

GPIOHS18: GPIOHS18

GPIOHS19: GPIOHS19

GPIOHS20: GPIOHS20

GPIOHS21: GPIOHS21

GPIOHS22: GPIOHS22

GPIOHS23: GPIOHS23

GPIOHS24: GPIOHS24

GPIOHS25: GPIOHS25

GPIOHS26: GPIOHS26

GPIOHS27: GPIOHS27

GPIOHS28: GPIOHS28

GPIOHS29: GPIOHS29

GPIOHS30: GPIOHS30

GPIOHS31: GPIOHS31

GPIO.IN: 输入模式

GPIO.OUT: 输出模式

GPIO.PULL_UP: 上拉

GPIO.PULL_DOWN: 下拉

GPIO.PULL_NONE: 即不上拉也不下拉

GPIO.IRQ_RISING: 上升沿触发

GPIO.IRQ_FALLING:下降沿触发

GPIO.IRQ_BOTH: 上升沿和下降沿都触发

3.1. DEMO1: 点亮 LED

import utime

from Maix import GPIO

from board import board_info

from fpioa_manager import fm

fm.register(board_info.LED_R,fm.fpioa.GPIO0)

led_r=GPIO(GPIO.GPIO0,GPIO.OUT)

utime.sleep_ms(500)

led_r.value()

fm.unregister(board_info.LED_R)

3.2. DEMO2: 按键按下点亮 LED

import utime

from Maix import GPIO

from board import board_info

from fpioa_manager import fm

fm.register(board_info.LED_R,fm.fpioa.GPIO0)

led_b = GPIO(GPIO.GPIO0,GPIO.OUT)

led_b.value(1)

fm.register(board_info.BOOT_KEY, fm.fpioa.GPIOHS1)

key = GPIO(GPIO.GPIOHS1, GPIO.IN)

utime.sleep_ms(100)

while True:

if key.value() == 0: # 等待按键按下

led_b.value(0)

utime.sleep_ms(1000)

break

utime.sleep_ms(10)

led_b.value(1)

fm.unregister(board_info.LED_R)

fm.unregister(board_info.BOOT_KEY)

3.3. DEMO3: 在 3 秒内等待按键触发中断

import utime

from Maix import GPIO

from board import board_info

from fpioa_manager import fm

def test_irq(pin_num):

print("key", pin_num, "\n")

fm.register(board_info.BOOT_KEY, fm.fpioa.GPIOHS0)

key = GPIO(GPIO.GPIOHS0, GPIO.IN, GPIO.PULL_NONE)

utime.sleep_ms(100)

key.irq(test_irq, GPIO.IRQ_BOTH, GPIO.WAKEUP_NOT_SUPPORT,7)

utime.sleep_ms(3000) # 在 3 秒内等待触发

key.disirq() # 禁用中断

fm.unregister(board_info.BOOT_KEY)

powered by GitbookFile Modify:

2021-02-03 10:26:57

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值