当前位置: 首页 > news >正文

Vivado GPIO详解

文章目录

    • 硬件说明
    • 软件

硬件说明

在这里插入图片描述

在其信号接口中,左侧的S_AXI, s_axi_aclk, s_axi_areshtn会自动通过AXI Interconnect或者smc与zynq的GP端口相连接,其右侧的GPIO接口下面有三个信号,分别是

  • gpio_io_i:输入信号,将PL端的电平送入GPIO核,供PS读取。
  • gpio_io_o:输出信号,将PS写入数据寄存器的值输出到PL端。
  • gpio_io_t:三态控制信号,通常由方向寄存器控制,决定引脚是高阻态(输入)还是驱动输出(输出)。在很多设计中,这个信号被直接连接到方向寄存器的输出。

其右侧可进行设置的参数如下

  • 【All Input/Output】勾选表示设置所有的GPIO指定为输入或者输出接口,若勾选,则PS中无法再设置GPIO方向。
  • 【GPIO Width】接口位宽,最高32位
  • 【Default Output Value】默认输出值
  • 【Default Output Value】设置GPIO的默认输入/输出模式。这里的“Tri State”可能指的是GPIO引脚的初始状态或默认模式,其中“0”代表输出模式,“1”代表输入模式。但具体实现可能因不同的IP核而异。
  • 【Enable Dual Channel】使能GPIO通道2,勾选后GPIO 2可以设置
  • 【Enable Interrupt】使能中断,AXI GPIO只能使能整个通道中断,而无法像EMIO一样单独使能通道中某个引脚的中断,当使能某个通道中断后,该通道所有输入引脚均能产生中断信号,效果完全相同。AXI GPIO中断属于IRQ_F2P,而IRQ_F2P的中断类型只能设置为上升沿或者高电平,而不能是下降沿或者低电平。

软件

【xgpio.h】提供了GPIO相关的一些函数,主要包括初始化、设置端口方向、读写端口等功能。这些函数在使用时,至少需要输入指向GPIO示例的指针【InstancePtr】,故后续不再对这个参数进行说明。

【XGpio_Initialize】用于初始化GPIO,其原型如下,其中【DevicedId】为设备的ID号,为自动生成,可在xparameters.h中找到,一般被定义为宏【XPAR_AXI_GPIO_0_DEVICE_ID】。

int XGpio_Initialize(XGpio *InstancePtr, u16 DeviceId);

在设置端口方向、读写端口时,除了需要指定GPIO实例的指针,还需指名待设置的通道【Channel】,可选1或者2。这三个函数的原型如下

void XGpio_SetDataDirection(XGpio *InstancePtr, unsigned Channel, u32 DirectionMask);
u32 XGpio_GetDataDirection(XGpio *InstancePtr, unsigned Channel)void XGpio_DiscreteWrite(XGpio *InstancePtr, unsigned Channel, u32 Mask);
u32 XGpio_DiscreteRead(XGpio *InstancePtr, unsigned Channel);
  • 【XGpio_SetDataDirection】用于设置GPIO方向,其参数DirectionMask用于设置方向,0表示output,1表示input。
  • 【XGpio_GetDataDirection】用于获取GPIO方向,其返回值即为DirectionMask
  • 【XGpio_DiscreteWrite】为写入GPIO的函数,其参数Mask即为要写入的值。
  • 【XGpio_DiscreteRead】用于读取GPIO,其返回值即为GPIO中的值。
http://www.dtcms.com/a/330866.html

相关文章:

  • 量化因子RSI
  • 中小型泵站物联网智能控制系统解决方案:构建无人值守的自动化泵站体系
  • 基于STM32单片机智能手表GSM短信上报GPS定位温湿度检测记步设计
  • OS设备UDID查看方法
  • Mybatis学习笔记(一)
  • 「iOS」————设计架构
  • 在语音通信业务量下降时候该怎么做
  • PHP现代化全栈开发:微服务架构与云原生实践
  • 基于FPGA的8PSK+卷积编码Viterbi译码通信系统,包含帧同步,信道,误码统计,可设置SNR
  • 一台联想 ThinkCentre M7100z一体机开机黑屏无显示维修记录
  • 优化 SQL 查询:选出每个分组最大值的行并插入 10W 条测试数据
  • 云计算-Docker Compose 实战:从OwnCloud、WordPress、SkyWalking、Redis ,Rabbitmq等服务配置实例轻松搞定
  • 【代码随想录day 20】 力扣 108.将有序数组转换为二叉搜索树
  • 老生常谈之引用计数:《More Effective C++》条款29
  • 炎热的夏天
  • SQL181 第二快/慢用时之差大于试卷时长一半的试卷
  • 掌握MATLAB三维可视化:从基础到实战技巧
  • Redis 从入门到生产:数据结构、持久化、集群、工程实践与避坑(含 Node.js/Python 示例)
  • jenkins在windows配置sshpass
  • 构建Node.js单可执行应用(SEA)的方法
  • 【前端工具】使用 Node.js 脚本实现项目打包后自动压缩
  • Go语言defer机制详解与应用
  • 机器学习介绍
  • 预训练模型在机器翻译中的应用:迁移学习的优势详解
  • 华为实验WLAN 基础配置随练
  • dkms安装nvidia驱动和多内核支持
  • 【motion】GIF 转mp4及ubuntu的VLC播放
  • 数据结构初阶(14)排序算法—交换排序(冒泡)(动图演示)
  • 基于SpringBoot+Vue的房屋匹配系统(WebSocket实时通讯、协同过滤算法、地图API、Echarts图形化分析)
  • iOS App TestFlight 上架全流程案例,从 0 到 1 完成内测分发