ZYNQ 的三种GPIO :MIO EMIO AXI_GPIO 小节

学了zynq一段时间,一上来的时候就被zynq的GPIO唬住了,实在没搞清楚zynq的GPIO怎么回事,一会这样,一会那样,最后才慢慢发现zynq至少有3种GPIO可以调用。难怪我觉得每篇介绍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号。
[cpp]  view plain  copy
  1. #define XPAR_PS7_GPIO_0_DEVICE_ID 0  
  2. #define XPAR_PS7_GPIO_0_BASEADDR 0xE000A000  
  3. #define XPAR_PS7_GPIO_0_HIGHADDR 0xE000AFFF  
再举例添加了两个AXI_GPIO,例化为BTNS_4BIT和SW_4BIT
[cpp]  view plain  copy
  1. /* Definitions for driver GPIO */  
  2. #define XPAR_XGPIO_NUM_INSTANCES 2  
  3.   
  4. /* Definitions for peripheral BTNS_4BIT */  
  5. #define XPAR_BTNS_4BIT_BASEADDR 0x41210000  
  6. #define XPAR_BTNS_4BIT_HIGHADDR 0x4121FFFF  
  7. #define XPAR_BTNS_4BIT_DEVICE_ID 0  
  8. #define XPAR_BTNS_4BIT_INTERRUPT_PRESENT 0  
  9. #define XPAR_BTNS_4BIT_IS_DUAL 0  
  10.   
  11.   
  12. /* Definitions for peripheral SW_4BIT */  
  13. #define XPAR_SW_4BIT_BASEADDR 0x41200000  
  14. #define XPAR_SW_4BIT_HIGHADDR 0x4120FFFF  
  15. #define XPAR_SW_4BIT_DEVICE_ID 1  
  16. #define XPAR_SW_4BIT_INTERRUPT_PRESENT 0  
  17. #define XPAR_SW_4BIT_IS_DUAL 0  


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



参考链接:

http://blog.chinaaet.com/songhuangong/p/43084

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值