【ZYNQ】GPIO 与 AXI GPIO

2024-05-25 03:44
文章标签 gpio zynq axi

本文主要是介绍【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;
}

这篇关于【ZYNQ】GPIO 与 AXI GPIO的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1000386

相关文章

A20 操作GPIO口

例如:先在 Sys_config.fex文件中 [1302_para] 1302_used      = 1 1302_clk             = port:PD05<1><default><default><0> 1302_dat             = port:PD06<1><default><default><0> 1302_rs

ZYNQ LWIP (RAW API) UDP函数学习

1 RAW API接口 RAW API是基于回调函数实现的API接口,它是很底层的API接口,这需要开发者对LwIP有较深的了解才能很好使用它,RAW API的核心就是对控制块的处理,因为对于报文数据的处理、注册回调函数等都是需要开发者自己去实现,都是比较麻烦的,但是有一个优点,那就是处理数据效率高。 2 RAW API的UDP函数说明 udp_new()–新建控制块 在使用UDP协议进行通

ZYNQ MPSOC FPGA 仿真 教程

1. **FPGA与MPSOC**: FPGA (Field Programmable Gate Array) 是一种可以通过编程配置的集成电路,适用于各种应用和功能。MPSOC (Multi-Processor System on Chip) 是集成了多个处理器(通常是微处理器)的系统芯片,用于处理复杂的应用,如图像处理、网络通信等。 2. **仿真与分析**:    - **仿

新路程------sil9135 hi3516a gpio功能确认

首先确认SCDT管脚 数据手册解释: 也就是hi3516端应该配置为in,这个pin用来表示有video进来,那么进来前后,pin的状态是如何变化的呢? 还有编程手册里 有寄存器可以读取这个SCDT的值,那么还要这个pin干什么呢?不太理解,以后解释 接下来是int pin,中断好配, hi3516a这边是gpio11_2,先看是否配成gpio /usr #

【STM32开发】GPIO最全解析及应用实例

目录 【1】GPIO概述 GPIO的基本概念 GPIO的应用 【2】GPIO功能描述 1.IO功能框图 2.知识补充 3.功能详述 浮空输入 上拉输入 下拉输入 模拟输入 推挽输出 开漏输出 复用开漏输出和复用推挽输出 【3】GPIO常用寄存器 相关寄存器介绍 4个32位配置寄存器 2个32位数据寄存器 1个32位 置位/复位寄存器 2个32位 复用功能配置寄存器 常用寄存器详述 GPIO端

【ZYNQ MPSoC开发】lwIP TCP发送用于数据缓存的软件FIFO设计

设计背景        任务是在ZYNQ的PS上使用裸机运行lwIP协议栈使用TCP把PL端通过AXI DMA传来的将近100K采样率的ADC数据发送出去,但由于数据带宽很大,有853.3mbps,所以在每一次AXI DMA简单传输结束后,lwIP未必有足够的发送buffer立即把数据发送走,如果是发送完再进行下一次简单传输的思路,则会很大地限制了整个系统的带宽,一个简单的思路是每次传输完成后判

petalinux,Zynq UltraScale+ MPSoC;WARNING: Failed to load PMUFW, doesn't exist in pre-built.

petalinux-package --pmufw ./images/linux/pmufw.elf 这个参数貌似没有生效; 解决办法: cp images/linux/pmufw.elf ./pre-built/linux/images/

集成电路学习:什么是GPIO通用输入输出

GPIO:通用输入输出         GPIO,全称General Purpose Input/Output,即通用输入/输出端口,是嵌入式系统中非常重要的基本硬件资源之一。以下是对GPIO的详细解析: 一、GPIO的定义与功能         GPIO是一种非常灵活的接口,可以实现数字输入、数字输出、模拟输入、模拟输出等多种功能。它作为微控制器、嵌入式系统或其他电子设备与外部世界进行

TI DSP TMS320F280025 Note9:GPIO输入输出与外部中断功能原理与应用

TMS320F280025 GPIO输入输出与外部中断功能原理与应用 文章目录 TMS320F280025 GPIO输入输出与外部中断功能原理与应用GPIO原理输入输出模式的共同特性1. 复用设置2. 内部上拉设置3. GPIO状态读取 对于输出模式输出电平设置开漏输出设置 对于输入模式极性设置采样类型不同步(异步输入)只同步到SYSCLKOUT使用采样窗口进行鉴定 外部输入中断G

笔记 10 : 彭老师课本第 5 章 , GPIO , vim 的复制剪切删除 ; uboot读写内存的 md , nm 命令

(77) 进入代码实验以来,开始有机会频繁的修改源代码。补充 vim 的使用: ++ (78) 如何只查看某个文件的权限,属性: (79) 关于 rm 命令: (80) 接着学习 新的 Uboot 命令: md/nm 显示内存与修改内存: uboot 有很多不错的调试命令。之前学习和使用了 loadb 指令指定指令的加载地址, 如 40008000 H: ++ nm