揭秘ADuC702X与ADuC706X系列全攻略之(二)----GPIO(原创)
0赞ADuC702x
ADuC702x芯片有多个复用双向I/O(GPIO)管脚,以ADuC7026为例,它有40个复用双向I/O(GPIO)管脚,所有管脚的耐压为5V,也就是通用I/O口支持5V输入电压。一般许多GPIO管脚都存在复用功能。默认情况下,GPIO管脚设定为GPIO模式。
所有GPIO管脚都有一个内部上拉电阻(约100 kΩ),而且驱动能力为1.6mA。注意:同一时刻只能有20个GPIO在1.6mA的电流下驱动。另外,P0.0、P0.4、P0.5、P0.6、P0.7和P1的8个GPIO可通过编程实现上拉。
40个GPIO可分为5组:P0~P4,每个端口由4到5个寄存器来选择各个端口的工作模式。
ADuC706x
ADuC706x单片机共有16个复用双向I/O(GPIO)管脚。一般来说,许多GPIO引脚可以由用户配置,实现多种功能。默认情况下,GPIO引脚配置为GPIO模式。所有GPIO管脚内部都有一个驱动能力为1.6mA的提拉电阻。所有的I/O引脚都能承受3.3V的电压,也就是说所有的GPIO管脚支持3.3V的输入电压
硬件使用
以上是对GPIO的简单描述,对于ADUC7060输出高电平为2.5V,如果需要3.3V输出,可以采用上拉电路,一般接1K的上拉电阻即可,如果需要5V的驱动能力呢?当然只用上拉是不够的,也是不允许的!一般在设计中可以使用缓冲器,市场上比较容易买到的如74LVCO7,即先上拉到3.3V,然后再通过缓冲器输出5V。硬件就说这么多,下面说说软件的应用。
软件使用
既然是I/O口,必然既可以输入又可以输出,一般大家经常使用输出功能,对于7026和7060它都是通过配置GPxDAT寄存器实现的,具体如下:
|
位 |
描述 |
|
31:24 |
数据方向。 用户置1则GPIO管脚为输出,用户清0则GPIO管脚为输入。 |
|
23:16 |
端口x的数据输出,置1为高电平,清零输出低电平。 |
|
15:8 |
反映复位时端口x管脚电平(只读)。 |
|
7:0 |
端口x的数据输入(只读)。
|
例如:GP1DAT=0x04000000;//实现P1.2输出低电平,而GP1DAT=0x04040000;//实现P1.2输出高电平,非常简单吧!
对于I/O口作为输入使用,一般使用它判断外部电平,但外部电平不可以超过允许范围,对于7026允许5V,7060为3.3V
例如:
if( (GP0DAT&0x01)==0x00) //若P0.0输入为低电平则P1.2输出高电平
{
GP1DAT = 0x04000000;
}
同样很简单,大家可以试着编一个判断上升沿的程序,期待你的答案哦!
