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

Zynq PS端外设之GPIO

1. GPIO(通用输入/输出)

GPIO外设有4个Bank,Bank0/1通过MIO连接到PS的引脚上;Bank2/3通过EMIO连接到PL的引脚上。
注意:Bank1的电平要改成LVCOMS 1.8

  • GPIO寄存器
    在这里插入图片描述

    寄存器:
    DATA_RO:	读取GPIO的输入
    DATA:		设置GPIO的输出值
    MASK_DATA_LSW/MASK_DATA_MSW:	数据掩码寄存器,MASK_DATA_LSW 控制Bank的低16位,MASK_DATA_MSW控制高16位
    DIRM:		方向模式寄存器,控制I/O引脚是输入还是输出
    OEN:		使能输出寄存器,控制是否启用输出
    

2.GPIO的使用

2.1 MIO

MIO不需要添加引脚约束,Zynq勾选MIO,SDK即可直接使用GPIO。

  • Vivado开发
    在这里插入图片描述

  • SDK开发

#include "xparameters.h" //器件参数信息
#include "xstatus.h"     //包含XST_FAILURE和XST_SUCCESS的宏定义
#include "xil_printf.h"  //包含print()函数
#include "xgpiops.h"     //包含PS GPIO的函数#define GPIO_DEVICE_ID      XPAR_XGPIOPS_0_DEVICE_ID
#define MIOLED0    0     //连接到MIO0int main()
{// 1.初始化GPIOint Status;XGpioPs Gpio;XGpioPs_Config *ConfigPtr;ConfigPtr = XGpioPs_LookupConfig(GPIO_DEVICE_ID);Status = XGpioPs_CfgInitialize(&Gpio, ConfigPtr, ConfigPtr->BaseAddr);if (Status != XST_SUCCESS){return XST_FAILURE;}// 2.设置指定引脚的方向:0输入,1输出XGpioPs_SetDirectionPin(&Gpio, MIOLED0, 1);// 3.使能指定引脚输出:0禁止输出使能,1使能输出XGpioPs_SetOutputEnablePin(&Gpio, MIOLED0, 1);// 4.向指定引脚写入数据:0或1XGpioPs_WritePin(&Gpio, MIOLED0, 0x0);while (1);return XST_SUCCESS;
}

2.2 EMIO

EMIO(Extended MIO,扩展的MIO)

  • Vivado开发

    1. 勾选EMIO
      在这里插入图片描述
    2. 引出管脚并添加管脚约束
      在这里插入图片描述
  • SDK开发

    #include "stdio.h"
    #include "xparameters.h"
    #include "xgpiops.h"#define GPIOPS_ID XPAR_XGPIOPS_0_DEVICE_ID   //PS端  GPIO器件 ID
    #define EMIO_KEY 54  //PL_KEY0 连接到EMIO0int main()
    {// 1.初始化GPIOXGpioPs gpiops_inst;XGpioPs_Config *gpiops_cfg_ptr;gpiops_cfg_ptr = XGpioPs_LookupConfig(GPIOPS_ID);XGpioPs_CfgInitialize(&gpiops_inst, gpiops_cfg_ptr, gpiops_cfg_ptr->BaseAddr);// 2.设置指定引脚的方向:0输入,1输出XGpioPs_SetDirectionPin(&gpiops_inst, EMIO_KEY, 0);// 3.读取GPIO的值char key_value = 0;XGpioPs_ReadPin(&gpiops_inst, EMIO_KEY);while(1){}return 0;
    }
    

    注意:BANK2的EMIO0编号为 54 (从0 开始编号)

相关文章:

Zynq PS端外设之GPIO

1. GPIO(通用输入/输出) GPIO外设有4个Bank,Bank0/1通过MIO连接到PS的引脚上;Bank2/3通过EMIO连接到PL的引脚上。 注意:Bank1的电平要改成LVCOMS 1.8 GPIO寄存器 寄存器: DATA_RO: 读取GPIO的输…...

