PYNQ例程一:1.4 AxiGPIO

leds : AxiGPIO
| 4-bit output GPIO for interacting with the green LEDs LD0-3
led是AxiGPIO类,这里讲解AxiGPIO类

AxiGPIO
AxiGPIO类提供了从外部通用外围设备(如led、按钮、使用AXI GPIO控制器IP连接到PL的开关)读取、写入和接收中断的方法。

框图

AxiGPIO模块控制PL中AXI GPIO控制器的实例。每个AXI GPIO最多可以有两个通道,每个通道最多有32个引脚。
在这里插入图片描述
read()和write()方法用于在通道(所有GPIO)上读写数据。

可以使用setdirection()和setlength()配置IP,方向可以是in、out和inout。

默认的方向是“inout”,指定’ in ‘或’ out ‘只允许对IP分别进行读和写,而试图
读’ out ‘或写’ in '将导致错误。

可以将长度设置为只写入较小范围的GPIO。

GPIO也可以像数组一样处理。这允许设置特定的位,并避免使用位掩码。

来自AXI GPIO的中断信号ip2intc_irpt可以直接连接到一个AXI中断控制器,从而在PS中产生中断。
在这里插入图片描述LED、Switch、Button和rgled类扩展了AxiGPIO控制器,并为相应的外围设备定制。这些类期望一个名为[led|switch|button|rgbleds]_gpio的AXI GPIO实例存在于该类使用的overlay中。

例子

这个例子是为了说明,展示如何使用AxiGPIO类。在实践中,可以使用LED、按钮、开关和rgled类来扩展AxiGPIO类,这些外围设备应该使用overlay类。

加载overlay之后,可以通过将AXI GPIO控制器的名称传递给类来实例化AxiGPIO实例。

from pynq import Overlay
from pynq.lib import AxiGPIOol = Overlay("base.bit")

led_ip = ol.ip_dict['gpio_leds']
switches_ip = ol.ip_dict['gpio_switches']
leds = AxiGPIO(led_ip).channel1
switches = AxiGPIO(switches_ip).channel1

简单读写:

mask = 0xffffffff
leds.write(0xf, mask)
switches.read()

使用AXI GPIO作为数组:

switches.setdirection("in")
switches.setlength(3)
switches.read()

有关AxiGPIO模块和用于读取、写入和等待中断的API的更多信息,可以在pynq.lib中找到。axigpio模块部分。

有关更多示例,请参阅PYNQ-Z1/PYNQ-Z2电路板的“按钮和led演示”笔记本:
/base/board/board_btns_leds.ipynb

在GitHub存储库的相应文件夹中可以找到相同的笔记本。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值