7、通用数字量输入输出GPIO教程.ppt
文本预览下载声明
第七讲:通用数字量输入/输出(GPIO); 外界二进制信息(数字量)要被CPU处理,要给存储器存放,就需要外界信息源与两者之间的交换接口,这样的交换接口若用来进行通用目的数字量的输入输出,就被称为通用数字量输入/输出接口,简称GPIO。F28335 DSP有多达88个GPIO口,对应着芯片引出的88个引脚,随着芯片的封装与尺寸的确定,引脚数目是有限的,所以这88个引脚多数都是功能复用的,即可以灵活配置为输入引脚,也可以灵活配置为输出引脚,即可以作为通用I/O引脚,也可以作为特殊功能口(如SCI、SPI、ECAN等),非常灵活,用户根据需要,可以通过GPIO MUX(输入输出多路选择器,复用开关)寄存器来进行相关配置,下边详细介绍GPIO的工作原理及其配置过程。
; F28335 DSP将这88个GPIO口分成了A、B、C三大组,A组包括GPIO0至GPIO31,B组包括GPIO32至GPIO63,C组包括GPIO64至GPIO87,每个引脚都复用了多个功能,同一时刻,每个引脚只能用该引脚的一个功能。究竟工作在哪个模式下,可以通过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工作原理;GPIO工作原理;GPIO寄存器;GPIO寄存器; 采用上述结构体定义可以直接对GPIO的寄存器进行操作,完成外部引脚的初始化操作。例如,将IOA全部设置GPIO功能,输出状态,0量化:
void Gpio_Select(void)
{ Uint16 var1;
Uint16 var2;
Uint16 var3;
var1=0x0000;
var2=0xffff;
var3=0x0000;
EALLOW;
GpioCtrlRegs.GPAMUX1=var1;//GPIO0-15
GpioCtrlRegs.GPAMUX2=var1;//GPIO16-31
GpioCtrlRegs.GPADIR.all=var2;//GPIO0-31
GpioCtrlRegs.GPAQSEL1.all=var3;
GpioCtrlRegs.GPAQSEL2.all=var3;
EDIS;
}; F28335一共有88个GPIO,分为3组,分别是A、B、C。其中A组GPIO可以通过软件配置为外部中断1、2以及NMI功能,B组GPIO可以通过软件配置为外部中断3、4、5、6、7功能。而C组的GPIO不能配置为中断功能。如果将某GPIO配置为外部中断功能,那么下面是设置步骤:
1. 将数字量I/O配置为GPIO功能;
2. 将数字量I/O配置为输入方向;
3. 将数字量I/O量化配置正确;
4. 利用外部中断选择寄存器选择相应的引脚为外部中断源;
5. 为此GPIO触发信号设置极性,上升沿、下降沿或者双边沿;
void GPIO_xint (void)
{
ELLOW;
GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 0; GpioCtrlRegs.GPBMUX2.bit.GPIO55 = 0;
GpioCtrlRegs.GPBMUX2.bit.GPIO56 = 0; GpioCtrlRegs.GPBMUX2.bit.GPIO57 = 0;
GpioCtrlRegs.GPBDIR.bit.GPIO54 = 0; GpioCtrlRegs.GPBDIR.bit.GPIO55 = 0;
GpioCtrlRegs.GPBDIR.bit.GPIO56 = 0; GpioCtrlRegs.GPBDIR.bit.GPIO57 = 0;
GpioCtrlRegs.GPBQSEL2.bit.GPIO54= 0; GpioCtrlRegs.GPBQSEL2.bit.GPIO55= 0;
GpioCtrlRegs.GPBQSEL2.bit.GPIO56= 0; GpioCtrlRegs.GPBQSEL2.bit.GPIO57= 0
显示全部