Vivado的GPIO简单使用

  1. SD卡设置是为了以后固化,没有SD卡固化不进板卡
  2. UART是为了后面调试和打印
  3. Constraints配置管脚,在vivao中创建xdc约束文件;ise中叫ucf文件

GPIO的使用

第一部分:Vivado硬件部分创建(xc7z020cig400-1)

  1. 创建vivado工程,创建完成点击Create Block Desion,点+,选择zynq

——第二步:设置zynq参数

  1. DDR Configeuration配置 :Memory存储 Part—>custom定制Row address count(bits)-->14

Cas write latency延迟-->6; tRC -->49;tRASmin-->36

——第三步:设置引脚

  1. 点击run得到引脚。当未出现引脚时:右键,make Extemal极值.改名字在左边的工具栏里可以更改。

——第四步:设置顶层

  1. 切换到sources来源里,右键第一个文件,creat HDL Wrapper封装-->let vivado manage wrapper and auto-updatae自动更新(生成一个顶层文件)

——第五步:设置约束文件

  1. constraint约束-->constrs_1创建生成一个xdc(约束文件),右键,add sources。Add or creat constraints建立工程,打开并进行编辑。电平标准模板(1、物理引脚,板子接口与程序接口对应;2、引出bank的电平标准,LVCOMS33和程序接口。bank34的电压对应原理图叫vcco34,由此可以看到该bank的电压值,LVCONMS33
  2.  Language Templates模板-->XDC-->physical constraints-->placement布置-->specific明确的location位置-->io pin assignment任务
  3. Language Templates-->XDC-->io constrations-->iostandard

——第六步:

  1. 生成bit文件

第二部分:vivado软件部分

  1. file-->export出口-->Export Harware硬件,对话空点击 include bitstream,点击ok。
  2. File-->Launch SDK,点击ok,进行对SDK开发。
  3. 新建一个工程
  4. 注console里会有打印信息。更改文字大小window-->preference-->general-->editors-->Text editors,蓝色字体colors and fonts字体,C/C++ -->C/C++ editor text font,点击edit可以设置字体大小。回到Text editors点击show line numbers。
  5. 写程序
  6. 链接板卡上电,project Explorer探测器-->ex_gpio右键,Debug As -->Debug Configurations...。选择xilinx c/c++ application申请 (system Debugger调试器),勾选Program FPGA,apply,debug,yes.

注:

SDK中选择xiicps.h右键选择open declaration可以看到里面的全部函数

/**

 * The XGpioPs driver instance data. The user is required to allocate a

 * variable of this type for the GPIO device in the system. A pointer

 * to a variable of this type is then passed to the driver API functions.

 */

typedef struct {

XGpioPs_Config GpioConfig; /**< Device configuration */设备配置

u32 IsReady; /**< Device is initialized and ready */

XGpioPs_Handler Handler; /**< Status handlers for all banks */处理者

void *CallBackRef; /**< Callback ref for bank handlers */回收,参考

u32 Platform; /**< Platform data */

u32 MaxPinNum; /**< Max pins in the GPIO device */

u8 MaxBanks; /**< Max banks in a GPIO device */

} XGpioPs;

/**

 * This typedef contains configuration information for a device.

 */

typedef struct {

u16 DeviceId; /**< Unique ID of device */

u32 BaseAddr; /**< Register base address */

} XGpioPs_Config;

简单gpio程序过程:

(1)头文件

#include <stdio.h>

#include "platform.h"

#include "xil_printf.h"

#include "xgpiops.h"  

#include "xparameters.h"  找到gpio的id ,点击按ctrl+f输入gpio可以找到id

(2)宏定义

#define GPIO_DEV_ID XPAR_PS7_GPIO_0_DEVICE_ID

#define LED0 54

#define LED1 55

#define SW0 56

(3)静态全局变量

static XGpioPs GpioPs;

static XGpioPs_Config * GpioCnfPtr;

(4)声明函数体

int initIicPs(XIicPs *iicps , XIicPs_Config * iiccfg);

(5)主函数

int main()

{

函数体

}

(6)函数,配置gpio

GpioCnfPtr = XGpioPs_LookupConfig 找到对应gpio的id

status = XGpioPs_CfgInitialize  开发板gpio与程序相关联

XGpioPs_SetDirectionPin  设置引脚

XGpioPs_SetOutputEnablePin  设置引脚的使能

XGpioPs_CfgInitialize函数介绍

s32 XGpioPs_CfgInitialize(XGpioPs *InstancePtr, XGpioPs_Config *ConfigPtr,

u32 EffectiveAddr)

这个函数初始化一个XGpioPs实例/驱动程序。 初始化XGpioPs实例结构的所有成员,并将StubHandlers分配给银行状态处理程序。  

InstancePtr是一个指向XGpioPs实例的指针  

ConfigPtr指向XGpioPs设备配置结构  

EffectiveAddr是虚拟内存地址空间中的设备基地址。 如果没有使用地址转换,则应该传递物理地址。 如果在调用该函数后,地址映射发生了变化,可能会出现不可预知的错误  

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值