ZYNQ-GPIO

一.简介

ZYNQ引脚分为MIO和EMIO两中,MIO为PS端由ARM控制,EMIO为PL端由FPGA控制。MIO共有54个引脚,MIO引脚集中在Bank0和Bank1,功能基本都是固定了,例如选中SD0就会用到40-45五个引脚这是用到PS端的引脚,而PL端则有64个引脚集中在Bank2,Bank3,功能未固定做什么都行。
ZYNQ-GPIO

二.硬件搭建

和前面文章一样把SD0,Uart0打开配置DDR,LVCMOS1.8V,勾选GPIO选择EMIO,把所有引脚Make External,保存创建顶层文件。
ZYNQ-GPIO
这里有地方需要注意,EMIO有三个引脚需要进行管脚绑定,首先在芯片上找到管脚的位置,其次找到管脚名字,Make External出去的GPIO名字是GPIO_0_0,打开GPIO_wrapper文件,找到inout GPIO_0_0就可以设置引脚了
ZYNQ-GPIO

ZYNQ-GPIO
绑定管脚,必须要绑定管脚否则在Generate Bistream会报错,绑定管脚方法如下
ZYNQ-GPIO

ZYNQ-GPIO
ZYNQ-GPIO
绑管脚的例子藏的比较深,
ZYNQ-GPIO
绑定完管脚,需要给每个管脚绑定电压,绑定管脚电压和绑定管脚差不多
ZYNQ-GPIO
绑定管脚结束如下,保存返回vivado,生成Bitstream,导出硬件做软件开发
ZYNQ-GPIO

三.软件开发

创建一个Hello World模板编写程序,写一个可以用按键控制的呼吸灯,按一次‘呼’再按一次‘吸’LED灯会渐渐变亮,渐渐变暗。
例子:
ZYNQ-GPIO

ZYNQ-GPIO

四.总结

ZYNQ-GPIO

ZYNQ-GPIO
注意的坑:引脚是从54开始的不是55,还有绑定管脚的时候怎样明白自己的LED灯是绑定54引脚还是55?,以上图为例子,G20引脚绑定的是0口,对应的就是54引脚。
GPIO初始化:
static XGpioPs GpioPs;
static XGpioPs_Config *GpioPs_Cfg;
XGpioPs_LookupConfig()查找设备ID;
XGpioPs_CfgInitialize()初始化配置;
XGpioPs_SetDirectionPin()设置方向‘0’输入,‘1’输出;
XGpioPs_SetOutputEnablePin()使能;
工作API
XGpioPs_WritePin();输出引脚0或1,前提是该引脚方向一定是输出;XGpioPs_ReadPin();读取该引脚状态0或1,前提是该引脚方向一定是输入;

以上就这些;

谢谢~

相关文章: