Zynq-7000 ARM端MIO的使用

日期:2018-08-24 作者:OpenS_Lee
1 背景知识
     Xilinx Zynq-7000 芯片的PS端MIO(multiuse I/O)所在位置如下图红色框所示。MIO(0:15)在bank0上,MIO(16:53)在bank1上。他们不需要管脚约束,既可以当做PS 端普通的IO也可以用做PS端SPI、I2C、CAN等总线。



本节将使用MIO的GPIO功能实现LED流水灯。


2 MIO流水灯实验

对于工程的创建在此不再赘述。可参考《Zynq-7000 ARM端helloworld实验》


1) ZYNQ7 Processing System GPIO的设置
点击MIO Configuration>>选中GPIO MIO如下图所示。其他配置根据自己的开发板设置。




2) 生成processing_system7_0
  



3) launch SDK
(1)首先选中system右键选中Generate Output Products...
(2)选中system右键选中Create HDL Wrapper...
(3)导出硬件   选择菜单File->Export->Export Hardware...。这里不包括bitstream

(4)Launch SDK  选择菜单File->Launch SDK,启动SDK环境。


4)SDK编程
(1) 新建APP
点击FILE>>Application Project>>Project name>>Next




选着空工程Empty Application>>Finish




(2)编写代码main.c
#include "xgpiops.h"
#include "sleep.h"
int main()
{
static XGpioPs psGpioInstancePtr;
XGpioPs_Config* GpioConfigPtr;
int Led0 = 0;  //MIO0_led
int Led1 = 13; //MIO13_LED
u32 uPinDirection = 0x1; //1表示输出,0表示输入
int xStatus;


//--MIO的初始化
    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");
//--MIO的输入输出操作
     XGpioPs_SetDirectionPin(&psGpioInstancePtr, Led0,uPinDirection);//配置MIO输出方向
XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, Led0,1);//配置MIO的第0位输出
     XGpioPs_SetDirectionPin(&psGpioInstancePtr, Led1,uPinDirection);//配置MIO输出方向
XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, Led1,1);//配置MIO的第13位输出
while(1)
{
XGpioPs_WritePin(&psGpioInstancePtr, Led0, 0);//MIO的第0位输出0
XGpioPs_WritePin(&psGpioInstancePtr, Led1, 1);//MIO的第13位输出1
sleep(1); //延时
XGpioPs_WritePin(&psGpioInstancePtr, Led0, 1);//MIO的第0位输出1
XGpioPs_WritePin(&psGpioInstancePtr, Led1, 0);//MIO的第13位输出0
sleep(1); //延时
}


    return 0;
}


这里的0和13是电路图上PS端LED灯的所在位置如下图


(3)下载实现

连接好硬件和打开串口工具后,右键选择MIO_test工程,再选择Run as->1. Launch on Hardware (sysntem Debugger)




总结:
  本节通过ARM的MIO(GPIO)来点亮LED灯实现流水灯,通过使用函数库编程,熟悉了SDK开发的工程。
关于OpenHW  |  OpenHW使用说明  |  FAQ  |  相关法律  |  版权声明
联系邮件: openhw@eefocus.com   联系电话: 0512-80981663-8062     Fax:0512-80981279
Powered by eefocus.com