初学Xilinx ZYNQ SDK的开发,下面记录使用到的API函数及自己的理解。若有误,还请指教。
xgpiops函数
常用编程步骤:
1.查找输入设备的ID查找设备;
2.初始化GPIO(最新版本暂不需要);
3.输入的配置信息初始化GPIO;
4.设置指定引脚的方向: 0 输入, 1 输出;
5.使能指定引脚输出: 0 禁止输出使能, 1 使能输出
配置GPIO只需要以上5个步骤。(其中2步骤在最新版本中不需要配置)
参考#include "xgpiops.h"文件夹
1、XGpioPs_Config *XGpioPs_LookupConfig(u16 DeviceId)
2、int XGpio_Initialize(XGpio * InstancePtr, u16 DeviceId)
名称 | 代码 | 解释 |
---|---|---|
函数名 | XGpio_Initialize | 初始化GPIO |
参数1 | XGpio * InstancePtr | 指向设备实例的指针 |
参数2 | u16 DeviceId | ID号,自动生成,在xparameters.h文件中定义 |
返回值 | int | 成功返回XST_SUCCESS,失败返回XST_DEVICE_NOT_FOUND |
应用举例:
///
XGpio GPIO;
XGpio_Initialize(&GPIO,XPAR_LED_DEVICE_ID) ;
///
3、int XGpio_CfgInitialize(XGpio * InstancePtr, XGpio_Config * Config,u32 EffectiveAddr)
名称 | 代码 | 解释 | |
---|---|---|---|
函数名 | XGpio_Initialize | 根据输入的配置信息初始化XGpio实例 | |
参数1 | XGpio * InstancePtr | 指向设备实例的指针 | |
参数2 | XGpio_Config * Config | 详细的配置信息 | |
参数3 | u32 EffectiveAddr | 虚拟地址空间中的设备基地址 | |
返回值 | int | 成功返回XST_SUCCESS | |
4、void XGpioPs_SetDirectionPin(XGpioPs *InstancePtr, u32 Pin, u32 Direction);
void XGpio_SetDataDirection(XGpio * InstancePtr, unsigned Channel,u32 DirectionMask) (旧版本)
名称 | 代码 | 解释 |
---|---|---|
函数名 | XGpioPs_SetDirectionPin | 设置GPIO为输入/输出 |
参数1 | XGpio * InstancePtr | 指向GPIO实例的指针 |
参数2 | u32 Pin unsigned Channel | GPIO PIN引脚 待设置GPIO的通道(Vivado中设置gpio IP时的设置通道,为1或2) |
参数3 | u32 Direction u32 DirectionMask | 方向设置。0:output;1:input |
返回值 | void |
应用举例:
///
XGpio LedGpio;
XGpio_SetDataDirection(&LedGpio,1,0x00000000) ;
///
说明:关于参数Channel,在gpio的IP设置时有如下配置:
配置为上半部分的GPIO,则Channel为1;若设置下半部分配置的GPIO 2,则Channel为2;
5、void XGpioPs_SetOutputEnablePin(XGpioPs *InstancePtr, u32 Pin, u32 OpEnable);
6、u32 XGpioPs_ReadPin(XGpioPs *InstancePtr, u32 Pin);
名称 | 代码 | 解释 |
---|---|---|
函数名 | XGpioPs_ReadPin | 读取GPIO的值 |
参数1 | XGpioPs *InstancePtr | 指向GPIO实例的指针 |
参数2 | u32 Pin | GPIO PIN引脚 |
返回值 | u32 | 0:低电平;1:高电平 |
7、void XGpioPs_WritePin(XGpioPs *InstancePtr, u32 Pin, u32 Data);
名称 | 代码 | 解释 |
---|---|---|
函数名 | XGpioPs_WritePin | 写GPIO的数值 |
参数2 | XGpioPs *InstancePtr | 指向GPIO实例的指针 |
参数3 | u32 Data | 0:低电平;1:高电平 |
返回值 | void |
以上是操作PIN API函数与其他GPIO相关的函数(BANK API)使用xgpiops函数大同小异,参考参数含义即可理解。