赵宏伟《嵌入式系统设计》第5章(2-4节) 嵌入式内部可编程模块 2016jm.pptx
《赵宏伟《嵌入式系统设计》第5章(2-4节) 嵌入式内部可编程模块 2016jm.pptx》由会员分享,可在线阅读,更多相关《赵宏伟《嵌入式系统设计》第5章(2-4节) 嵌入式内部可编程模块 2016jm.pptx(171页珍藏版)》请在冰豆网上搜索。
,5.2GPIO,GPIO:
GeneralPurposeI/Oports,通用输入/输出,ARM芯片中称为输入输出端口。
说得简单点就是控制GPIO管脚电平的高低来控制外围器件,单片机差不多就是专门做这个事的。
MCS-51单片机的P0-P3口很简单,只需要在管脚相应的寄储器写入0或1就行了。
ARM处理器要复杂一点,因为ARM大部分的管脚都不只有一个功能(输入/输出,多功能复用管脚),所以具体应用中要做个选择,也就是要配置相应的寄储器,选定一个功能。
只要把相应的寄储器配置好后就和单片机一样的简单。
在实际应用中,不管是接LCD、接键盘,控制LED流水灯等等,都离不开对GPIO的操作。
可以说,对GPIO的操作是所有硬件操作的基础。
S3C2440的GPIO:
130个,分为9组,GPAGPJ,这9组GPIO端口均为多功能端口,端口功能可以编程设置,若选定某个GPIO端口的功能,应在主程序运行之前编程设置对应的控制寄存器,从而选定所需GPIO端口的功能;如果某个GPIO引脚不用于特定功能,那么该引脚就可以设置为普通的输入输出引脚。
1,5.2.1端口功能,S3C2440有130个GPIO引脚,分布在9个GPIO端口:
(1)端口A:
GPA,23个引脚,无内部上拉电阻,主要用于输出、地址总线、Bank选择、Nandflash控制等。
(2)端口B:
GPB,11个引脚,主要用于输入输出、DMA请求、定时器输出等。
(3)端口C:
GPC,16个引脚,主要用于输入输出、LCD接口。
(4)端口D:
GPD,16个引脚,主要用于输入输出、LCD接口、SPI接口。
(5)端口E:
GPE,16个引脚,主要用于输入输出、SPI接口、SD卡接口、IIC接口、IIS接口、AC97控制器接口。
(6)端口F:
GPF,8个引脚,主要用于输入输出、中断请求输入口。
(7)端口G:
GPG,16个引脚,主要用于输入输出、中断请求输入口、UART接口、SPI接口。
(8)端口H:
GPH,11个引脚,主要用于输入输出、时钟输出、UART接口。
(9)端口J:
GPJ,13个引脚,主要用于输入输出、摄像头接口。
每个GPIO端口均是多功能的。
1,1.端口A的GPIO引脚功能,端口GPA的I/O引脚共有23个,有2种功能:
功能1:
作为普通的输出口(注意:
只能作为输出口)。
功能2:
主要用作地址信号、Bank选择信号nGCS、Nandflash控制信号。
1,2.端口B的GPIO引脚功能,端口GPB的I/O引脚共有11个,有2种功能:
功能1:
作为普通的输入/输出口。
功能2:
主要用作DMA请求信号(nXDREQ等)和定时器输出信号(TOUT0-TOUT3)。
1,3.端口C的GPIO引脚功能,端口GPC的I/O引脚共有16个,有2种功能:
功能1:
作为普通的输入/输出口。
功能2:
主要用作LCD控制器的接口信号(VFRAME、VCLK等)和LCD像素点数据输出端口(VD0-VD7)。
1,4.端口D的GPIO引脚功能,端口GPD的I/O引脚共有16个,有3种功能:
功能1:
作为普通的输入/输出口。
功能2:
主要用作LCD像素点数据输出端口(VD8-VD23)。
功能3:
SPI接口信号(GPD8、GPD9、GPD10)和SPI片选信号(nSS0、nSS1)。
1,5.端口E的GPIO引脚功能,端口GPE的I/O引脚共有16个,有3种功能:
功能1:
作为普通的输入/输出口。
功能2:
主要用作SPI接口信号(GPE11GPE13)、SD卡接口信号(GPE5GPE10)、IIC接口信号和IIS接口信号。
功能3:
AC97控制器接口信号(GPE0GPE4)。
1,6.端口F的GPIO引脚功能,端口GPF的I/O引脚共有8个,有2种功能:
功能1:
作为普通的输入/输出口。
功能2:
主要用作中断源EINT7EINT0的中断请求信号的输入口。
1,zhaohwjlu,1,7.端口G的GPIO引脚功能,端口GPG的I/O引脚共有16个,有3种功能:
功能1:
作为普通的输入/输出口。
功能2:
主要用作中断源EINT8EINT23的中断请求信号的输入口。
功能3:
UART接口信号、SPI接口信号。
8.端口H的GPIO引脚功能,端口GPH的I/O引脚共有11个,有3种功能:
功能1:
作为普通的输入/输出口。
功能2:
主要用作时钟输出信号、UART接口信号。
功能3:
UART接口信号(CTS、RTS)。
1,9.端口J的GPIO引脚功能,端口GPJ的I/O引脚共有13个,有2种功能:
功能1:
作为普通的输入/输出口。
功能2:
主要用作摄像头接口信号。
1,5.2.2端口配置寄存器,S3C2440所有I/O引脚是功能复用的。
因此,在具体使用I/O端口引脚时,应该通过编程设置端口控制寄存器,以决定使用每个I/O引脚的哪种功能。
另外,I/O端口的状态(如输入/输出、数据线是否挂起),用户也需要通过编程设置控制寄存器来确定。
S3C2440有9个端口,每个端口一般对应3个寄存器(端口A只有2个):
控制寄存器(*CON)和数据寄存器(*DAT)、上拉电阻寄存器(*UP)。
比如端口B的寄存器表示为:
GPBCON、GPBDAT、GPBUP。
控制寄存器功能:
配置I/O引脚的功能,即一个I/O引脚选择哪个功能。
控制寄存器有自己的寻址地址。
数据寄存器功能:
保存输入、或者输出的数据。
数据寄存器有自己的寻址地址。
上拉电阻寄存器:
确定端口B的GPIO引脚是否内部接上拉电阻。
上拉电阻寄存器有自己的寻址地址。
1,1.端口A的寄存器,端口GPA的寄存器包括:
控制寄存器GPACON、数据寄存器GPADAT。
控制寄存器GPACON:
设置端口A中每个GPIO引脚的功能。
GPACON地址=0x56000000,复位值=0x7FFFFF,可读可写。
数据寄存器GPADAT:
存放端口A对应的数据。
当端口A是输出功能时,S3C2440通过GPADAT输出数据。
GPADAT地址=0x56000004,复位值=不确定,可读可写。
1,GPACON控制寄存器格式1,1,GPACON控制寄存器格式2,1,GPADAT数据寄存器格式,1,2.端口B的寄存器,端口GPB的寄存器包括:
控制寄存器GPBCON、数据寄存器GPBDAT、上拉电阻寄存器GPBUP。
控制寄存器GPBCON:
设置端口B中每个GPIO引脚的功能。
GPBCON地址=0x56000010,复位值=0x000000,可读可写。
数据寄存器GPBDAT:
存放端口B对应的数据。
当该端口选择输入功能时,从该寄存器可读取与端口连接的外部数据信息。
当该端口选择输出功能时,向该寄存器写入的数据将通过端口输出。
GPBDAT地址=0x56000014,复位值=不确定,可读可写。
上拉电阻寄存器GPBUP:
确定端口B的GPIO引脚是否内部接上拉电阻。
GPBUP地址=0x56000018,复位值=0x000,可读可写。
1,GPBCON控制寄存器格式,1,GPBDAT数据寄存器格式,1,GPBUP上拉电阻寄存器格式,1,3.端口C的寄存器,端口GPC的寄存器包括:
控制寄存器GPCCON、数据寄存器GPCDAT、上拉电阻寄存器GPCUP。
控制寄存器GPCCON:
设置端口C中每个GPIO引脚的功能。
GPCCON地址=0x56000020,复位值=0x000000,可读可写。
数据寄存器GPCDAT:
存放端口C对应的数据。
当该端口选择输入功能时,从该寄存器可读取与端口连接的外部数据信息。
当该端口选择输出功能时,向该寄存器写入的数据将通过端口输出。
GPCDAT地址=0x56000024,复位值=不确定,可读可写。
上拉电阻寄存器GPCUP:
确定端口C的GPIO引脚是否内部接上拉电阻。
GPCUP地址=0x56000028,复位值=0x0000,可读可写。
1,GPCCON控制寄存器格式,1,GPCDAT数据寄存器格式,1,GPCUP上拉电阻寄存器格式,1,4.端口D的寄存器,端口GPD的寄存器包括:
控制寄存器GPDCON、数据寄存器GPDDAT、上拉电阻寄存器GPDUP。
控制寄存器GPDCON:
设置端口D中每个GPIO引脚的功能。
GPDCON地址=0x56000030,复位值=0x000000,可读可写。
数据寄存器GPDDAT:
存放端口D对应的数据。
当该端口选择输入功能时,从该寄存器可读取与端口连接的外部数据信息。
当该端口选择输出功能时,向该寄存器写入的数据将通过端口输出。
GPDDAT地址=0x56000034,复位值=不确定,可读可写。
上拉电阻寄存器GPDUP:
确定端口D的GPIO引脚是否内部接上拉电阻。
GPDUP地址=0x56000038,复位值=0x0000,可读可写。
1,GPDCON控制寄存器格式,1,GPDDAT数据寄存器格式,1,GPDUP上拉电阻寄存器格式,1,5.端口E的寄存器,端口GPE的寄存器包括:
控制寄存器GPECON、数据寄存器GPEDAT、上拉电阻寄存器GPEUP。
控制寄存器GPECON:
设置端口E中每个GPIO引脚的功能。
GPECON地址=0x56000040,复位值=0x000000,可读可写。
数据寄存器GPEDAT:
存放端口E对应的数据。
当该端口选择输入功能时,从该寄存器可读取与端口连接的外部数据信息。
当该端口选择输出功能时,向该寄存器写入的数据将通过端口输出。
GPEDAT地址=0x56000044,复位值=不确定,可读可写。
上拉电阻寄存器GPEUP:
确定端口E的GPIO引脚是否内部接上拉电阻。
GPEUP地址=0x56000048,复位值=0x0000,可读可写。
1,GPECON控制寄存器格式1,1,GPECON控制寄存器格式2,1,GPEDAT数据寄存器格式,1,GPEUP上拉电阻寄存器格式,1,6.端口F的寄存器,端口GPF的寄存器包括:
控制寄存器GPFCON、数据寄存器GPFDAT、上拉电阻寄存器GPFUP。
控制寄存器GPFCON:
设置端口F中每个GPIO引脚的功能。
GPFCON地址=0x56000050,复位值=0x000000,可读可写。
数据寄存器GPFDAT:
存放端口F对应的数据。
当该端口选择输入功能时,从该寄存器可读取与端口连接的外部数据信息。
当该端口选择输出功能时,向该寄存器写入的数据将通过端口输出。
GPFDAT地址=0x56000054,复位值=不确定,可读可写。
上拉电阻寄存器GPFUP:
确定端口F的GPIO引脚是否内部接上拉电阻。
GPFUP地址=0x56000058,复位值=0x00,可读可写。
1,GPFCON控制寄存器格式,1,GPFDAT数据寄存器格式,1,GPFUP上拉电阻寄存器格式,1,7.端口G的寄存器,端口GPG的寄存器包括:
控制寄存器GPGCON、数据寄存器GPGDAT、上拉电阻寄存器GPGUP。
控制寄存器GPGCON:
设置端口G中每个GPIO引脚的功能。
GPGCON地址=0x56000060,复位值=0x00000000,可读可写。
数据寄存器GPGDAT:
存放端口G对应的数据。
当该端口选择输入功能时,从该寄存器可读取与端口连接的外部数据信息。
当该端口选择输出功能时,向该寄存器写入的数据将通过端口输出。
GPGDAT地址=0x56000064,复位值=不确定,可读可写。
上拉电阻寄存器GPGUP:
确定端口G的GPIO引脚是否内部接上拉电阻。
GPGUP地址=0x56000068,复位值=0xF800,可读可写。
1,GPGCON控制寄存器格式,1,GPGDAT数据寄存器格式,1,GPGUP上拉电阻寄存器格式,1,8.端口H的寄存器,端口GPH的寄存器包括:
控制寄存器GPHCON、数据寄存器GPHDAT、上拉电阻寄存器GPHUP。
控制寄存器GPHCON:
设置端口H中每个GPIO引脚的功能。
GPHCON地址=0x56000070,复位值=0x00000000,可读可写。
数据寄存器GPHDAT:
存放端口H对应的数据。
当该端口选择