GPIO

General Purpose I/O ,网上能找到很多关于znyq gpio 的文章。

分类:EMIO 、MIO 、AXI_GPIO

硬件系统

MIO和EMIO是在zynq核中配置的,MIO是固定的,EMIO是可选的使用PL的引脚。

AXI_GPIO是在PL端使用的GPIO,挂在znyq核的M_AXI_GP接口下使用。

需要zynq核,AXI_GPIO的使用PL端的模块,如AXI_GPIO

软件部分

SDK的库封装是多层次的,

可以使用高层次的

  • xgpio.h  使用AXI_GPIO需要
  • xgpiops.h   使用MIO和EMIO需要

或者是底层的

  • xgpio_l.h
  • xil_io.h

在高层次中模块被封装成结构体实例,使用时调用实例,初始化读写。

而低层次中就是直接对地址进行读写,如下:

//write
XGpio_WriteReg(BaseAddress, RegOffset, Data)
XGpio_Out32((BaseAddress) + (RegOffset), (u32)(Data))
//read
XGpio_ReadReg(BaseAddress, RegOffset)
XGpio_In32((BaseAddress) + (RegOffset))

或更底层的。

我更喜欢高级的读写方式,因为更多信息都在函数中表现出来了,下面是读写方式。

流程都是相似的:

  1. 定义Gpio或GpioPs结构体。
  2. 初始化配置。
  3. 设置读写方向、使能。
  4. 读写。GpioPs有Pin和Bank两种方式。

code:

//GPIO

#define GPIO0_ADDR     XPAR_AXI_GPIO_0_BASEADDR
#define GPIO0_ID XPAR_AXI_GPIO_0_DEVICE_ID int main()
{
XGpio Gpio0;
XGpioPs_Config *ConfigPtr; int Status;
u32 value = 0xa;
/* Initialize the GPIO driver */
Status = XGpio_Initialize(&Gpio0, GPIO0_ID);
if (Status != XST_SUCCESS) {
xil_printf("Gpio Initialization Failed\r\n");
return XST_FAILURE;
}
Status = XGpioPs_CfgInitialize(GpioPsPtr,ConfigPtr,
ConfigPtr->BaseAddr);
if (Status != XST_SUCCESS)
{
xil_printf("Cfg init err\n");
return XST_FAILURE;
} /* Set the direction */
XGpio_SetDataDirection(&Gpio0, CHANNEL, 0x00000000);//output // XGpio_Out32((GPIO1_ADDR) + (0), (u32)(value));
// XGpio_WriteReg(GPIO_ADDR, 0, value);
XGpio_DiscreteWrite(&Gpio0, CHANNEL, value); return ;
} //GPIOPS
#define GpioPsDeviceId XPAR_PS7_GPIO_0_DEVICE_ID
#define pin 0
int main()
{
XGpioPs GpioPs;
XGpioPs_Config *ConfigPtr; int Status;
int value = ;
/* Initialize the Gpio driver. */
ConfigPtr = XGpioPs_LookupConfig(GpioPsDeviceId);
if (ConfigPtr == NULL) {
xil_printf("ERROR\n");
return XST_FAILURE;
}
Status = XGpioPs_CfgInitialize(GpioPsPtr,ConfigPtr,
ConfigPtr->BaseAddr);
if (Status != XST_SUCCESS) {
xil_printf("Cfg init err\n");
return XST_FAILURE;
} //set pin direction
//value 0 -> input 1 -> output
XGpioPs_SetDirectionPin(GpioPsPtr, pin0, );
//value 0 -> disable 1 -> enable
XGpioPs_SetOutputEnablePin(GpioPsPtr, pin0, ); //write
XGpioPs_WritePin(&GpioPs, pin0, value); return ;
}

via :

ug585  CH14 General Purpose I/O

https://blog.csdn.net/husipeng86/article/details/52123465

https://blog.csdn.net/yc461515457/article/details/40954363

https://blog.csdn.net/xzyiverson/article/details/19934837

https://blog.csdn.net/luoqindong/article/details/43017773?utm_source=blogxgwz0

