IO接口控制

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、实验目的

熟悉ARM芯片I/O口编程配置方法。

通过实验掌握ARM芯片的I/O口控制LED显示的方法。

二、实验原理及基本技术路线图(方框原理图)

S3C44B0X芯片上共有71个多功能的输入输出管脚,它们分为7组I/O端口。

●两个9位的输入/输出端口(端口E和F)

●两个8位的输入/输出端口(端口D和G)

●一个16位的输入/输出端口(端口C)

●一个10位的输出端口(端口A)

●一个11位的输出端口(端口B)

每组端口都可以通过软件配置寄存器来满足不同系统和设计的需要。在运行主程序之前,必须先对每一个用到的管脚的功能进行设置,如果某些管脚的复用功能没有使用,可以先将该管脚设置为I/O口。

1.S3C44B0X芯片和端口相关的寄存器有:

(1) 端口控制寄存器(PCONA-G)

在S3C44B0X里,大多数的引脚都是多功能引脚。因此,应当为每个引脚选择功能。端口控制寄存器(PCONn)决定了每一个引脚的功能。

(2) 端口数据寄存器(PDATA-G)

如果这些端口被设定为输出端口,输出数据可以被写入到PDATn的相应的位;如果被设定为输入端口,输入数据可以被读到PDATn的相应的位。

(3) 端口上拉寄存器(PUPC-G)

端口上拉寄存器控制着每一个端口组的上拉寄存器的使能端。当相应的位被设为0时,引脚接上拉电阻;当相应的位为1时,引脚不接上拉电阻。

(4) 外部中断控制寄存器(EXTINT)

8个外部中断可以用多种信号方式所请求。外部中断寄存器为外部中断设置了信号触发方法选择位,也设置了触发信号的极性选择位。外部中断请求信号触发的方法有以下几种:低电平触发、高电平触发、下降沿触发、上升沿触发、双沿触发。

8个外部中断寄存器的具体设置情况请详见I/O的特殊功能寄存器。

因为每个外部中断引脚都有一个数字滤波器,这让中断控制器能够识别长于3个时钟周期的请求信号。

在实验板上端口B的引脚PB9和PB10被设置为输出口,并且分别与LED1、LED2连接。

2.电路原理

如图3-3所示,发光二极管LED1和LED2的正极与S3C44B0X芯片的47脚VDD33连接,VDD33可以输出3.3V的电压,负极通过限流电阻R95、R96和S3C44B0X芯片的23脚(NGCS4)、24(NGCS5)脚连接。这两个管脚属于端口B,已经配置为输出口。通过向PDATB寄存器中相应的位写入0或1可以使管脚23、24输出低电平或高电平。当23、24管脚输出低电平时,LED点亮;当23、24管脚输出高电平时,LED熄灭。

三、所用仪器、材料(设备名称、型号、规格等)

Embest S3CEV40实验板

ARM软件模拟器

Microsoft XP 操作系统

PC机

四、实验方法、步骤

1. 准备实验环境。使用Embest仿真器连接目标板,使用Embest S3CEV40实验板附带的串口线连接实验板上的UART0和PC机的串口。

2. 在PC机上运行windows自带的超级终端串口通信程序(波特率115200、1个停止位、无校验位、无硬件流控制);或者使用其它串口通信程序。

3. 使用EmbestIDE通过Embest仿真器连接实验板,新建工程,编译链接通过后连接目标板,下载并运行。

4. 观察实验运行。

五、实验记录

实验源代码如下。

Main :

0x0c001a90 mov ip, sp

0x0c001a94 stmdb sp!, {fp, ip, lr, pc}

0x0c001a98 sub fp, ip, #4

0x0c001a9c bl 0xc00162c

0x0c001aa0 ldr r0, [pc, #8] ; 0xc001ab0

0x0c001aa4 bl 0xc0014c0

0x0c001aa8 bl 0xc0016bc

0x0c001aac b 0xc001aa8

0x0c001ab0 stceq 4, cr10, [r0], -#384

uhal_init_interrupts :

main :

0x0c001a70 mov ip, sp

0x0c001a74 stmdb sp!, {fp, ip, lr, pc}

0x0c001a78 sub fp, ip, #4

0x0c001a7c bl 0xc00162c

0x0c001a80 ldr r0, [pc, #8] ; 0xc001a90

0x0c001a84 bl 0xc0014c0

0x0c001a88 bl 0xc0016bc

0x0c001a8c b 0xc001a88

0x0c001a90 stceq 4, cr10, [r0], -#256

void led_test()

{

leds_off();

delay(3000);

// 1 on -> 2 on -> all on -> 2 off -> 1 off

led1_on();

led2_off();

delay(3000);

led1_off();

led2_on();

delay(3000);

led1_on();

led2_on();

delay(3000);

}

六、实验运行结果

通过观察,运行程序一,得到以下实验结果。

程序一:灯1亮→灯3亮→灯3灭→灯1亮→灯1灭

通过修改程序一,观察得到以下结果。

程序二:灯1、灯2 灭→灯1亮,灯2灭→灯1灭,灯2亮→灯1、灯2亮

七、实验体会

在本次实验中我熟悉ARM芯片I/O口编程配置方法,工程配置信息里边远程选项要用PowerIceArm7。也了解了能够通过ARM芯片的I/O口控制LED显示的方法。高低电平表示了二进制数,通过高低电平测试我们的实验结果是一个很好的办法。

相关文档
最新文档