Spring Boot项目开发常见问题及解决方案(上)

启动相关问题 问题 1:项目启动时报错“找不到主类” 在使用 Spring Boot 打包成可执行 JAR 文件后启动,有时会遇到这个头疼的问题。通常是因为打包配置有误或者项目结构不符合要求。 解决方案: 首先,检查 pom.xml(Ma…...

Elasticsearch: 高级搜索

这里写目录标题 一、match_all匹配所有文档1、介绍: 二、精确匹配1、term单字段精确匹配查询2、terms多字段精确匹配3、range范围查询4、exists是否存在查询5、ids根据一组id查询6、prefix前缀匹配7、wildcard通配符匹配8、fuzzy支持编辑距离的模糊查询9、regexp正则…...

STM32 拓展 电源控制

目录 电源控制 电源框图 VDDA供电区域 VDD供电区域 1.8V低电压区域 后备供电区域 电压调节器 上电复位和掉电复位 可编程电压检测器(PVD) 低功耗 睡眠模式(只有CUP(老板)睡眠) 进入睡眠模式 退出睡眠模式 停机(停止)模式(只留核心区域(上班)) 进入停…...

SpringBootWeb案例-1

文章目录 SpringBootWeb案例1. 准备工作1.1 需求&环境搭建1.1.1 需求说明1.1.2 环境搭建 1.2 开发规范 2. 部门管理2.1 查询部门2.1.1 原型和需求2.1.2 接口文档2.1.3 思路分析2.1.4 功能开发2.1.5 功能测试 2.2 前后端联调2.3 删除部门2.3.1 需求2.3.2 接口文档2.3.3 思路…...

HTML——57. type和name属性

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>type和name属性</title></head><body><!--1.input元素是最常用的表单控件--><!--2.input元素不仅可以在form标签内使用也可以在form标签外使用-…...

应用架构模式-总体思路

采用引导式设计方法&#xff1a;以企业级架构为指导&#xff0c;形成较为齐全的规范指引。在实践中总结重要设计形成决策要点&#xff0c;一个决策要点对应一个设计模式。自底向上总结采用该设计模式的必备条件&#xff0c;将之转化通过简单需求分析就能得到的业务特点&#xf…...

vue 虚拟滚动 vue-virtual-scroller RecycleScroller

vue 3 https://github.com/Akryum/vue-virtual-scroller/blob/master/packages/vue-virtual-scroller/README.md vue 2 https://github.com/Akryum/vue-virtual-scroller/tree/v1/packages/vue-virtual-scroller npm install --save vue-virtual-scrollernextmain.js // 虚拟滚…...

DC-DC 降压转换器设计提示和技巧

基本 DC-DC 降压转换器电路 在开始之前&#xff0c;我们先回顾一下DC-DC降压转换器的电路&#xff1a; 为了帮助您&#xff0c;我开发了降压设计中“什么影响什么”的矩阵&#xff1a; 主要的权衡是电感&#xff08;与 k 因子成反比&#xff0c;即峰峰值与平均电感电流之比&a…...

多模态论文笔记——Coca

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍多模态模型Coca&#xff0c;在DALLE 3中使用其作为captioner基准模型的原因和优势。 文章目录 ALBEF论文模型结构组成训练目标 CoCa​论文模型结构CoCa…...

@Cacheable 注解爆红(不兼容的类型。实际为 java. lang. String‘,需要 ‘boolean‘)

文章目录 1、org.springframework.cache.annotation.Cacheable2、javax.persistence.Cacheable Cacheable(value "findPAUserById", key "#id")public Optional<PAUser> findById(Integer id) {return paUserRepository.findById(id);}我真的要笑死…...

java相互加密解密

java代码 import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.util.Base64;public class AesUtils {public static String encrypt(String plaintext, String key, String iv) throws Exception {C…...

PostgreSQL中FIRST_VALUE、LAST_VALUE、LAG 和 LEAD是窗口函数,允许返回在数据集的特定窗口(或分区)内访问行的相对位置

在PostgreSQL中&#xff0c;FIRST_VALUE、LAST_VALUE、LAG 和 LEAD 是窗口函数&#xff08;window functions&#xff09;&#xff0c;它们允许你在数据集的特定窗口&#xff08;或分区&#xff09;内访问行的相对位置。以下是对这些函数的详细解释和用法&#xff1a; 1. FIRS…...

树莓派之旅-第一天 系统的烧录和设置

自言自语&#xff1a; 在此记录一下树莓派的玩法。以后有钱了买点来玩啊草 系统的安装烧录 系统下载 树莓派官网&#xff1a;https://www.raspberrypi.com/ 首页点击SoftWare进入OS下载页面 这里是安装工具&#xff1a;安装工具负责将系统镜像安装到sd卡中 点击下载符合自己…...

数据库工程师进阶秘籍:云计算基础知识题目精选与答案(附PDF)

【单选题】1、将基础设施作为服务的云计算服务类型是&#xff08;&#xff09;。 A. IaaS B. PaaS C. SaaS D. 以上都不是 正确答案&#xff1a;A 答案解析&#xff1a;本题考查云计算的服务类型。基础设施即服务IaaS&#xff08;Infrastructure as a Service&#xff09;&…...

【HAProxy】如何在Ubuntu下配置HAProxy服务器

HAProxy 是一款免费、开源且强大的反向代理程序&#xff0c;它为 HTTP 和 TCP 基础的应用提供了高可用性、负载均衡以及代理功能&#xff0c;因此对于管理高流量服务器&#xff08;或 Web 应用&#xff09;来说&#xff0c;通过将负载分散到多个节点服务器上&#xff0c;它是一…...

C#编写的盘符图标修改器 - 开源研究系列文章

这天在网上遇到一个Windows的盘符图标修改软件&#xff0c;但是它那个是.net framework 2.0的&#xff0c;所以就将其改成4.8.1的了&#xff0c;用于Windows 11等默认不安装2.0库的操作系统里使用。 1、 项目目录&#xff1b; 2、 源码介绍&#xff1b; 它直接进行注册表的修改…...

(四)配置有线网口、SSH登陆、文件传输以及运行交叉编译程序测试

文章目录 配置有线网口原因自动分配不行第一步 设置前先停止网络接口第二步 手动分配ip第三步 使配置的网口ip永久生效第四步 测试一下网络是否通了 SSH登陆文件传输以及运行交叉编译程序测试第一种借助基于SSH的命令行工具SCP传输文件第二种借助基于MobaXterm 软件直接上传测试…...

离线的方式:往Maven的本地仓库里安装依赖

jar文件及源码的绝对路径&#xff0c;gav坐标&#xff0c;打包方式&#xff0c;Maven本地仓库的路径 mvn install:install-file ^-DfileD:\hello-spring-boot-starter-1.0-SNAPSHOT.jar ^-DsourcesD:\hello-spring-boot-starter-1.0-SNAPSHOT-sources.jar ^-DgroupIdcom.examp…...

《深入浅出HTTPS​​​​​​​​​​​​​​​​​》读书笔记(22):密钥协商算法

《深入浅出HTTPS​​​​​​​​​​》读书笔记&#xff08;22&#xff09;&#xff1a;密钥协商算法 密钥的管理和分配是个难题&#xff0c;尤其是生成一个动态密钥更难&#xff0c;而密钥协商算法就可以解决密钥分配、存储、传输等问题。 在网络通信中&#xff0c;为了加密…...

等保.三级要求下Redis 安全测评应该怎么做?

1. 引入 在现代 AI 工程中&#xff0c;Hugging Face 的 tokenizers 库已成为分词器的事实标准。不过 Hugging Face 的 tokenizers 是用 Rust 来实现的&#xff0c;官方只提供了 python 和 node 的绑定实现。要实现与 Hugging Face tokenizers 相同的行为&#xff0c;最好的办法…...

城通网盘限速破解终极指南:ctfileGet工具让你免费享受10倍下载速度

城通网盘限速破解终极指南&#xff1a;ctfileGet工具让你免费享受10倍下载速度 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 你是否曾经被城通网盘的限速下载折磨得痛不欲生&#xff1f;面对几十KB/s…...

突破百度网盘下载限速:BaiduPCS-Go命令行客户端的3大技术突破

突破百度网盘下载限速&#xff1a;BaiduPCS-Go命令行客户端的3大技术突破 【免费下载链接】BaiduPCS-Go iikira/BaiduPCS-Go原版基础上集成了分享链接/秒传链接转存功能 项目地址: https://gitcode.com/GitHub_Trending/ba/BaiduPCS-Go 你是否厌倦了百度网盘的龟速下载&…...

从零开始:Java使用通用物体识别-ResNet18镜像实现图像分类

从零开始&#xff1a;Java使用通用物体识别-ResNet18镜像实现图像分类 你是否想过&#xff0c;用Java写几行代码&#xff0c;就能让程序看懂一张图片里有什么&#xff1f;过去&#xff0c;这可能需要搭建复杂的Python环境、学习深度学习框架、处理繁琐的模型部署。但现在&…...

YOLO12快速部署指南:Gradio界面已配好,启动就能用

YOLO12快速部署指南&#xff1a;Gradio界面已配好&#xff0c;启动就能用 1. 为什么选择YOLO12镜像 YOLO12作为2025年最新发布的目标检测模型&#xff0c;带来了革命性的注意力为中心架构。这个预配置好的镜像让您无需任何复杂操作&#xff0c;就能立即体验最先进的目标检测技…...

Ubuntu 22.04上,用Cephadm 17.2.0搭建单节点Ceph集群的保姆级避坑指南

Ubuntu 22.04单节点Ceph集群实战&#xff1a;从零到生产级部署的17个关键细节 当你在Ubuntu 22.04上尝试用Cephadm搭建单节点Ceph集群时&#xff0c;是否遇到过这些场景&#xff1a;bootstrap卡在某个步骤超过半小时、OSD设备明明存在却显示"no available devices"、…...

地理计算引擎GeographicLib全解析:从场景应用到算法原理

地理计算引擎GeographicLib全解析&#xff1a;从场景应用到算法原理 【免费下载链接】geographiclib Main repository for GeographicLib 项目地址: https://gitcode.com/gh_mirrors/ge/geographiclib 一、核心场景应用解析&#xff1a;解决真实世界地理难题 在航海导航…...

Phi-4-mini-reasoning部署教程:多模型共存时GPU显存隔离配置技巧

Phi-4-mini-reasoning部署教程&#xff1a;多模型共存时GPU显存隔离配置技巧 1. 模型介绍 Phi-4-mini-reasoning是微软推出的3.8B参数轻量级开源模型&#xff0c;专为数学推理、逻辑推导和多步解题等强逻辑任务设计。这个模型主打"小参数、强推理、长上下文、低延迟&quo…...

PDB文件管理实战:用符号服务器加速团队协作调试(含VS2022配置示例)

PDB文件管理实战&#xff1a;构建企业级符号服务器加速团队协作调试 当开发团队规模超过10人时&#xff0c;调试符号管理就会从技术问题升级为协作难题。想象这样的场景&#xff1a;周五下午5点&#xff0c;QA报告生产环境出现崩溃转储&#xff0c;开发团队需要立即分析。但当工…...

MXene基单原子催化剂在电催化CO2还原中的电子结构调控与性能优化

1. MXene基单原子催化剂为何能成为CO2还原的"黑马"&#xff1f; 在碳中和背景下&#xff0c;电催化CO2还原技术就像一位"化学魔术师"&#xff0c;能把温室气体变废为宝。而MXene材料凭借其独特的层状结构和导电性&#xff0c;正成为这场魔术表演的明星道具…...