【ZYNQ】GPIO 与 AXI GPIO

在嵌入式开发中,GPIO 是最常见的外设。GPIO 是 General Purpose I/O 的缩写,译为通用输入/输出。GPIO 用于连接外部设备,例如按键、传感器等,实现数字信号的输入或输出功能。本文主要介绍 Zynq GPIO 的基本概念,并对比 GPIO 与 AXI GPIO 的使用方法。

GPIO

        Zynq GPIO 被称为 MIO,是 Multiplexed I/O 的缩写,译为多路复用 I/O。一般 MIO 指Zynq PS 端的用户管脚,而 PL 端的用户管脚属于扩展的 MIO,因此也被称为 EMIO(Extendable Multiplexed I/O)。

        从下图可以看到,Zynq PS 端的 MIO 管脚由 MIO Multiplexer 模块控制,PL 端的用户管脚需要通过 EMIO 接口访问。

        Zynq GPIO 以 Bank 的形式组织,其中 MIO 位于 Bank 0 和 Bank1,共有 54 个;EMIO 则位于 Bank2 和 Bank3,共有 64 个。

        Zynq 每个 GPIO 的功能都可以单个或以 Bank 为单位进行动态编程,并由软件通过一系列内存映射寄存器进行控制。GPIO 可以通过读写相关寄存器进行访问,也可以使用高层次的方式,即使用结构体与函数读写 GPIO。

        下图是 xgpiops.h 头文件关于 XGpioPs_Config 和 XGpioPs 结构体的定义。

XGpioPs API

#include "xparameters.h"
#include "xgpiops.h"#define  GPIO_0          0
#define  GPIO_DEVICE_ID  XPAR_XGPIOPS_0_DEVICE_IDvoid XGpioPs_Init(XGpioPs *GpioInstance, u32 deviceID) {// XGpioPs_Config object definitionXGpioPs_Config *ConfigPtr;ConfigPtr = XGpioPs_LookupConfig(deviceID);XGpioPs_CfgInitialize(GpioInstance, ConfigPtr, ConfigPtr->BaseAddr);// Gpio initializationXGpioPs_SetDirectionPin(GpioInstance, GPIO_0, 1);XGpioPs_SetOutputEnablePin(GpioInstance, GPIO_0, 1);XGpioPs_WritePin(GpioInstance, GPIO_0, 0);
}int main(void) {XGpioPs Gpio;XGpioPs_Init(&Gpio, GPIO_DEVICE_ID);// Todoreturn -1;
}

AXI GPIO

        AXI GPIO 是 Xilinx 提供的 GPIO IP,使用 AXI 接口通信,需要消耗一部分 PL 逻辑资源。

从下图可以看到,AXI GPIO 包含两个 GPIO 通道,每个通道最多 32 个 GPIO。

使用 AXI GPIO 时,需要 include 对应的头文件 xgpio.h,下图是 xgpio.h 中关于 XGpio_Config 和 XGpio 结构体的定义。

XGpio API

        XGpio_Initialize() 函数调用了 XGpio_LookupConfig() 和 XGpio_CfgInitialize() 这两个函数实现 GPIO 初始化,因此用户初始化只需要调用 XGpio_Initialize() 函数即可。

#include "xparameters.h"
#include "xgpio.h"#define  GPIO_0          0x01
#define  GPIO_CHANNEL    1
#define  GPIO_DEVICE_ID  XPAR_GPIO_0_DEVICE_IDint XGpio_Init(XGpio *GpioInstance, u16 DeviceId) {int Status;/* Initialize the GPIO driver */Status = XGpio_Initialize(GpioInstance, DeviceId);if (Status != XST_SUCCESS) {return XST_FAILURE;}/* Set the direction for all signals as inputs except the GPIO_0 output */XGpio_SetDataDirection(GpioInstance, GPIO_CHANNEL, ~GPIO_0);return XST_SUCCESS;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/14492.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot 实现私钥解密 前端的公钥加密内容

目录 一、前端公钥加密 二、后端私钥解密 一、前端公钥加密 Nextjs 前端实现RSA公钥加密 JSEncrypt加载问题解决-CSDN博客 二、后端私钥解密 import javax.crypto.Cipher; import java.security.KeyFactory; import java.security.PrivateKey; import java.security.spec.…

表现层框架设计之表现层设计模式_3.MVVM模式

1.MVVM模式 MVVM模式正是为解决MVP中UI种类变多,接口也会不断增加的问题而提出的。 MVVM模式全称是模型-视图-视图模型(Model-View-ViewModel),它和MVC、MVP类似,主要目的都是为了实现视图和模型的分离,不…

深度学习之基于Yolov3的行人重识别

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 行人重识别(Person Re-Identification,简称ReID)是计算机视觉领域…

新品:LoRa扩频调制SOC无线模块-内置ARM、工业级晶振

LoRa-STM32WLE5是思为无线最新研发的一款SOC无线模块,模块主芯片采用了ST 公司的STM32WLE5芯片研发。模块采用LoRa调制,内置工业级晶振,并基于高性能的ArmCortex-m4 32位RISC核心,工作频率高达48 MHz。这个核心实现了一套完整的DS…

