PS端的GPIO

GPIO

ZYNQ 的 IO口用于和外部设备通信,包括对外连接的 GPIO 和内部 PS PL 通信的 AXIO
GPIO 又分为 两种: MIO 和 EMIO。MIO 和 EMIO 只是 GPIO 信号的两种接口,MIO 直连到PS,EMIO 则是 PS 扩展到 PL,从 PL 接出的 I/O。
EMIO 依然属于 PS,只是连 接到了 PL ,再从 PL 输出信号。所以 MIO 不需要管脚约束,而 EMIO 需要管脚 约束。
当 GPIO 用作输出时,一般用于控制一些简单的外设,如 LED 、按键、蜂鸣器
GPIO的信号路由
信号不能被分割 并路由到不同的 MIO 引脚组。例如,如果 SPI_0_CLK 路由到 MIO 引脚 40 ,那
SPI_0 接口的其他信号必须路由到 MIO 引脚 41 ~ 45。同样,信号不能在 MIO 和 EMIO 之间分割。
如上图所示:
软件通过 AHB 互连接入只有从机功能的 Quad-SPI SMC 外设。 GPIO SPI CAN UART I2C 只存控制器通过 APB 总线访问。
通过 APB 总 线可以访问 GPIO SPI CAN UART I2C 控制器。

PS和PL联合工程的涉及步骤

新建vivado工程;
创建BD文件;
构建硬件系统
【加入zynq的IP,并对ZYNQ进行配置(必须对外设和DDR进行配置,不管有没有用到);
加入其他用到的IP核;完成IP核之间的相互连接;
保存,验证设计;】;

生成封装【Generate Output Products...”生成输出;“Create HDL Wrapper...”创建 HDL 封装】

引脚约束;

生成BIT流,file-->Export -->选择“ExportHardware...”将硬件描述文件(HDF文件)导出;

若是使用vivado2018版本,使用步骤就和教程中完全一致。

file-->latch SDK,启动SDK;

创建SDK工程;

添加应用库即对应的LIB文件夹;

添加头文件路径和声明;

编写main.c文件;

添加用户宏定义【就是把main.c函数中用到的所有变量和GPIO的端口号对应一下,这样主函数中对变量的操作就是对端口的操作】;

上板验证和调试。

viviado的2020版本所以执行如下操作:

手动打开vitis,或者在vivado的内部用tool-->latch vitis ide打开;

下面这里是选择生成的工程中自带的例程,这里可以选择一个空的例程。(C)表示用C写的;

 添加应用库即对应的LIB文件夹;

添加头文件路径和声明;

编写main.c文件;

添加用户宏定义【就是把main.c函数中用到的所有变量和GPIO的端口号对应一下,这样主函数中对变量的操作就是对端口的操作】;

上板验证和调试。

项目中的main.c文件怎么写?

写main.c文件本质上和写嵌入式的编码没有什么区别。

关于GPIO的一些系统函数在gpiops: xgpiops.c File Reference (xilinx.github.io)有详细介绍。

xgpiops.c只要是对GPIO进读写;xgpiops.h是.c文件的头文件;

通过上述的系统函数,可以实现对GPIO的初始化,读,写等操作。

  • 12
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值