一、 实验目的
1.了解S3C2410的通用I/0接口
2.掌握I/0功能的复用并熟练的配置,进行编程实验
二、 实验内容
1.在实验箱的CPU 板上点亮LED 灯LED1、LED2,并轮流闪烁!
三、 实验设备
1.EL-ARM-860教学实验箱,PentiumII以上的PC机,仿真调试电缆。
2.PC操作系统WIN98或WIN2000或WINXP,ADS1.2集成开发环境,仿真调试驱动程序。
四、 实验原理
S3C2410 CPU共有117个多功能复用输入输出口,分为8组端口:
·4个16位的I/0端口(PORT C、PORT D、PORT E、PORT G)
·2个11位的I/0端口(PORT B和 PORT H)
·1个8位的I/0端口(PORT F)
·1个23位的I/0端口(PORT A)
这些通用的GPI/0接口,是可配置的,PORTA除功能口外,它们仅用作输出使用,剩下的 PORTB、PORTC、PORTD、PORTE、PORTF、PORTG均可作为输入输出口使用。
配置这些端口,是通过一些寄存器来实现的,这些寄存器均有各自的地址,位长 32位。
往该地址中写入相应的数据,即可实现功能及数据配置。
GPACON (Ox56000000)/ /Port A control
GPADAT (Ox56000004) //Port A data
GPBCON (Ox56000010)//Port B control
GPBDAT (Ox56000014)/ /Port B data
GPBUP(Ox56000018)//Pull-up control B
GPCCON (Ox56000020)/ /Port C control
GPCDAT (Ox56000024)/ /Port C data
GPCUP (Ox56000028)//Pull-up control c
GPDCON (Ox56000030)//Port D control
GPDDAT (Ox56000034) //Port D data
GPDUP (Ox56000038)//Pul1-up control D
GPECON (Ox56000040)//Port E control
GPEDAT (Ox56000044)//Port E data
GPEUP(Ox56000048)//Pul1-up control E
GPFCON (Ox56000050)//Port F control
GPFDAT (Ox56000054)/ /Port F data
GPFUP(Ox56000058)//Pull-up control F
GPGCON (Ox56000060)/ /Port G control
GPGDAT (Ox56000064)//Port G data
GPGUP (Ox56000068)//Pul1-up control G
GPHCON (Ox56000070)/ /Port H control
GPHDAT (Ox56000074)//Port H data
GPHUP (Ox56000078)//Pull-up control H
现用G口、H口举例说明。对于G口如表1、表2、表3,
表1
表2
也就是说,在地址Ox0x56000060中,给32位的每一位赋值,那么,在CPU的管脚上就定义了管脚的功能值。当G口某管脚配置成输出端口,则在 PDATG对应的地址中的对应位上,写入1,则该管脚输出为高电平,写入0,则该管脚输出为低电平。若配置为功能管脚,则该管脚变成具体的功能脚。
对于H口见表4、表5、表6、表7
表6
也就是说,在地址Ox56000070中,给32位的每一位赋值,那么,在CPU的管脚上就定义了管脚的功能值。当H口某管脚配置成输入端口,则在 GPHDAT对应的地址中的对应位上,得到1,则该管脚的输入为高电平,得到0,则该管脚的输入为低电平。当H口某管脚配置成输出端口,则在GPGDAT对应的地址中的对应位上,写入1,则该管脚输出为高电平,写入0,则该管脚输出为低电平。若配置为功能管脚,则该管脚变成具体的功能脚。其他端口配置请参见PDF文挡。
在程序中对GPI/0各寄存器的读写实现,是通过给宏赋值实现的。这些宏在2410addr.h中定义;具体如:。
#define rGPACON (* (volatile unsigned *)Ox56000000)(//Port A control
#define rGPADAT (*
1