免责声明:
本文所提供的信息和内容仅供参考。作者对本文内容的准确性、完整性、及时性或适用性不作任何明示或暗示的保证。在任何情况下,作者不对因使用本文内容而导致的任何直接或间接损失承担责任,包括但不限于数据丢失、业务中断或其他经济损失。
读者在使用本文信息时,应自行验证其准确性和适用性,并对其使用结果负责。本文内容不构成专业技术咨询或建议,具体的技术实现和应用应根据实际情况和需要进行详细分析和验证。
本文所涉及的任何商标、版权或其他知识产权均属于其各自的所有者。若本文中引用了第三方的资料或信息,引用仅为学术交流目的,不构成对第三方内容的认可或保证。
若有任何疑问或需进一步信息,请联系本文作者或相关专业人士。
目录
前言
本文对 ZYNQ 芯片的 PS GPIO 进行介绍,通过ILA,演示 PS 端 MIO/EMIO 的使用方法。
一、PS-MIO/PS-EMIO 介绍
ZYNQ SOC PS 部分的 IO 包括 PS-MIO 和 PS-EMIO。7系列--PS-MIO 具有 54 个 ,Zynq UltraScale+ 具有78个可配置复用的MIO,若配置EMIO,那其序号应从54/78开始。
二、搭建 SOC 系统工程
详细的搭建过程这里不再重复,对于小白如果还不清楚如何创建 SOC 工程的,请浏览上期教程。
三、MIO/EMIO 配置
选择适量的EMIO接口
四、插入ILA对接EMIO
五、编译并导出平台文件
详细的搭建过程这里不再重复,对于小白如果还不清楚如何创建 SOC 工程的,请浏览上期教程。
六、搭建 Vitis-sdk 工程
详细的搭建过程这里不再重复,对于小白如果还不清楚如何创建 SOC 工程的,请浏览上期教程。
七、测试程序
#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "xparameters.h"
#include "xgpiops.h"
#define GPIO_DEVICE_ID 0 // 定义GPIO设备ID
int main() {
XGpioPs Gpio; // 创建XGpioPs实例
XGpioPs_Config *ConfigPtr; // 创建指向XGpioPs_Config的指针
// 查找并获取GPIO设备的配置参数
ConfigPtr = XGpioPs_LookupConfig(GPIO_DEVICE_ID);
// 初始化GPIO设备,使用从LookupConfig获取的配置参数
XGpioPs_CfgInitialize(&Gpio, ConfigPtr, ConfigPtr->BaseAddr);
// 设置EMIO引脚78为输出方向
XGpioPs_SetDirectionPin(&Gpio, 78, 1);
// 使能EMIO引脚78的输出使能
XGpioPs_SetOutputEnablePin(&Gpio, 78, 1);
// 将EMIO引脚78的输出设置为高电平
XGpioPs_WritePin(&Gpio, 78, 0x1);
return 0; // 程序结束
}
八、测试结果
ILA中EMIO波形与XGpioPs_WritePin(&Gpio, 78, 0x1);的配置一致。
总结
本期教程通过ILA,演示 PS 端 MIO/EMIO 的使用方法。