|
2)GPIO驱动
在EDK中,与GPIO有关的底层文件有:xgpio.c、xgpio.h、xgpio_i.h以及xgpio_l.h。其中xgpio.c定义了GPIO所有的驱动函数,所以在GPIO的用户代码中添加下列语句:
#include “xgpio.h”
#include “xgpio_1.h”
#include “xgpio_i.h”
在xgpio.c中定义了下面驱动函数,包含GPIO的初始化、配置、方向的设定、读取和赋值输出等函数。下面给出常用的GPIO操作函数:
(1)初始化函数
XStatus XGpio_Initialize (XGpio *InstancePtr, Xuint16 DeviceId);
其中InstancePtr是Xgpio结构体指针,存储器的指针参数必须被预先指定;DeviceId是由Xgpio控制的唯一的设备ID,可在xparameter.h文件中找到。通过XGpio_Initialize函数将唯一的设备ID和Xgpio结构体联系起来指定设备。
(2)配置查找函数
XGpio_Config * XGpio_LookupConfig (Xuint16 DeviceId);
该函数查找唯一标志符DeviceId所标识的设备配置,系统配置表里包含了每一个设备的配置信息。返回的m_XGpio即为设备配置结构指针,返回m_XNULL表明未找到标识设备。
(3)数据方向设置函数
void XGpio_SetDataDirection (XGpio *InstancePtr, unsigned Channel,
Xuint32 DirectionMask);
XGpio_SetDataDirection配置GPIO的数据传输方向。InstancePtr是Xgpio结构体指针;Channel为GPIO的通道数(每个GPIO模块有两个通道),可选值为1或2;DirectionMask是输入输出的位标识,对应位的值为0表示输出,1表示输入。
(4)数取函数
Xuint32 XGpio_DiscreteRead (XGpio *InstancePtr, unsigned Channel);
XGpio_DiscreteRead读寄存器的值。InstancePtr是Xgpio结构体指针;Channel为GPIO的通道数,可选值为1或0。
(5)赋值函数
void XGpio_DiscreteWrite (XGpio *InstancePtr, unsigned Channel, Xuint32 Mask);
XGpio_DiscreteWrite写寄存器的值。InstancePtr是Xgpio结构体指针;Channel为GPIO的通道数,可选值为1或0。
2.中断控制器
1)GPIO结构
中断控制器(opb_intc)由中断控制核和总线接口组成,中断核可通过参数配置,与相应的总线接口逻辑配合,接在OPB总线上或DCR总线上,即opb_intc和dcr_intc,可用于MicroBlaze和PowerPC嵌入式系统。其和OPB总线的典型连接方式如图9-10所示。
图9-10 中断控制器和OPB总线的连接示意图
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?我要注册
x
|