首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

MicroBlaze GPIO API函数

MicroBlaze GPIO API函数

一、相关结构体

typedef
struct {


u16
DeviceId;     /* Unique ID  of device */


u32
BaseAddress;  /* Device base address */


int
InterruptPresent;    /* Are interrupts supported in h/w */


int
IsDual;       /* Are 2 channels supported in h/w */

} XGpio_Config;


typedef
struct {


u32
BaseAddress;  /* Device base address */


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


int
InterruptPresent;    /* Are interrupts supported in h/w */


int
IsDual;       /* Are 2 channels supported in h/w */

} XGpio;


BaseAddress:可以在XPS中Address的栏BaseAddress找到;
DeviceId:这个就比较模糊,估计是XPAR_xxxx_DEVICE_ID,其中xxxx是你在XPS的BUS Interface中设置的硬件名字,如下图中的LED_4BITS,那么它的DeviceId就是XPAR_LED_4BITS_DEVICE_ID;(不过这个还是有待研究的,如果谁懂的话,希望能指正,谢谢。)

InterruptPresent:是否具有中断功能;
IsDual:是否复用;
IsReady:初始化是否完成。



二、函数API

/*

* Initialization functions in xgpio_sinit.c

*/

int XGpio_Initialize(XGpio *InstancePtr, u16 DeviceId);

XGpio_Config *XGpio_LookupConfig(u16 DeviceId);

这两个API的源函数是在xgpio_sinit.c。

  函数名
  
  XGpio_Initialize
  
  输入
  
  1、
XGpio *InstancePtr:需要进行初始化的GPIO结构体;

  2、
u16 DeviceId:就是上文提到的DeviceId了。
  
  返回
  
  

- XST_SUCCESS  if the initialization was successfull.

  

-  XST_DEVICE_NOT_FOUND  if the device  configuration data was not found  for a device with the supplied device ID.

  
  说明
  
  GPIO初始化
  


  函数名

  
  XGpio_LookupConfig

  
  输入

  
  u16 DeviceId:就是上文提到的DeviceId了。

  
  返回

  
  

A pointer of  data type XGpio_Config which points to the

  

device  configuration if DeviceID is found.

  

- NULL if  DeviceID is not found.

  

返回XGpio_Config结构体指针就是了

  
  说明

  
  获取初始化结构体信息

  


/*

* API Basic functions implemented in xgpio.c

*/

void XGpio_SetDataDirection(XGpio *InstancePtr, unsigned Channel,


u32 DirectionMask);

设置GPIO的输入输出方向,XGpio *InstancePtr:需要进行初始化的GPIO结构体;unsigned Channel是初始化通道1还是通道2,1代表Channel 1,2代表Channel 2,u32 DirectionMask,某一位设为0就是输出,设为1就是输入,如0x0001就代表第0位为输入,其他为输出。


u32 XGpio_GetDataDirection(XGpio *InstancePtr, unsigned Channel);


获取GPIO的输入输出方向信息。


u32 XGpio_DiscreteRead(XGpio *InstancePtr, unsigned Channel);

    GPIO数据读。


void XGpio_DiscreteWrite(XGpio *InstancePtr, unsigned Channel, u32 Mask);
    GPIO数据写,u32 Mask需要写的数据。


/*

* API Functions implemented in xgpio_extra.c

*/

void XGpio_DiscreteSet(XGpio *InstancePtr, unsigned Channel, u32 Mask);

    GPIO置1,相应位为1就置1,为0不作改变。


void XGpio_DiscreteClear(XGpio *InstancePtr, unsigned Channel, u32 Mask);


GPIO清0,相应位为0就清0,为1不作改变。
继承事业,薪火相传
返回列表