Hands-on Cookbook for Haawking DSC28027

第六章 通用数字量输入/输出(GPIO)

  CPU要处理外界二进制信息(数字量),要将其存放在存储器中,就需要外界信息源与CPU或存储器进行交换,这样的交换接口若用来进行通用目的数字量的输入输出,就被称为通用数字量输入/输出接口,简称GPIO。F28027 DSP有多达39个GPIO口,对应着芯片引出的39个引脚,随着芯片的封装与尺寸的确定,引脚数目是有限的,所以这  个引脚多数都是功能复用的,既可以灵活配置为输入引脚,也可以灵活配置为输出引脚,既可以作为通用I/O引脚,也可以作为特殊功能口(如SCI、SPI、ECAN等),非常灵活,用户根据需要,可以通过GPIO MUX(输入输出多路选择器,复用开关)寄存器进行相关配置,下面详细介绍GPIO的工作原理及其配置过程。

6.1 GPIO工作原理

  F28027 DSP将这39个GPIO口分成了A、B这两大组,A组包括GPIO0-GPIO31,B组包括GPIO32-GPIO38,每个引脚都复用了多个功能,同一时刻,每个引脚,只能用改该引脚的一个功能。究竟工作在哪个模式下,可以通过GPIO Mux(复用开关)寄存器配置每个引脚的具体功能(通用数字量I/O或者外设专用功能)。如果将这些引脚选择数字量I/O模式,可以通过方向寄存器GPxDIR配置数字量I/O的方向,既作为输入引脚也作为输出引脚;还可以通过量化寄存器GPxQUAL对输入信号进行量化限制,从而可以消除数字量I/O引脚的噪声干扰。此外,有下面4种方式对GPIO引脚进行读写操作:

  • 1.可以通过GPxDAT寄存器独立读写I/O信号。
  • 2.利用GPxSET寄存器写1(写0无效)对I/O口置位。
  • 3.利用GPxCLEAR寄存器写1(写0无效)对I/O口清零。
  • 4.利用GPxTOOGLE寄存器置1后(写0无效)翻转I/O输出电平,原来高电平变成低电平,原来低电平则变成高电平。

  GPIO模块框图如图6.1所示。从图中最左侧圈内GPIO0~GPIO31为GPIO引脚,在其上方位置有个PU,表示PULL UP是上拉的意思,也就是这些GPIO引脚是通过软件可编程控制其电平是否上拉,控制寄存器为GPAPUD,0的时候上拉有效,1的时候上拉无效,两个三角形是控制GPIO作为输入还是输出,上边三角形为输入通道,GPIO输入后经滤波电路,引脚的功能选择由多路选择器控制,每个引脚有4种功能选择,00为通用I/O引脚,01、10、11分别为外设1、2、3引脚,输入的值都会进入GPADAT寄存器,可以通过该寄存器进行读取,在GPIO方向选择为输入的受GPIO输入信号控制,在其上方就是GPIO输入引脚引入的相关PIE中断,下边三角形为输出通道,输出值为GPADAT内的值,在做输出引脚时,可以通过GPASET等寄存器设置该寄存器的值。

  GPIO输入受到可编程的滤波器的限制,用户可以通过配置GPAQSEL1、GPAQSEL2、GPBQSEL2寄存器选择GPIO引脚的输入限制类型。对于一个GPIO输入引脚,输入限制可以被SYSCLKOUT同步然后经采样窗进行滤波限制;而对于配置成外设输入的引脚,除同步与采样窗进行滤波限制;而对于配置成外设输入的引脚,除同步与采样窗限制外,也可以是异步输入。

(2020-10-30,希格玛公寓,北京)

Junning Wu wechat
Welcome To Contact Me with My Personal WeChat ID(Weixin)