首页 > 其他分享 >Xilinx ZYNQ 7000+Vivado2015.2系列(十)MIO/EMIO再识,MIO的引脚“复用”,EMIO当作PS的接口连接PL

Xilinx ZYNQ 7000+Vivado2015.2系列(十)MIO/EMIO再识,MIO的引脚“复用”,EMIO当作PS的接口连接PL

时间:2024-03-27 19:22:06浏览次数:28  
标签:PS EMIO MIO 引脚 XGpioPs GPIO 连接

前面我们介绍过EMIO,但是不详细。

MIO是PS的IO接口,这个M代表的是Multiuse,也就是多用途,

在下图中我们可以看到54个MIO连接这么多东西,必须得复用,

所以当我们开发的时候需要的功能配置上,不需要的去掉,防止IO口被占用。

板子用的是zc702。

下面我们双击ZYNQ核:

我们到MIO的配置里,把其他的勾都去掉,去GPIO里看看:


这些都是使用其默认连接的,比如说MIO[6...2]这些就是配置启动模式用的:

回头我们勾选上UART1,这个是我们打印消息的时候要用到,默认用的是48,49,当然用户是可以选择用哪些可用端口的:

我们再勾选一个以太网,发现这个功能可以用MIO连接上使用,也可以用EMIO连接上使用:

我们在勾选一个USB1试试,发现USB1用到的MIO和UART1冲突了,出现了红色报错,他俩都用到了一些相同的MIO口:

当然我们可以修改UART1用到的IO避免冲突。比如说我们把它改层8,9两个口:

这时候就不冲突了。

但是一个新的问题出现了,我们到GPIO里去看看:

这时候MIO8,9不见了,这两个被配置去实现UART了,那么原先它俩的默认连接就不可以用了:

MIO[8]是连接LED灯DS12的:

MIO[9]是配置CAN总线的:

现在我们对MIO有固定连接有了一个较清晰的认识,而且一些MIO是可以被重新配置干其他事情的,

那么现在问题来了,PS想用一些PL外设,它们的数据交互比较简单,犯不着动用AXI总线,

但是这些外设又没有一个MIO接口可以配置,比方说用户按键,或者说配置了好多外设了,MIO都用完了,

这时EMIO就派上用场了,

E代表的是Extendable,意思就是扩展MIO,它的作用就是MIO,

不过不是PS上固定引脚,固定连接的,它们是PL上的引脚,连接到PS上,所以使用时PL,CPU资源都有消耗。

既然是PL上的逻辑资源,它连接到什么设备当然要进行管教脚约束了。

现在我们进行一个简单的实验,感受一下MIO,EMIO的使用——用按键SW5去控制DS12.

通过前面的分析,我们知道,DS12是连接带MIO[8]上的,SW5没有MIO连接,

我们将EMIO将它接到芯片上,这样CPU就可以跟SW5进行数据交互了。

PS的配置如下:

这里勾选UART1,主要是为了后面打印消息。

一个很简单的系统,master GP接口,PL时钟都可以去掉:

将GPIO接口引出来,sw5就要接在这个上面,最后就是这个样子:

约束:

GPIO信号名到底叫什么,可以到生成的顶层文件里查一下:

好了,一切OK。加载到SDK。

在xparameters.h文件里,看看PS部分GPIO的信息:

MIO号0~53,EMIO号从54开始,

读取SW5的电平,将这个电平传给DS12,LED随按键亮灭(按下是1,松开是0):

各个函数的信息可以按住Ctrl,然后把鼠标放上去点击进去看注释

#include <stdio.h>
#include "xgpiops.h"
#include "xparameters.h"

int main()
{
	XGpioPs_Config *GPIO_Config;//GPIO的配置信息
	XGpioPs my_Gpio;  // GPIO实例
	int Status;

	printf("hello ! MIO and EMIO !\n\r");

	GPIO_Config = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID);

	Status = XGpioPs_CfgInitialize(&my_Gpio,GPIO_Config,GPIO_Config->BaseAddr);

	XGpioPs_SetDirectionPin(&my_Gpio, 8, 1); //MIO[8]和ds12连在一起,1代表输出
	XGpioPs_SetDirectionPin(&my_Gpio, 54, 1);//EMIO[0]和sw5连在一起
	XGpioPs_SetOutputEnablePin(&my_Gpio, 8, 1);

	while(1)
	{
		Status = XGpioPs_ReadPin(&my_Gpio, 54); //按下是1,松开是0
		XGpioPs_WritePin(&my_Gpio, 8, Status);
	}
	return 0;
}

这里我们是对具体的Pin操作,所以函数用的是带Pin的。

最终,实验是成功的。成功接出一个EMIO到PS上,此时就把这个GPIO看成是PS的了。

