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

ZYNQ: GPIO 之 MIO 控制 LED 实验

GPIO 之 MIO 控制 LED 实验目的

使用 GPIO 通过两个 MIO 引脚控制 PS 端两个 LED 的亮灭,实现底板上 PS_LED0、PS_LED1 两个 LED 灯同亮同灭的效果。
在这里插入图片描述

简介

ZYNQ PS 中的外设(如 USB 控制器、UART 控制器、I2C 控制器以及 GPIO 等等)可以通过 MIO(multiplexed I/O,多路复用 I/O)模块连接到 PS 端的引脚上,也可以通过 EMIO(extended multiplexed I/O interface,扩展多路 I/O 接口)连接到 PL 端的引脚。Zynq-7000 系列芯片一般有 54 个 MIO,

MIO 一览表
在这里插入图片描述
DATA_RO 是数据只读寄存器,通过该寄存器能够观察器件引脚上的值
DATA 是数据寄存器,该寄存器控制 GPIO 信号配置为输出时要输出的值
MASK_DATA_LSW 和 MASK_DATA_MSW 是数据掩码寄存器
DIRM 是方向模式寄存器,用于控制 I/O 引脚是用作输入还是输出。当 DIRM [x] == 0 时,输出驱动器被禁用,该引脚作为输入引脚使用。

在这里插入图片描述

硬件设计

创建 Vivado 工程

在“Hello World”实验的基础上进行
先打开“Hello World”实验的 Vivado 工程,打开后选择菜单栏的 File-> Project->Save As
在这里插入图片描述
在这里插入图片描述

使用 IP Integrator 创建 Processing System

在这里插入图片描述
在这里插入图片描述
点击OK ,按 Ctrl+S 快捷键保存 Diagram
在这里插入图片描述

连接到外设 LED 和 KEY 的 GPIO_MIO
在这里插入图片描述

生成顶层 HDL

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

生成 Bitstream 文件并导出到 Vitis

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

软件设计

在 Vitis 中创建应用工程

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

在这里插入图片描述

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

		case XPLAT_ZYNQ:
			Input_Pin = 14;
			Output_Pin = 10;
			break;

修改为

		case XPLAT_ZYNQ:
			Input_Pin = 14;
			Output_Pin = 0;
			break;

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

#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
XGpioPs Gpio; // GPIO 设备的驱动程序实例

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

print("MIO 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);
//使能指定引脚输出:0 禁止输出使能,1 使能输出
XGpioPs_SetOutputEnablePin(&Gpio, MIOLED0, 1);
XGpioPs_SetOutputEnablePin(&Gpio, MIOLED1, 1);

while (1) {
XGpioPs_WritePin(&Gpio, MIOLED0, 0x0); //向指定引脚写入数据:0 或 1
XGpioPs_WritePin(&Gpio, MIOLED1, 0x0);
sleep(1); //延时 1 秒
XGpioPs_WritePin(&Gpio, MIOLED0, 0x1);
XGpioPs_WritePin(&Gpio, MIOLED1, 0x1);
sleep(1);
}
return XST_SUCCESS;
}

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

下载验证

右键选择 gpio_mio 工程,在弹出的菜单中选择 Run as-> Launch on Hardware
在这里插入图片描述
在这里插入图片描述
完成比完美重要!!!
学习记录,侵权联系删除
来源:正点原子


http://www.kler.cn/news/328041.html

相关文章:

  • Qt(9.28)
  • 深入理解 `strtok()` 函数:字符串分割的艺术
  • go语言 常用的web框架
  • Ansible学习之ansible-pull命令
  • LLaMA: 开源大语言模型的革新者
  • react是一种语言?
  • PHP中的PEAR是什么
  • Metasploit渗透测试之服务端漏洞利用
  • 【基于spring-cloud-gateway实现自己的网关过滤器】
  • 通过 IPv6 进行远程 ADB 调试
  • 《RabbitMQ篇》基本概念介绍
  • 用于多模态MRI重建的具有空间对齐的深度展开网络|文献速递--基于多模态-半监督深度学习的病理学诊断与病灶分割
  • 基于C++和Python的进程线程CPU使用率监控工具
  • 【Linux 报错】“make: ‘xxxx‘ is up to date.” 解决办法
  • 红米k60至尊版工程固件 MTK芯片 资源预览 刷写说明 与nv损坏修复去除电阻图示
  • 第四届高性能计算与通信工程国际学术会议(HPCCE 2024)
  • 工程安全监测分析模型与智能算法模型方案
  • Shp2pb:Shapefile转Protocol Buffers的高效工具
  • 深度学习:DCGAN
  • 微信小程序——婚礼邀请函
  • 仪器数码管数字识别系统源码分享
  • 如何查看Linux系统类型
  • 当微服务中调度返回大数据量时如何处理
  • IP和功能變數名稱的基礎知識-okeyproxy
  • UE(网络)
  • 基于Node.js+Express+MySQL+VUE科研成果网站发布查看科研信息科研成果论文下载免费安装部署
  • cf 975 div2 C(结论)E (树+思维)
  • 避免学术欺诈!在ChatGPT帮助下实现严格引用并避免抄袭
  • UE4_Niagara基础实例—6、蓝图与粒子系统的通信
  • Linux下的驱动开发一