欢迎使用优快云-markdown编辑器

本文介绍了如何在Xilinx Zynq SoC中使用PS端外设,包括GPIO和XADC的具体操作步骤。从包含必要的头文件到初始化驱动程序,再到设置引脚方向及读写操作,提供了详细的指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

欢迎使用Markdown编辑器写博客

一、Xilinx PS外设架构

二、PS外设的使用
2.1 GPIO使用为例
1). Include the xgpiops.h file within the main application code

include “xparameters.h” // 本自硬件的ID

include “xgpiops.h” //特定硬件的功能函数

2). Define the output pin we want to toggle. In this case it is pin 8 within the bank of 10, MIO 47:

define ledpin 47

3). Declare the driver instance(设备实体,最为重要的对象):
XGpioPs Gpio;
4). Configure the GPIO and define the status and pointer variables required for initialization within the function you wish to use(配置指针,为具体设备实体服务):
int Status;
XGpioPs_Config *GPIOConfigPtr;
5). Initialize the GPIO Driver:
//GPIO Initilization
// 第一步,由来自于xparameters.h的ID,获得设备实体需要的配置参数
GPIOConfigPtr = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID);
// 第二步,由配置参数指针,去初始化设备实体
Status = XGpioPs_CfgInitialize(&Gpio, GPIOConfigPtr, GPIOConfigPtr ->BaseAddr);
if (Status != XST_SUCCESS) {
return XST_FAILURE;
}
6). Set the direction of the GPIO pin and enable the output:
XGpioPs_SetDirectionPin(&Gpio, ledpin, 1);
XGpioPs_SetOutputEnablePin(&Gpio, ledpin, 1);
7). Write the desired output value to the GPIO pin:
XGpioPs_WritePin(&Gpio, ledpin, 0x0);

2.2 以XADC为例
1). Include the xgpiops.h file within the main application code

include “xparameters.h” // 本自硬件的ID

include “xadcps.h” //特定硬件的功能函数

2). Declare the driver instance(设备实体,最为重要的对象):
static XAdcPs XADCMonInst;
3). Configure pointer variables required for initialization within the function you wish to use(配置指针,为具体设备实体服务):
XAdcPs_Config *ConfigPtr;
4). Initialize the XADC Driver:
//XADC Configure pointer obtain
// 第一步,由来自于xparameters.h的ID,获得设备实体需要的配置参数
ConfigPtr = XAdcPs_LookupConfig(XPAR_AXI_XADC_0_DEVICE_ID);
if (ConfigPtr == NULL) {
return XST_FAILURE;
}

// 第二步,由配置参数指针,去初始化设备实体
Status_ADC = XAdcPs_CfgInitialize(XADCInstPtr,ConfigPtr,ConfigPtr->BaseAddress);
if(XST_SUCCESS != Status_ADC){
print(“ADC INIT FAILED\n\r”);
return XST_FAILURE;
}
5). Special function call for the XADC module
//self test
Status_ADC = XAdcPs_SelfTest(XADCInstPtr);
if (Status_ADC != XST_SUCCESS) {
return XST_FAILURE;
}
//stop sequencer
XAdcPs_SetSequencerMode(XADCInstPtr,XADCPS_SEQ_MODE_SINGCHAN);

2.3 总结
总体上来说,对PS端的外设,软件侧需要重点关注两个结构:一个是X***Ps_Config和另一个X***psInst,此处*指定特定功能模块名称,如Gpio,Adc;
前者由xparameters.h中定义的ID来进行初始化;
后者由X***Ps_Config指针结构进行初始化。
且这个顺序是固定的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值