嵌入式实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
实验成员:
金婷婷 0910210205
胡丽红0910210204
杨猛 0910210244
赖鹏飞 0910210230
一、实验目的
(1)掌握UART部件的使用与接口扩展方法;
(2)掌握嵌入式系统的仿真设计技术。
二、实验内容
本次实验利用电路仿真软件Proteus与嵌入式开发环境Keil for ARM进行嵌入式系统的仿真。在Proteus中进行嵌入式系统的UART接口硬件电路设计,并在Keil for ARM中完成串行通信程序的编写和编译,最后将编译成的可执行代码装载到嵌入式微处理器中进行电路的仿真运行。
三、预备知识
C语言的基础知识,Proteus与Keil for ARM软件的基本使用方法和设置。
四、实验设备
硬件:PC机(或笔记本电脑)
软件:Windows xp以上操作系统,Proteus 7.8以上版本,Keil for ARM 3.0以上版本。五、实验步骤
(1)在Proteus中建立嵌入式系统电路
图1.2.1 嵌入式系统原理图(2)在Keil for ARM中编写系统测试程序
测试程序源代码如下:
#include
#define CR 0x0D
char ledDown[]={"The LED is down!\n"};
char ledUp[]={"The LED is up!\n"};
int putchar (int ch) { /* 向串口输出一个字符*/ if (ch=='\n') { //发送回车符
while (!(U0LSR&0x20)); //等待发送完成
U0THR=CR;
}
while (!(U0LSR&0x20));
return (U0THR=ch);
}
void delay (void) { //延时函数
int i,j;
for(i=0;i<60000;i++)
for(j=0;j<10;j++) ;
}
void serialPuts(char *p)
{ /* 向串口输出字符串*/
while (*p!='\0'){
putchar(*p++);
}
}
int main (void) {
/* 开始初始化串口*/
PINSEL0=0x00000005; /* 设置引脚,开串口功能每个IO功能选择占2bit,0x00050000,
0101(pin8,pin9二进制)代表使能串口0*/
U0LCR=0x83; /* 8位数据,无效验,一个停止位*/
U0DLL=122; /* VPB 15MHz的时候波特率为9600 */
U0LCR=0x03; /* DLAB = 0 */
/* 结束初始化串口*/
IO0DIR = 0x000001<<5; /*将P0.5设置为输出*/
while (1)
{
IO0CLR=0x000001<<5;
serialPuts(ledUp); // 通过UART0进行串口通信,CPU把灯亮和暗的信息传递给
PC(这里用虚拟终端代替),并显示信息
delay();
IO0SET=0x000001<<5;
serialPuts(ledDown);
delay();
}
}
(3)下载调试
结果记录如图1.2.2所示。
图1.2.2 实验结果图
一开始,只设置了虚拟端的波特率为9600,没有设置CPU频率,导致出现乱码,如下图所示,后来调整CPU频率为15MHz,得到理想结果,另外,经过理论和实践发现,接入CPU的时钟频率对实验结果无任何影响。
注:在串行通信中,必须保证发送方和接收方的波特率一致,这样才能正常通信,因此调整芯片频率是为了保证CPU与虚拟端波特率一致,具体波特率计算方法查找芯片资料可以获得。
实验成员:
金婷婷 0910210205
胡丽红0910210204
杨猛 0910210244
赖鹏飞 0910210230
一、实验目的
了解在linux环境下对S3C2410芯片的8通道10位A/D的操作与控制。
二、实验内容
学习A/D接口原理,了解实现A/D系统对于系统的软件和硬件要求。
阅读ARM芯片文档,掌握ARM的A/D相关寄存器的功能,熟悉ARM系统硬件的A/D 相关接口。
三、预备知识
有C语言基础
掌握在Linux下常用编辑器的使用
掌握Makefile的编写和使用
掌握Linux下的程序编译与交叉编译过程。
四、实验设备
硬件:UP-NETARM2410-S 嵌入式实验平台,PC机。
软件:PC机操作系统REDHAT LINUX 9.0+ARM-LINUX开发环境。
五、实验步骤
(1)阅读理解源代码
(2)编译应用程序
(3)下载与调试
实验结果如下:
初始时,a0,a1,a2三个端口的对应的值如下图所示:
调节一号电位器后,a0端口数值变化,a1,a2数值基本不变,如下所示:
调节二号电位器后,a1端口数值变化,a0,a2数值基本不变,如下所示:
调节三号电位器后,a2端口数值变化,a0,a1数值基本不变,如下所示:
实验截图中,调节三号电位器后,a1端口值也发生了变化,可能是随机扰动所致。
注:在调节过程中要注意端口的电压值不会超过3.3V(最大值),另外此次实验前必须加载A/D驱动,否则得不到实验结果。加载驱动方式是到host/kernel-2410s/drivers/char/目录下找到s3c2410-exio.o,使用insmod命令进行加载