首页 » FPGA » 正文

zynq AXI GPIO使用

通用

如果需要GPIO中断,需要打开arm core中的pl-ps中断.如下图

API详情

xgpio函数

int XGpio_Initialize(XGpio * InstancePtr, u16 DeviceId)

名称 代码 解释
函数名 XGpio_Initialize 初始化GPIO
参数1 XGpio * InstancePtr 指向GPIO实例的指针
参数2 u16 DeviceId ID号,自动生成,在xparameters.h文件中定义
返回值 int 成功与否

void XGpio_SetDataDirection(XGpio *InstancePtr, unsigned Channel,u32 DirectionMask)

名称 代码 解释
函数名 XGpio_SetDataDirection 设置GPIO为输入/输出
参数1 XGpio * InstancePtr 指向GPIO实例的指针
参数2 unsigned Channel 待设置GPIO的通道(Vivado中设置gpio IP时的设置通道,为1或2)
参数3 u32 DirectionMask 方向设置。0:output;1:input

u32 XGpio_DiscreteRead(XGpio * InstancePtr, unsigned Channel)

名称 代码 解释
函数名 XGpio_DiscreteRead 读取GPIO的值
参数1 XGpio * InstancePtr 指向GPIO实例的指针
参数2 unsigned Channel 通道号,同上一函数
返回值 u32 最多32位的实际值

void XGpio_DiscreteWrite(XGpio * InstancePtr, unsigned Channel, u32 Data)

名称 代码 解释
函数名 XGpio_DiscreteWrite 写GPIO
参数1 XGpio * InstancePtr 指向GPIO实例的指针
参数2 unsigned Channel 通道号,同上一函数
参数3 u32 Data 需要写的值

简单操作

xparameters.h中相关宏定义

简单读写

linux下操作方式

可以看到有 三个GPIO控制器. 其中gpiochip1019的基址为41210000,根据基址可以找到对应的硬件GPIO是哪个.. 其中1019表示了该GPIO的端口号, 如果该控制器上存在多个IO,则1020表示该控制器第二个IO,1021表示第三个…..
简单写GPIO的方式如下:

发表评论