ZYNQ: GPIO 之 EMIO 按键控制 LED 实验

news2024/11/26 5:35:47

GPIO 之 EMIO 按键控制 LED 实验目的

使用启明星 ZYNQ 底板上的两个用户按键分别控制 PS 端两个 LED 的亮灭
其中一个按键 PL_KEY0 连接到了 PL 端,需要通过 EMIO 进行扩展,另外一个按键是底板上 PS 端的用户按键PS_KEY0,这两个按键分别控制 PS_LED0 和 PS_LED1
底板上的 PS_KEY0 控制 PS_LED0、PL_KEY0 控
制 PS_LED1。两个 LED 灯在按键按下的时候点亮,释放后熄灭。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

简介

ZYNQ GPIO 接口信号被分成四组,分别是从 BANK0 到 BANK3。其中 BANK0 和 BANK1 中共计 54
个信号通过 MIO 连接到 ZYNQ 器件的引脚上,这些引脚属于 PS 端;而 BANK2 和 BANK3 中共计 64 个信
号则通过 EMIO 连接到了 ZYNQ 器件的 PL 端

在这里插入图片描述

硬件设计

创建 Vivado 工程

另存工程
在这里插入图片描述

使用 IP Integrator 创建 Processing System

在 Flow Navigator 中,点击 IP INTEGRATOR 下的 Open Block Design

在 Diagram 窗口中,双击打开 ZYNQ7 Processing System 重定义窗口
在这里插入图片描述
通过 EMIO 扩展一个 1 位的 GPIO 接口信号,此信号将用于连接 PL 端的引脚
在这里插入图片描述
在这里插入图片描述
点击选中该端口,然后点击
鼠标右键,在弹出的列表中选择“Make External”,
在这里插入图片描述
看到 ZYNQ7 Processing System 引出了一个名为 GPIO_0_0 的接口
在这里插入图片描述
点击选中该接口,在左侧External Interface Properties 一栏中将该接口的名称修改为GPIO_EMIO_KEY
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
按 Ctrl+S 快捷键保存设计

在这里插入图片描述

生成顶层 HDL

在 Sources 窗口中展开 Design Sources,然后右键点击 sysetm_wrapper 下的 system.bd,在弹出的菜
单中选择 Generate Output Products

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

生成 Bitstream 文件并导出硬件

在左侧 Flow Navigator 导航栏中找到 RTL ANALYSIS,点击该选项中的“Open Elaborated Design”,
在这里插入图片描述
在 ELABORATED DESIGN 界面下方找到 I/O Ports 窗口
在这里插入图片描述
在这里插入图片描述
Ctrl+S 快捷键保存
在这里插入图片描述
并生成 Bitstream 文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

导出硬件

File > Export > Export hardware
勾选“Include bitstream”
点击“Next”

如果我们的设计使用了 PL 的资源,比如使用了 PL 的引脚,或者在 PL 内实现了部
分功能模块,那么我们就需要生成 Bitstream 文件,并在导出硬件的时候包含该文件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

软件设计

#include "xparameters.h" //器件参数信息
#include "xstatus.h" //包含 XST_FAILURE 和 XST_SUCCESS 的宏定义
#include "xil_printf.h" //包含 print()函数
#include "xgpiops.h" //包含 PS GPIO 的函数
#include "sleep.h" //包含 sleep()函数
// MIO 引脚的高电平对应的是 LED 灯亮,低电平对应 LED 灯灭
//宏定义 GPIO_DEVICE_ID
#define GPIO_DEVICE_ID XPAR_XGPIOPS_0_DEVICE_ID
//连接到 MIO 的 LED
#define MIOLED0 7 //连接到 MIO7
#define MIOLED1 8 //连接到 MIO8
#define MIOKEY0 12 //连接到 MIO12

#define EMIOKEY0 54 //连接到PL_KEY0

XGpioPs Gpio; // GPIO 设备的驱动程序实例

