GPIO(General-Purpose I/O,通用输入/输出)的数量和功能以及中断控制的能力是处理器功能强弱的体现,PXA255处理器的GPIO以及中断控制器提供了丰富的资源,增加了系统设计的灵活性。
1.1 GPIO
PXA255处理器提供了81个GPIO引脚,同时提供了27个寄存器来控制这些引脚的工作方式和状态。这27个寄存器控制了引脚的输出/输入方向、引脚状态以及引脚的附加功能(关于引脚的附加功能将在后文讲解)。此外,这些GPIO中的一部分引脚还具有将处理器从睡眠中唤醒的功能。
对于不使用的GPIO引脚来说,如果将它们设置成输出状态,可以降低系统的电源消耗。
<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899"><span style="mso-bookmark: _Toc136853779"><span lang="EN-US">1.1.1</span></span></chsdate> GPIO操作(GPIO operation)
当GPIO引脚被设置成输入状态时,可以作为中断输入引脚使用。在系统复位后,所有81个GPIO引脚都被设置成输入状态。
当GPIO引脚被设置成输出状态时,可以通过向引脚赋值来决定引脚电平的高低。向GPSR寄存器输出1代表高电平,向GPCR寄存器输出1代表低电平。
从GPIO引脚状态寄存器(GPLR)读取数据,可以获得当前引脚的状态。同时引脚还提供了上升沿和下降沿探测寄存器,读这些寄存器数据将能获得在引脚上发生的是上升沿还是下降沿。
<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899"><span style="mso-bookmark: _Toc136853780"><span lang="EN-US">1.1.2</span></span></chsdate> GPIO附加功能(Alternate Function)
多数GPIO都有附加的功能,例如,充当串口的输出/输入、LCD控制器的数据通道口等。这些功能的实现和硬件的设计相关。表1-1给出了各个GPIO引脚的附加功能。需要注意的是,即便使用附加功能,仍然需要适当地设置引脚的相关寄存器。
表1-1 PXA255 GPIO引脚的附加功能
引脚 |
附加功能名称 |
附加功能任务 |
AF编码 |
来 源 单 元 |
信 号 描 述 |
GP1 |
GP_RST |
ALT_FN_1_IN |
01 |
时钟和电源管理单元 |
GP_reset信号发生后,处于低电平状态 |
GP6 |
MMCCLK |
ALT_FN_1_OUT |
01 |
MMC控制器 |
MMC时钟 |
GP7 |
48MHz clock |
ALT_FN_1_OUT |
01 |
时钟和电源管理单元 |
48MHz时钟输出信号 |
GP8 |
MMCCS0 |
ALT_FN_1_OUT |
01 |
MMC控制器 |
MMC片选0 |
GP9 |
MMCCS1 |
ALT_FN_1_OUT |
01 |
MMC片选1 | |
GP10 |
RTCCLK |
ALT_FN_1_OUT |
01 |
系统集成单元 |
实时时钟(1Hz) |
GP11 |
3.6MHz |
ALT_FN_1_OUT |
01 |
时钟和电源管理单元 |
3.6MHz晶振频率输出 |
GP12 |
32kHz |
ALT_FN_1_OUT |
01 |
32kHz输出 | |
GP13 |
MBGNT |
ALT_FN_2_OUT |
10 |
内存控制器 |
内存判别器,判别外设是否被允许接入系统总线 |
GP14 |
MBREQ |
ALT_FN_1_IN |
01 |
内存控制器可选总线的主要请求 | |
GP15 |
nCS_1 |
ALT_FN_2_OUT |
10 |
片选1,低电平有效 | |
GP16 |
PWM0 |
ALT_FN_2_OUT |
10 |
PWM0输出 | |
GP17 |
PWM1 |
ALT_FN_2_OUT |
10 |
PWM1输出 | |
GP18 |
RDY |
ALT_FN_1_IN |
01 |
外部总线就绪 | |
GP19 |
DREQ[1] |
ALT_FN_1_IN |
01 |
外部DMA请求 | |
GP20 |
DREQ[0] |
ALT_FN_1_IN |
01 |
外部DMA请求 | |
GP23 |
SCLK |
ALT_FN_2_OUT |
10 |
SSP串行端口 |
SSP时钟 |
GP24 |
SFRM |
ALT_FN_2_OUT |
10 |
SSP帧 | |
GP25 |
TXD |
ALT_FN_2_OUT |
10 |
SSP发送 | |
GP26 |
RXD |
ALT_FN_1_IN |
01 |
SSP接收 | |
GP27 |
EXTCLK |
ALT_FN_1_IN |
01 |
SSP ext_clk | |
GP28 |
BITCLK |
ALT_FN_1_IN |
01 |
AC97控制单元 |
AC97比特时钟信号 |
BITCLK |
ALT_FN_2_IN |
10 |
I2S控制器 |
I2S比特时钟信号 | |
BITCLK |
ALT_FN_1_OUT |
01 |
I2S比特时钟信号 | ||
GP29 |
SDATA_IN0 Unit |
ALT_FN_1_IN |
01 |
AC97控制器 |
AC97 Sdata_in0信号 |
SDATA_IN |
ALT_FN_2_IN |
10 |
I2S控制器 |
I2S Sdata_in信号 | |