您的位置 首页 产品

被zynq的GPIO唬住,告知你zynq的3种GPIO

被zynq的GPIO唬住,告诉你zynq的3种GPIO-我们先看有哪三种GPIO:MIO、EMIO、AXI_GPIO。其中MIO和EMIO是直接挂在PS上的GPIO。而AXI_GPIO是通过AXI总线挂在PS上的GPIO上。

学了zynq一段时间,一上来的时分就被zynq的GPIO唬住了,真实没搞清楚zynq的GPIO怎么回事,一会这样,一会那样,最终才渐渐发现zynq至少有3种GPIO能够调用。难怪我觉得每篇介绍GPIO的博客说的有一些不一样呢。

被zynq的GPIO唬住,告知你zynq的3种GPIO

咱们先看有哪三种GPIO:MIO、EMIO、AXI_GPIO。其间MIO和EMIO是直接挂在PS上的GPIO。而AXI_GPIO是经过AXI总线挂在PS上的GPIO上。

咱们先看一下MIO和EMIO:下图EMIO和MIO的结构。其间MIO散布在BANK0,BANK1,而EMIO则散布在BANK2、BANK3。留意一下几项:

首要、MIO在zynq上的管脚是固定的,而EMIO,是经过PL部分扩展的,所以运用EMIO时分需求在束缚文件中分配管脚,所以规划EMIO的程序时,

需求生成PL部分的bit文件,烧写到FPGA中。

其次、由下图能够看出MIO共占54bit,而EMIO占64bit。其间MIO占用IO号为0-53。而EMIO占用IO号为54-117。

再者、无论是EMIO仍是MIO都归于PS上的IO,直接由PS操作。在调用头文件,只调用#include “xgpiops.h”即可,而在调用AXI_GPIO时,则需求#include “xgpio.h”。

最终、在规划好bd文件后、体系会主动在途径:。.\standalone_bsp_0\ps7_cortexa9_0\include生成 xparameters.h 文件。咱们能够在

xparameters.h文件中检查咱们在bd规划时增加的外设ID。例如咱们增加了EMIO,能够查到到该IO的地址和ID号。

#define XPAR_PS7_GPIO_0_DEVICE_ID 0

#define XPAR_PS7_GPIO_0_BASEADDR 0xE000A000

#define XPAR_PS7_GPIO_0_HIGHADDR 0xE000AFFF

再举例增加了两个AXI_GPIO,例化为BTNS_4BIT和SW_4BIT

/* DefiniTIons for driver GPIO */

#define XPAR_XGPIO_NUM_INSTANCES 2

/* DefiniTIons for peripheral BTNS_4BIT */

#define XPAR_BTNS_4BIT_BASEADDR 0x41210000

#define XPAR_BTNS_4BIT_HIGHADDR 0x4121FFFF

#define XPAR_BTNS_4BIT_DEVICE_ID 0

#define XPAR_BTNS_4BIT_INTERRUPT_PRESENT 0

#define XPAR_BTNS_4BIT_IS_DUAL 0

/* DefiniTIons for peripheral SW_4BIT */

#define XPAR_SW_4BIT_BASEADDR 0x41200000

#define XPAR_SW_4BIT_HIGHADDR 0x4120FFFF

#define XPAR_SW_4BIT_DEVICE_ID 1

#define XPAR_SW_4BIT_INTERRUPT_PRESENT 0

#define XPAR_SW_4BIT_IS_DUAL 0

被zynq的GPIO唬住,告知你zynq的3种GPIO

被zynq的GPIO唬住,告知你zynq的3种GPIO

再来看一下,AXI_GPIO相当于GPIO的IP核,咱们调用时是占用相应AXI总线地址空间,如下图,占用地址为0x41200000和0x41210000

被zynq的GPIO唬住,告知你zynq的3种GPIO

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/chanpin/336542.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部