int main()
{
int Status;
XGpioPs_Config *ConfigPtr;

print(" LJL EMIO Test! \n\r");
ConfigPtr = XGpioPs_LookupConfig(GPIO_DEVICE_ID);
Status = XGpioPs_CfgInitialize(&Gpio, ConfigPtr,
ConfigPtr->BaseAddr);
if (Status != XST_SUCCESS){
return XST_FAILURE;
}
//设置指定引脚的方向:0 输入,1 输出
XGpioPs_SetDirectionPin(&Gpio, MIOLED0, 1);
XGpioPs_SetDirectionPin(&Gpio, MIOLED1, 1);

XGpioPs_SetDirectionPin(&Gpio, MIOKEY0, 0);//输入
XGpioPs_SetDirectionPin(&Gpio, EMIOKEY0, 0);
//使能指定引脚输出:0 禁止输出使能,1 使能输出
XGpioPs_SetOutputEnablePin(&Gpio, MIOLED0, 1);
XGpioPs_SetOutputEnablePin(&Gpio, MIOLED1, 1);

while (1) {
XGpioPs_WritePin(&Gpio, MIOLED0, XGpioPs_ReadPin(&Gpio, MIOKEY0)); //向指定引脚写入数据:0 或 1
XGpioPs_WritePin(&Gpio, MIOLED1, XGpioPs_ReadPin(&Gpio, EMIOKEY0));

}
return XST_SUCCESS;
}

下载验证

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

完成比完美重要!!!
学习记录,侵权联系删除
来源:正点原子

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

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

相关文章

堆的向上和向下调整

堆的物理结构和逻辑结构是什么? 堆如何插入数据和删除数据?为什么? 向上调整和向下调整的要求是啥? 文中不理解的可以先看堆的代码和基础知识-CSDN博客 也欢迎评论区一起讨论 1.堆的物理结构和逻辑结构 我们的堆是用数组实…

计算机毕业设计 视频点播系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

【AI知识点】维度灾难(curse of dimensionality)

维度灾难(curse of dimensionality) 是指在处理高维数据时,随着维度的增加,数据的性质和空间结构变得越来越复杂,导致许多常见的算法和技术在高维空间中效率低下或效果变差的问题。 这个概念最早是由Richard Bellman在…

RabbitMQ篇(基本介绍)

目录 一、MQ 1. 什么是MQ 2. 为什么要用MQ【业务场景】 2.1. 异步 2.2. 应用解耦 2.3. 流量削峰 3. MQ的分类 (1)ActiveMQ (2)Kafka (3)RocketMQ (4)RabbitMQ 4. MQ 的选…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-02

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-02 1. APM: Large Language Model Agent-based Asset Pricing Models Authors: Junyan Cheng, Peter Chin https://arxiv.org/abs/2409.17266 APM: 基于大型语言模型的代理资产定价模型(LLM Agent-b…

2、项目配置设计(上)

文章目录 前言一、配置文件功能需求二、web工程设计思路三、Config实现思路 前言 配置文件作用:把需要经常修改的参数,从代码中分离出来,单独管理,方便后期维护。 开发一个web应用,肯定需要一些基础性的配置信息,这些信…

骨架屏 (懒加载优化)

骨架屏 (懒加载优化) 即便通过 Webpack 的按需加载、CDN 静态资源缓存 和 代码分割 等技术来减少首屏的代码体积,首屏加载时的白屏时间(也称为首屏等待时间)仍然可能存在,尤其在网络条件较差或页面内容复杂…

【设计模式-解释模式】

定义 解释器模式是一种行为设计模式,用于定义一种语言的文法,并提供一个解释器来处理该语言的句子。它通过为每个语法规则定义一个类,使得可以将复杂的表达式逐步解析和求值。这种模式适用于需要解析和执行语法规则的场景。 UML图 组成角色…

基于Springboot vue应急物资供应管理系统设计与实现

博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php python(flask Django) 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找…

【硬件模块】HC-SR04超声波模块

HC-SR04超声波模块实物图 工作参数 探测距离&#xff1a;2~600cm 探测精度&#xff1a;0.1cm1% 感应角度&#xff1a;<15 输出方式&#xff1a;GPIO 工作电压&#xff1a;DC 3~5.5V 工作电流&#xff1a;5.3mA 工作温度&#xff1a;-40~85℃ 引脚接线 HC-SR04MCU备注VC…