标签:PS,EMIO,MIO,引脚,XGpioPs,GPIO,连接
From: https://www.cnblogs.com/L707/p/18100034

相关文章

  • Xilinx ZYNQ 7000+Vivado2015.2系列(四)之GPIO的三种方式:MIO、EMIO、AXI_GPIO
    前言:ZYNQ7000有三种GPIO:MIO,EMIO,AXI_GPIOMIO是固定管脚的,属于PS,使用时不消耗PL资源;EMIO通过PL扩展,使用时需要分配管脚,使用时消耗PL管脚资源;AXI_GPIO是封装好的IP核,PS通过M_AXI_GPIO接口控制PL部分实现IO,使用时消耗管脚资源和逻辑资源。使用的板子是zc702。1.MIO方式Zynq7000......
  • NCV8702MX33TCG电源管理线性稳压器芯片中文资料PDF数据手册引脚图图片价格
    产品概述:NCV8702是一款200mA低漏静止电流、低漏线性稳压器,带超低噪声特性。它的低噪音结合高电源抑制比(PSRR)使其特别适用于射频、音频或成像应用。该器件采用先进的BiCMOS工艺制造,可提供低电流耗量和卓越噪声性能的强大组合。NCV8702可稳定使用小型低值1µ电容器......
  • NCV7718CDPR2G半桥驱动器规格书PDF数据手册引脚图图片价格参数概概述
    产品概述:NCV7718是一款六角半桥驱动器,具有专为汽车和工业运动控制应用设计的保护功能。NCV7718具有独立的控制和诊断功能。该器件可在正向、反向、制动和高阻抗状态下运行。驱动器通过16位SPI接口进行控制,并且菊花链兼容规格书参数:引脚图:......
  • NCV7351D13R2G收发器芯片中文资料规格书PDF数据手册引脚图参数图片价格特性
    产品概述:NCV7351CAN收发器是控制器区域网络(CAN)协议控制器和物理总线之间的接口,可在12V和24V系统中使用。该收发器为总线提供差分发射功能,向CAN控制器提供差分接收功能。NCV7351是CAN高速收发器系列的新增产品,是NCV734xCAN独立收发器和AMIS42665、AMIS306......
  • NCV8703MX33TCG 线性稳压器芯片中文资料规格书PDF数据手册引脚图图片价格
    产品概述:NCV8703是一款低噪音、低功耗和低漏线性稳压器。该器件具有优异的噪音和PSRR规格,适用于使用射频接收器、成像传感器、音频处理器或需要外部洁净电源的任何部件的产品。NCV8703使用创新的自适应接地电流电路可确保轻负载调节下的超低接地电流。规格书参数:引脚图......
  • 程序跑飞原因总结 && 引脚配置&&中断&&while循环&&数组越界 &&硬件原因
    2023.11月开始做了新项目,技术不到家导致程序多次跑飞,现在总结如下一、引脚配置错误错误原因:同一个引脚初始化两次1.硬件原理图变更,引脚功能变动,改动时不仔细2.代码规范不好:对于引脚的宏定义封装不好,除了.h文件还在其他地方出现数字引脚错误现象:1.程序跑飞2.调试时将新增......
  • dremio AsyncStreamConf 简单说明
    AsyncStreamConf主要是关于异步以及cache配置属性的参数配置,dremio存储扩展不少都实现了此接口参考实现使用的地方整体使用 存储插件基本都会使用到,包含了一些reader,同时还有文件系统的包装处理 ceCacheFileSystemWrapper的使用 这个是dremioce包中的一个CacheF......
  • dremio 官方对于软件版ha 以及扩展部署的参考方案
    关于dremio实际大规模部署的记录,内容来自官方文档dremio组件架构参考图此图包含了dremio的ha以及扩展,包含了主备Coordinator(故障转移的)提高查询性能的Coordinator,以及进行实际查询的执行器此部署中依赖lb,共享存储(nfs类的),zk(协调选举的),分布式存储(当然也可以使用共享存储,但......
  • soda-data dremio 集成使用
    以前简单介绍过soda数据质量工具,以下是关于dremio集成的一个说明环境准备dremiodremio基于docker部署,具体可以参考https://github.com/rongfengliang/dremio_cluster_docker-composesodasoda包含了library以及core,我使用了core,不依赖cloud,基于venvpython......
  • dremio 自定义登陆以及简单sso
    一个简单的dremio集成自己外部登陆的,处理方法是通过nginx进行proxy同时开发自己的login服务,此服务调用的dremiologinapi对于自己的登陆页面调用自己开发的loginapi,然后将登陆信息写入到localstorage中,之后进行一个dremionginx访问地址的重定向因为dremio默认web登......