ZYNQ. GPIO的更多相关文章

  1. Zynq GPIO 中断

    /* * Copyright (c) 2009-2012 Xilinx, Inc. All rights reserved. * * Xilinx, Inc. * XILINX IS PROVIDIN ...

  2. Linux Zynq GPIO中断

    注册中断:对每个pin进行循环遍历for (pin_num = 0; pin_num < min_t(int, ZYNQ_GPIO_NR_GPIOS,  (int)chip->ngpio) ...

  3. 第十章 MIZ702 ZYNQ制作UBOOT固化程序

    10.0难度系数★☆☆☆☆☆☆ 10.1是什么是固化 我们前几章将的程序都是通过JTAG先下载bit流文件,再下载elf文件,之后点击Run As来运行的程序.JTAG的方法是通过TCL脚本来初始化P ...

  4. S02_CH14_ EMIO_OLED 实验

    S02_CH14_ EMIO_OLED 实验 本章将使用EMIO模拟OLED的时序来驱动OLED,本方案对米联系列Miz702,Miz702N和Miz701N全兼容. 14.1板载OLED硬件原理 M ...

  5. Zynq 7020笔记之 GPIO MIO 和EMIO的学习

    1 参考 Xilinx ZYNQ 7000+Vivado2015.2系列(四)之GPIO的三种方式:MIO.EMIO.AXI_GPIO 2 理论指示 在PS侧,有PS自己的IO pin,称为MIO,共 ...

  6. 【转】ZYNQ中三种实现GPIO的方式

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/husipeng86/article/det ...

  7. ZYNQ笔记(3):GPIO的使用(MIO、EMIO)——led灯

    一.GPIO原理 1.GPIO介绍 程序员通过软件代码可以独立和动态地对每个 GPIO 进行控制,使其作为输入.输出或中断. (1)通过一个加载指令,软件可以读取一个 GPIO 组内所有 GPIO 的 ...

  8. ZYNQ入门实例——三种GPIO应用、中断系统及软硬件交叉触发调试

    一.前言 Xlinx的ZYNQ系列SOC集成了APU.各种专用外设资源和传统的FPGA逻辑,为ARM+FPGA的应用提供助力,降低功耗和硬件设计难度的同时极大提高两者间传输的带宽.之前在研究生课题中使 ...

  9. ZYNQ 中PS端GPIO EMIO使用

    ZYNQ 中PS端GPIO EMIO使用 在使用ZYNQ进行开发设计时,往往需要对一些GPIO引脚进行配置,传统的配置方法通常在PL端进行管脚约束之后在Verilog代码中对相应引脚进行配置.这样如果 ...

随机推荐

  1. 【Alpha】第四次Scrum meeting

    今天任务一览: 姓名 今日完成任务 所耗时间 刘乾 配置好了所有物理实验的通配模板,为服务器配置了latex中文环境,设置了一些常用字体. Issue链接:https://github.com/bua ...

  2. yum 安装mongodb mysql

    // 云环境下更新包 (center os)yum update (多更有益) 修改yum包管理配置:vi /etc/yum.repos.d/mongodb-org-3.4.repo // 会自动新建 ...

  3. JS基础(二)数据类型

    一.标量类型 1.字符串string类型:字符串需要用定界符包裹.定界符:单引号(‘’),双引号(“”). 2.数字类型:1)整型:所有整数 2)浮点型:所有浮点数 3.boolean类型:返回tru ...

  4. 课程回顾5in1

    提出过的问题 问题1:敏捷开发在现阶段急于使用或试行,会不会得到相反的结果? 整个开发流程在施行了一整个学期,有积极的影响,也有消极的影响.例如通过这个流程的实施,规划短期的项目进度,使得成员能逐步了 ...

  5. react & monaco editor & vs code

    react & monaco editor & vs code monaco-editor https://microsoft.github.io/monaco-editor/inde ...

  6. Spring之使用表达式配置切入点

    使用表达式配置切入点

  7. 安装spring-tool-suite插件

    spring-tool-suite是一个非常好用的spring插件,由于eclipse是一个很简洁的IDE,因此许多插件,需要我们自己去手动下载.而Spring-tool-suite插件即是其中之一. ...

  8. 【刷题】BZOJ 4391 [Usaco2015 dec]High Card Low Card

    Description Bessie the cow is a huge fan of card games, which is quite surprising, given her lack of ...

  9. The Applications of RT-Thread RTOS

    The Applications of RT-Thread RTOS Introduction The user application is the application layer of RT- ...

  10. 【CH4201】楼兰图腾

    题目大意:给定一个长度为 N 的序列,从序列中任意挑出三个数,求满足中间的数字值最小(最大)有多少种情况. 题解:建立在值域上的树状数组,从左到右扫描一遍序列,统计出每个点左边有多少个数大于(小于)该 ...