Golang | Leetcode Golang题解之第454题四数相加II

题目&#xff1a; 题解&#xff1a; func fourSumCount(a, b, c, d []int) (ans int) {countAB : map[int]int{}for _, v : range a {for _, w : range b {countAB[vw]}}for _, v : range c {for _, w : range d {ans countAB[-v-w]}}return }

04-SpringBootWeb案例(下)

3. 员工管理 完成了部门管理的功能开发之后&#xff0c;我们进入到下一环节员工管理功能的开发。 基于以上原型&#xff0c;我们可以把员工管理功能分为&#xff1a; 分页查询&#xff08;今天完成&#xff09;带条件的分页查询&#xff08;今天完成&#xff09;删除员工&am…

Pikachu-Sql Inject-数字型注入(GET)

一、、破解 SQL 查询语句中的字段数 ?id1 order by 3 -- // -- 是注释&#xff0c; 加号 在MySQL中会转成空格 order by 1 &#xff0c;by 数字几&#xff0c;就是按照第几列进行排序&#xff1b;如果没有这一行&#xff0c;则报错 如&#xff1a;以下语句&#xff0c;根据…

QT学习笔记1(QT和QT creator介绍)

QT学习笔记1&#xff08;QT和QT creator介绍&#xff09; Qt 是一个跨平台的应用开发框架&#xff0c;主要用于图形用户界面&#xff08;GUI&#xff09;应用的开发&#xff0c;但也支持非GUI程序的开发。Qt 支持多种平台&#xff0c;如Windows、macOS、Linux、iOS和Android&a…

Servlet的生命周期及用户提交表单页面的实现(实验报告)

一、实验目的、要求 1. 掌握Servlet的定义&#xff0c;即Servlet是运行在服务器端的Java程序&#xff0c;用于扩展服务器的功能。 2. 学习和掌握在开发环境中搭建Servlet应用所需的工具&#xff0c;如Tomcat服务器、IDEA等。 二、实验内容 根据本章所学知识&#xff0c;实验…

linux第一课:下载与安装

这是我的个人复习笔记&#xff0c;草稿箱字太多会卡就发这了&#xff0c;欢迎大家阅读。 Kali Linux&#xff0c;黑客必备神器。跟着我&#xff0c;带你从入门到入狱&#xff01; 第一课&#xff0c;下载与安装。 第一步&#xff1a; 在官网下载Centos镜像&#xff1a;http…

(2025)408考研:王道操作系统文件管理强化

写在最前面,需要pdf的请资源里下载,已经排版好了,这里不知道为什么粘贴上来排版这么难看!!! 某一个分区进行格式化的时候,这个分区的文件系统就被建立了,一旦这个文件系统建立完后,就确定了文件系统使用的什么样的物理结构。 操作系统引导: 主存分为两部分,RAM和RO…

人体目标检测数据集 18000张 人体 带标注voc yolo

人体目标检测数据集 18000张 人体 带标注voc yolo 继续 人体目标检测数据集介绍 数据集名称 人体目标检测数据集 (Human Detection Dataset) 数据集概述 该数据集专为训练和评估基于YOLO系列目标检测模型&#xff08;包括YOLOv5、YOLOv6、YOLOv7等&#xff09;而设计&#…

vue-cli老项目继续优化:json压缩神器 compress-json

前言 上文讲到一个 vue-cli 带脚本生成内容的老项目的打包时间已经从 40min &#xff0c;优化到 12min &#xff0c;再到 9min 。 还有可以考虑的方式包含缩小脚本体积、依赖分包、构建的缓存等等。 那么本文就来讨论缩小脚本体积的方式。 分析 前文已知&#xff0c;生成的…

螺狮壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习06(Docker网络连接)

如果要搭建基于docker的私人DC&#xff0c;除了虚拟机网络连接外&#xff0c;就得掌握docker的网络连接。磨刀不误砍柴工&#xff0c;或者说工欲善其事必先利其器&#xff0c;我们先学学典型的docker的网络连接方式。Docker的网络连接有四种&#xff1a;bridge、none、containe…