zynq的emio和axi_Xilinx ZYNQ开发GPIO的三种方式:MIO、EMIO、AXI_GPIO

本文介绍了在Xilinx ZYNQ平台上使用MIO、EMIO和AXI_GPIO接口进行GPIO开发的方法。通过管脚约束文件配置EMIO引脚,并在SDK中实现GPIO的初始化、输入输出操作,以控制LED灯交替闪烁。同时提到了通过M_AXI_GPIO接口进行CPU核配置的方式。
摘要由CSDN通过智能技术生成

在Diagram里面将GPIO_0的引脚引出来,生成顶层文件后查看这个引脚的名字,因为我修改了名字,这里叫emio_0_tri_io

管脚约束文件:

#GPIO PMOD1

set_property PACKAGE_PIN E15 [get_ports {emio_0_tri_io[0]}]

set_property IOSTANDARD LVCMOS25 [get_ports {emio_0_tri_io[0]}]

set_property PACKAGE_PIN D15 [get_ports {emio_0_tri_io[1]}]

set_property IOSTANDARD LVCMOS25 [get_ports {emio_0_tri_io[1]}]

set_property PACKAGE_PIN W17 [get_ports {emio_0_tri_io[2]}]

set_property IOSTANDARD LVCMOS25 [get_ports {emio_0_tri_io[2]}]

set_property PACKAGE_PIN W5 [get_ports {emio_0_tri_io[3]}]

set_property IOSTANDARD LVCMOS25 [get_ports {emio_0_tri_io[3]}]

SDK部分:MIO号是0~53,EMIO从54开始

#include "xgpiops.h"

#include "sleep.h"

int main()

{

static XGpioPs psGpioInstancePtr;

XGpioPs_Config* GpioConfigPtr;

int xStatus;

//-- EMIO的初始化

GpioConfigPtr = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID);

if(GpioConfigPtr == NULL)

return XST_FAILURE;

xStatus = XGpioPs_CfgInitialize(&psGpioInstancePtr,GpioConfigPtr,

GpioConfigPtr->BaseAddr);

if(XST_SUCCESS != xStatus)

print(" PS GPIO INIT FAILED /n/r");

//--EMIO的输入输出操作

XGpioPs_SetDirectionPin(&psGpioInstancePtr, 54,1);

XGpioPs_SetDirectionPin(&psGpioInstancePtr, 55,1);

XGpioPs_SetDirectionPin(&psGpioInstancePtr, 56,1);

XGpioPs_SetDirectionPin(&psGpioInstancePtr, 57,1);

//使能EMIO输出

XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 54,1);

XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 55,1);

XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 56,1);

XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 57,1);

while(1)

{

XGpioPs_WritePin(&psGpioInstancePtr, 54, 1);//EMIO的第0位输出1

usleep(200000); //延时

XGpioPs_WritePin(&psGpioInstancePtr, 54, 0);//EMIO的第0位输出0

usleep(200000); //延时

XGpioPs_WritePin(&psGpioInstancePtr, 55, 1);//EMIO的第1位输出1

usleep(200000); //延时

XGpioPs_WritePin(&psGpioInstancePtr, 55, 0);//EMIO的第1位输出0

usleep(200000); //延时

XGpioPs_WritePin(&psGpioInstancePtr, 56, 1);//EMIO的第2位输出1

usleep(200000); //延时

XGpioPs_WritePin(&psGpioInstancePtr, 56, 0);//EMIO的第2位输出0

usleep(200000); //延时

XGpioPs_WritePin(&psGpioInstancePtr, 57, 1);//EMIO的第3位输出1

usleep(200000); //延时

XGpioPs_WritePin(&psGpioInstancePtr, 57, 0);//EMIO的第3位输出0

usleep(200000); //延时

}

return 0;

}

下载到板子里,PMOD1的4个led灯交替闪烁。

3.AXI_GPIO方式

VIvado工程里,ZYNQ CPU核配置:

勾选M_AXI_GPIO 接口:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值