项目十二:简单的python基础爬虫训练

许久未见,甚是想念,今日好运,为你带好运。ok,废话不多说,希望这门案例能带你直接快速了解并运用。🎁💖 基础流程 第一步:安装需要用到的requests库,命令如下 pip inst…

【漏洞复现】智慧校园(安校易)管理系统 FileUpProductupdate.aspx 任意文件上传漏洞

0x01 产品简介 "安校易"是银达云创公司基于多年教育市场信息化建设经验沉淀,经过充分的客户需求调研,并依据国家"十三五”"教育信息化建设规范而推出的综合互联网教育信息化解决方案。“安校易“以物联网技术为基础,以学…

【Python小案例】Python+mysql+PyQt5健康体检报告查询

下载安装Python3.7.8 python官网:https://www.python.org/ PyQt5配置 安装PyQt5 pip install PyQt5pip install qt5_toolspytcharm创建项目 配置外部工具 QTDesigner的Arguments语句不用填 QTDesigner的Working directory语句:$ProjectFileDir$ Pyuic的Argume…

【职场心灵伴侣】文心一言智能体

【文心一言】智能体 写在最前面名称和简介:职场心灵伴侣AI生成头像添加工具智能体调优 🌈你好呀!我是 是Yu欸 🌌 2024每日百字篆刻时光,感谢你的陪伴与支持 ~ 🚀 欢迎一起踏上探险之旅,挖掘无限…

智能农业时代:智能生态网络与数据流通的融合

随着科技的不断进步,智能农业已经成为现代农业发展的重要趋势。智能生态网络(IEN)作为一种集成化的解决方案,通过整合先进技术和数据要素流通,为智能农业的发展提供了强大的动力。在本文中,我们将探讨IEN在…

鸿蒙开发配置官方地图

一共需要配置 p12 p7b cer csr 四个文件 p12文件配置 注意创建文件名必须是.p12 到AGC创建项目 AppGallery Connect 添加自己的项目名称 我没有开启 暂时不需要 看个人需求 下载刚创建的cer证书 回到我的项目中 点击刚创建的项目 点击这里 四个文件齐全了 "metadata&qu…

C++初阶之深入模板

一、非类型模板参数 模板参数分类类型形参与非类型形参。 类型形参即:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。 非类型形参,就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成…

基于STM32实现智能空气质量监测系统

目录 文章主题环境准备智能空气质量监测系统基础代码示例:实现智能空气质量监测系统 配置传感器并读取数据数据处理与显示数据存储与传输应用场景:室内环境监测与空气质量控制问题解决方案与优化收尾与总结 1. 文章主题 文章主题 本教程将详细介绍如何…

如何在 Ubuntu 24.04 (桌面版) 上配置静态IP地址 ?

如果你想在你的 Ubuntu 24.04 桌面有一个持久的 IP 地址,那么你必须配置一个静态 IP 地址。当我们安装 Ubuntu 时,默认情况下 DHCP 是启用的,如果网络上可用,它会尝试从 DHCP 服务器获取 IP 地址。 在本文中,我们将向…

登录接口测试

登录接口测试 数据驱动

我把PostgreSQL最核心的插件撸干净了!!!

作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验, Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复, 安装迁移,性能优化、故障…

景源畅信:小白做抖音运营难吗?

在数字化时代,社交媒体已成为人们生活的一部分,而抖音作为其中的翘楚,吸引了众多希望通过平台实现自我价值和商业目标的用户。对于刚入门的小白来说,运营抖音账号可能会遇到不少挑战。接下来,我们将详细探讨这一话题&a…

法那科机器人M-900iA维修主要思路

发那科工业机器人是当今制造业中常用的自动化设备之一,而示教器是发那科机器人操作和维护的重要组成部分。 一、FANUC机械手示教器故障分类 1. 硬件故障 硬件故障通常是指发那科机器人M-900iA示教器本身的硬件问题,如屏幕损坏、按键失灵、电源故障等。 2…

NFT Insider #131:Mocaverse NFT市值破3.5万ETH,The Sandbox 参加NFCsummit

引言:NFT Insider由NFT收藏组织WHALE Members(https://twitter.com/WHALEMembers)、BeepCrypto (https://twitter.com/beep_crypto)联合出品,浓缩每周NFT新闻,为大家带来关于NFT最全面、最新鲜、…

EasyExcel的CellWriteHandler注入CellStyle不生效

文章目录 一、问题描述二、问题排查三、解决问题 一、问题描述 最近发现原本项目的导出excel功能中,写的那些 CellWriteHandler 去改变样式的代码全都不生效了 二、问题排查 由于代码都是没有改动的,加上最近有升级过 easyExcel 的版本,由…

YOLOv5改进 | 主干网络 | 用EfficientNet卷积替换backbone【教程+代码 】

💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 在YOLOv5的GFLOPs计算量中,卷积占了其中大多数的比列,为了减少计算量,研究人员提出了用EfficientNet代替b…