ZYNQ之PS端GPIO MIO 一、为什么要使用GPIO
GPIO是通用IO口,属于最基本的端口类型,它的功能简单来说就是伸出一个引脚,这个引脚可以用来输出高电平或低电平、也可以用来检测外界输入的电平高低。它的状态可分为低电平(0)、高电平(1)、高阻态(Z)三种。
GPIO的用途广泛,简单的应用例如:点亮LED灯,驱动蜂鸣器,检测按键等。复杂一点的应用例如:模拟PWM波、使用两个IO模拟IIC接口、使用四个IO模拟SPI接口等。
所以GPIO属于最基本的知识点,是入门者必须牢牢掌握的东西。
二、如何在ZYNQ上使用GPIO功能
要想在ZYNQ上使用GPIO功能,有两个方法:第一个是直接使用PS端自带的GPIO功能,这种方法比较简单而且常用,分为GPIO MIO和GPIO EMIO两种;第二个方法是使用AXI GPIO IP核,这种方法涉及到AXI总线,会稍微复杂一点。篇幅有限,本篇我们只讲PS端的GPIO MIO内容,GPIO EMIO和AXI GPIO以后有机会再来讲解。
1.GPIO MIO的配置
在ZYNQ PS模块的配置里选择Peripheral I/O Pins图形界面。在这个界面可以使用图形化的方式添加外设,只需用鼠标点击外设方块,便可将该外设开启并与上标的MIO链接,开启的MIO和外设方块会绿色高亮显示,未开启的则显示为灰色,且处在同一列的MIO与外设互相链接。这里我们点击UART1对应MIO48、49方块,可以看到UART1和MIO48、49都变为绿色高亮。
这里表示开启了UART1外设,并且将其链接到了MIO48、49上。我们再勾选左下方的GPIO MIO。
我们会发现三个现象:(1)上方所有的MIO口都变为高亮;(2)MIO与GPIO的编号是一样的,例如MIO37对应GPIO37;(3)GPIO48、49为灰色未开启状态。
这里对以上现象进行解释:
(1)MIO都变为高亮,是因为GPIO MIO并非像UART1一样,只占据两个MIO,而是占据了所有未被赋予外设功能的MIO引脚,也就是说剩下所有MIO都被赋予了GPIO功能。
(2)在SDK中可以使用函数随意控制所有被赋予了GPIO功能的MIO,而在使用函数控制某个GPIO时需要知道该GPIO的编号,这里可以看见GPIO编号等于MIO编号,例如MIO37即为GPIO37号,因此控制GPIO时直接输入它的MIO编号即可。
(3)GPIO48、49处于灰色状态,我们可以知道GPIO48、GPIO49未开启,这是因为MIO48、49被UART1占用了,因此GPIO48、49不存在,也就是说在SDK中无法控制GPIO48、49。
话说,GPIO MIO有多少个呢?如果要进行一些特殊操作,够不够用呢?这里我们把界面移到最右边看看。
这里可以看到,MIO最大编号为53,编号从0开始,也就是说MIO只有54个,再减去我们要添加使用的各种外设,可能最后就只剩下十几个MIO了,这时候MIO可能就不够用了,需要使用额外的EMIO接口了,关于GPIO EMIO的内容会在以后进行讲解。
本人能力有限,可能有一些错漏的地方,欢迎大家指正,下一篇我会给大家带来关于PS GPIO MIO的SDK编程实践部分。
|