前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GPIO之MIO控制

GPIO之MIO控制

作者头像
根究FPGA
发布2020-06-30 11:16:22
1.5K0
发布2020-06-30 11:16:22
举报
文章被收录于专栏:根究FPGA

GPIO外设一般用于控制一些简单的外设,如LED、按键和蜂鸣器等,GPIO可以通过MIO连接到PS端的引脚,也可以通过EMIO连接到PL。

ZYNQ系列芯片一般有54个MIO,位于bank0(3.3V,32个MIO)和bank1(1.8V,22个MIO),这些IO与PS直接相连,不需要添加引脚约束。bank2和bank3连接到EMIO,用于扩展的MIO,即EMIO。

根据原理图(米联客7z030)可以看到MIO7连接一个LED,我们对此IO进行控制。

GPIO的状态和控制寄存器的基地址为:0xe000_a000,如SDK中所示:

GPIO的地址映射范围为:0xe000_a000~0xe000_afff,SDK软件底层操作是对于内存地址空间的操作。

工程设计:

创建vivaodo工程,创建block design,由于只使用一个MIO7上的LED进行测试,可添加一个uart窗口打印,配置DDR,由于未使用PL逻辑,可以不生成bitstream,创建好项目,不必输出bitstream,运行综合后启动SDK。

在SDK中,按住“ctrl”键时点击函数即可跳转到对应的函数定义。

在SDK中的bsp项目下的system.mss文件下有对应硬件的实例驱动程序。

在SDK中创建empty project,添加以下代码即可实现流水灯:

代码语言:javascript
复制
#include"xparameters.h"//包含器件参数信息
#include"xgpiops.h" //包含PS GPIO的函数声明
#include"xstatus.h" //包含XST_FAILUR和XST_SUCCESS
#include<xil_printf.h> //包含print()函数
#include<sleep.h> //包含sleep()函数
//宏定义GPIO_DEVICE_ID
#define GPIO_DEVICE_ID XPAR_XGPIOPS_0_DEVICE_ID
//连接到MIO的LED
#define MIOLED0 7  //connect to MIO7
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: input 1:output
 XGpioPs_SetDirectionPin(&Gpio,MIOLED0,1);
 //使能指定管脚输出 0:disable 1:enable
 XGpioPs_SetOutputEnablePin(&Gpio,MIOLED0,1);
 while(1)
 {
     XGpioPs_WritePin(&Gpio, MIOLED0, 0x0); //向指定引脚写入数据:0或1
     sleep(1); //延时1秒
     XGpioPs_WritePin(&Gpio, MIOLED0, 0x1);
     sleep(1); //延时1秒
 }
 return XST_SUCCESS;
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 根究FPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 工程设计:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档