2023年12月24日发(作者:)

实验2 S3C2410GPIO控制实验

一、 实验目的

1.

2.

3.

4.

熟悉ADS1.2 开发环境,正确使用仿真调试电缆进行编译、下载、调试。

了解S3C2410 的通用I/O 接口,

掌握I/0 功能的复用并熟练的配置,

对相应I/0接口进行编程实验,控制实验箱LED 灯点亮。

二、 实验设备

硬件:UP-TECH S2410/P270 DVP 嵌入式实验平台、PC 机Pentium 500 以上, 硬盘10G 以上。

软件:PC 机操作系统REDHAT LINUX 9.0+超级终端(或X-shell)+ARM-LINUX 开发环境。

三、 预备知识

S3C2410 CPU 共有117个多功能复用输入输出口,分为8组端口:

 4个16位的I/O端口 (PORT C、PORT D、PORT E、PORT G)

 2个11位的I/O端口 (PORT B 和PORT H)

 1个8位的I/O端口(PORT F)

 1个23位的I/O端口(PORT A)

这些通用的GPI/O接口,是可配置的, PORTA除功能口外,它们仅用作输出使用,剩下的PORTB、PORTC、PORTD、PORTE、PORTF、PORTG均可作为输入输出口使用。

配置这些端口,是通过一些寄存器来实现的,这些寄存器均有各自的地址,位长32位。往该地址中写入相应的数据,即可实现功能及数据配置。

GPACON (0x56000000) //Port A control

GPADAT (0x56000004) //Port A data

GPBCON (0x56000010) //Port B control

GPBDAT (0x56000014) //Port B data

GPBUP (0x56000018) //Pull-up control B

GPCCON (0x56000020) //Port C control

GPCDAT (0x56000024) //Port C data

GPCUP (0x56000028) //Pull-up control C

GPDCON (0x56000030) //Port D control

GPDDAT (0x56000034) //Port D data

GPDUP (0x56000038) //Pull-up control D

GPECON (0x56000040) //Port E control

GPEDAT (0x56000044) //Port E data

GPEUP (0x56000048) //Pull-up control E

GPFCON (0x56000050) //Port F control

GPFDAT (0x56000054) //Port F data

GPFUP (0x56000058) //Pull-up control F

GPGCON (0x56000060) //Port G control

GPGDAT (0x56000064) //Port G data

GPGUP (0x56000068) //Pull-up control G

GPHCON (0x56000070) //Port H control

GPHDAT (0x56000074) //Port H data

GPHUP (0x56000078) //Pull-up control H

现用C口举例说明。

也就是说,在地址0x56000020中,给32位的每一位赋值,那么,在CPU的管脚上就定义了管脚的功能值。当C口某管脚配置成输入端口,则在GPCDAT对应的地址中的对应位上,得到1,则该管脚的输入为高电平,得到0,则该管脚的输入为低电平。当C口某管脚配置成输出端口,则在GPGDAT对应的地址中的对应位上,写入1,则该管脚输出为高电平,写入0,则该管脚输出为低电平。若配置为功能管脚,则该管脚变成具体的功能脚。

四、 实验原理

1. 实验平台中LED灯的连接原理图

2. 对LED灯控制的程序如下:

void ARMTargetInit(void);

void hudelay(int time);

int main(void)

{

int flag, i;

ARMTargetInit();

while(1){

if(flag==0) {

for(i=0;i<1000000;i++); //延时

rGPCCON = rGPCCON & 0xffff03ff | 0x00005700;

rGPCDAT = rGPCDAT & 0xff1f | 0xffff;

for(i=0;i<1000000;i++); //延时

flag = 1;

} else {

for(i=0;i<1000000;i++); //延时

rGPCCON = rGPCCON & 0xffff03ff | 0x00005700;

rGPCDAT = rGPCDAT & 0xff1f | 0xff1f;

}

}

}

for(i=0;i<1000000;i++); //延时

flag = 0;

五、 实验步骤

1.本实验使用UP-TECH S2410/P270 DVP 嵌入式实验平台,将J-Link一端20P连接UP-CUP2410型平台底板ARM-JTAG20插槽当中,另一端通过USB从口线连接PC机USB口。

2.将串口线一端连接到PC机端串口,另一端连接到UP-CUP2410型平台串口0(RS232-0即开发板上方左侧的串口)上。

3.打开XShell,配置串口的属性(如COM1),配置波特率为115200,校验位无,数据位为8,停止位为1,数据控制流为无;检查连接是否可靠,可靠后,接入电源线,系统上电,同时按住“空格”键,进入VIVI状态。

a) 双击运行Xshell

b) 点击上图箭头所指图标,新建会话,Name 栏中随便填写,Method 栏中选择SERIAL,之后点击红色线框内的setup 项,选择波特率为115200,确定即可。

c) 正常会出现如下窗口,我们点击红色线框内的connect。

a) 现在你已经可以使用xshell 与实验箱进行交互了。

b) 打开实验箱电源,同时按下空格键,使系统启动停留在vivi引导阶段。

4.安装ADS1.2

双击ADS1.2安装程序:

点击next:

点击yes:

点击next:

选择典型安装,点击next:

点击next:

点击next:

点击next:

等待安装到100%后,出现ARM License安装界面:

点击下一步:

选择Install License,点击下一步:

点击Browse选择License File,选择源安装目录下(就是与ADS1.2安装程序同级目录下)的文件:

点击打开:

点击下一步:

点击下一步:

点击完成:

点击Finish,ADS1.2软件安装完成。

5. 打开ADS1.2软件(开始->所有程序-> ARM Developer Suite v1.2->

CodeWarrior for ARM Developer Suite):

6. 打开工程实验2 ,点击File—>open:

7. 选择工程存放路径:

点击打开,打开工程:

8. 清除一下已经生成的目标文件,避免路径不对,编译报错。点击project->

remove object code ,出现下图,点击All Targets:

9. 编译工程,点击project->make:

编译之后出现如下窗口,只要没有error就可以,warning可以忽略:

6.点击debug,或者project->debug(注意:这一步之前,一定要连接好JLINK仿真器到我们的实验平台,串口有输出,且处于vivi下,实验平台JLINK接口下方的跳线跳接到2-3模式)

7.点击debug后,调用ADS自带的AXD调试器:

8.选择Options->configure target,出现下图:

9.点击Add,浏览到Jlink的动态库文件(此文件在JLINK驱动安装目录下),选中

点击打开,出现下图:

可以看到JLink驱动被添加进来了,点击OK:

这时可以看到JLink识别到了我们的CPU。

10.配置JLink,点击configuration:

选择flash,将Enable flash programming选项选中:

点击确定。

11.运行程序,在AXD 空白中出现了汇编的代码,这是运行的第一段汇编代码,在文件startup.s,若找不到这个文件可浏览到工程目录下startup/startup.s。

点击运行,主窗口出现运行到主函数的界面。

再次点击运行,可以看到三盏LED同时闪烁现象:

12.结束时,选择暂停按钮,然后关闭AXD窗口,也可以单步调试step。

六、 实验思考

1. 试改写程序,控制LED灯双闪。

2. 试改写程序,完成led灯以二进制累加形式点亮。