实验一 ARM串行口实验
一、实验目的
1.掌握ARM的串行口工作原理
2.学习编程实现ARM的UART通讯
3.掌握S3C2410寄存器配置方法。
二、预备知识
1.了解EWARM集成开发环境的基本功能
2.学习串口通讯的基本知识
3.熟悉S3C2410串口有关的寄存器
三、实验设备
1.2410s教学实验箱
2.ARM920T的JTAG仿真器
3.ARM EWARM5.3集成开发环境
4.串口连接线
四、实验内容
1.熟悉打开已有工程的步骤,掌握仿真调试的方法。
2.建立一个新工程,熟练掌握编译器和链接器的设置方法。
3.从串口输入字符串,将0~9数字在超级终端上连续显示,“Enter”键换行。
4.将第三步得到的字符转换成BCD码,限制在0~1023,用于控制直流电机。
五、实验步骤
1.创建新工程
(1)在D盘根目录创建一个newproj的目录,将ARM串口实验的5个文件夹和2个文件拷入,如上图所示,这5个文件夹是:inc(库文件)、init(初始化文件)、src(源文件)、startup(启动文件)和uhal(串口文件),这2个文件是:s3c2410_ram.icf和上从410_ram.mac
(2)运行IAR Embedded Workbench,执行file>new>workspace,工程名newproj1.ewp,保存在d:\newproj下,保存Workspace,和工程名一样,存在同一目录。此时编译,出现错误。
(3)有3个头文件做以下修改:#include “../inc/macro.h”,#include “../inc/drivers.h“,#include ”../uhal/isr.h“ General Option>Library configuration选Full,C/C++ Compiler>Code>Processor mode选ARM,编译通过。
(4)选CPU,选仿真器RDI、“Run to Main”打勾、选mac文件s3c2410_ram.mac,选链接器配置文件s3c2410_ram.icf,配置仿真器的动态链接库H-JTAG.dll,IAR 生成的out文件供RDI等仿真器使用,通过输出转换可生成bin文件,供vivi烧写Flash使用。
2.串口传送字符
将开发板重新启动同时按下键盘中任意键,这时在超级终端将会看到下面的提示,在 vivi>后键入 load flash ucos x 然后回车。然后打开超级终端上方的“传送”菜单并选择发送文件,点击浏览按键,查找并进入到编译生成的映象文件夹下,打开 system.bin.然后在发送文件对话框中的协议栏选择 Xmodem,最后选择发送。将接收串口数据的数组cl[1]改为cl[256],用cl[i]==0x0d 回车字符作为一帧结束的条件。
3.电机转动控制
(1)将“Exp4 电机转动控制实验” inc目录下的MotorCtrl.H 和src目录下的MotorCtrl.C拷到该工程相应目录,将MotorCtrl.C 添加到工程中。
(2)在main函数里包含以下头文件 #include “../inc/MotorCtrl.h”。
(3)在main函数里包含以下头文件 #include “../inc/macro.h” ,
#define MOTOR_COUNT 12657
(4)在Main函数里执行init_MotorPort();
(5)直流电机调试的函数是 SetPWM((setspeed -512)*MOTOR_COUNT/1024),setspeed是速度指令,取值范围0~1023。
六、程序流程及代码
1. 主程序流程见图6-1,子程序(发送数据和接收数据)见图6-2。
图6-1 主程序流程图
图6-2 发送及接收子程序流程(左发送、右接收)
2.具体程序(main.c)
#define U8 unsigned char
#include <string.h>
#include <stdio.h>
#include "../inc/MotorCtrl.h"
#include "..inc/macro.h"
#define MOTOR_COUNT 12657
#define TRUE 1
#define FALSE 0
#define rUTRSTAT0 (*(volatile unsigned *)0x50000010)
#define rUTRSTAT1 (*(volatile unsigned *)0x50004010)
#define WrUTXH0(ch) (*(volatile unsigned char *)0x50000020)=(unsigned char)(ch)
#define WrUTXH1(ch) (*(volatile unsigned char *)0x50004020)=(unsigned char)(ch)
#define RdURXH0() (*(volatile unsigned char *)0x50000024)
#define RdURXH1() (*(volatile unsigned char *)0x50004024)
void Uart_SendByten(int Uartnum, U8 data)
char Uart_Getchn(char* Revdata, int Uartnum, int timeout);
void ARMTargetInit(void);
void hudelay(int time);
int main(void)
{
char c1[256];
char err;
ARMTargetInit(); //开发板初始化
init_MotorPort();
while(1)
{ for(i=0;i<256;i++)
{err=Uart_Getchn(c1,0,0); //从串口采集数据
if(err==truth) //有数据传过来
{if(cl[i]!=0x0d) //没有回车
{ if((cl[i]>=0x30)&& (cl[i]<=0x39))
Uart_SendByten(0,c1[i]); //显示采集的数据
cl[i]=cl[i]-0x30;//转换为0~9的数据
setspeed=setspeed*10+cl[i]; //设定转速
}
else
{ Uart_SendByten(0,0x0a);//换行
Uart_SendByten(0,0x0d);//回车
break;
}
}
}
SetPWM((setspeed-512)*MOTOR_COUNT/1024);
}
/***************************************
发送数据子程序
***************************************/
void Uart_SendByten(int Uartnum, U8 data)//ok eric rong
{
if(Uartnum==0)
{ while(!(rUTRSTAT0 & 0x4)); //Wait until THR is empty.
hudelay(10);
WrUTXH0(data);
}
else
{ while(!(rUTRSTAT1 & 0x4)); //Wait until THR is empty.
hudelay(10);
WrUTXH1(data);
}
}
/***************************************
接收数据子程序
***************************************/
char Uart_Getchn(char* Revdata, int Uartnum, int timeout)
{if(Uartnum==0)
{while(!(rUTRSTAT0 & 0x1)); //Receive data read
*Revdata=RdURXH0();
return TRUE;
}
Else
{ while(!(rUTRSTAT1 & 0x1));//Receive data read
*Revdata=RdURXH1();
return TRUE;
}
}
七、实验思考
1.232串行通讯的数据格式是什么?
2.串行通讯最少需要几根线,分别如何连接?
答:至少需要三根线,分别为RXD、TXD、信号地。A的RXD接B的TXD,B的RXD接到A的TXD上,两者信号地相连,如下图所示。
3.ARM的串行口有几个,相应的寄存器是什么?
答:串行口有3个,相应的寄存器分别包括:线控制寄存器ULCONx、控制寄存器UCONx、状态寄存器UTRSTATx、发送寄存器UTXH、接收寄存器URXH、波特率因子寄存器UBRDIV、FIFO控制寄存器UFCONn、FIFO状态寄存器UFSTAT、错误状态寄存器UERSTAT。
4.用中断方式实现串口驱动
答:操作UART控制寄存器UCONx第8、9位来使能发送和接收中断。然后编写中断服务函数,来完成程序中读取A/D转换器的功能,函数体主要包括:中断标志位清零、读取A/D转换器、重新使能中断。
八、心得体会
通过本次的学习,我了解到ARM9嵌入式系统的体系架构和EWARM集成开发环境,重点学习了UART通讯,通过串口终端,可以清晰地看到程序执行的结果以及正确与否。刚开始写程序的时候不知道电机如何控制,究其原因是没有理解程序中SetPWM()函数的定义,到MotorCtrl.c文件中查看方知。
第二篇:ARM9实验报告
嵌入式系统设计实验报告
实验一 Linux命令的使用及演示程序的运行
一、实验目的:
掌握超级终端的使用,熟悉常用Linux命令的使用,并在Linux环境下运行演示程序。
二、实验内容:
1、 掌握超级终端的使用,自行建立超级终端并与ARM9开发系统连接;
2、 熟悉常用Linux命令,理解Linux文件系统;
3、 在Linux下运行系统提供的演示程序,观察程序运行情况。
三、实验设备及工具(包括软件调试工具)
硬件:ARM 嵌入式开发平台、PC 机、串口线。
软件:PC 机操作系统Win2000 或WinXP、超级终端通讯程序。
四、实验过程记录:
五、回答下列问题:
1、 列举常用Linux命令并解释功能及用法
2、 超级终端的作用是什么?如何建立一个超级终端
3、 请列举运行演示程序需要哪些步骤。
嵌入式系统设计实验报告
实验二 ADS1.2开发环境及绘图API函数实验
一、实验目的:
ADS1.2开发环境的使用。并进行绘图API函数的实验。
二、实验内容:
1、掌握ADS1.2开发环境和调试环境AXD的使用。
2、打开系统移植试验工程文件,并调试观察运行结果。
3、进一步掌握ADS1.2开发环境的使用及调试方法。
4、打开绘图API函数工程文件,调试并观察运行的结果;
5、修改该工程文件调试并观察运行的结果。
三、实验设备及工具(包括软件调试工具)
硬件:ARM 嵌入式开发平台、PC 机、用于ARM9开发平台的JTAG 仿真器、串口线。 软件:PC 机操作系统Win2000 或WinXP、ARM ADS1.2 集成开发环境、仿真器驱动程序。
四、实验过程记录:
五、回答下列问题:
1、UarmJtag.exe的作用是什么。在ARM9开发平台上使用时应该如何设置。
2、AXD是什么工具?在和UarmJtag配合使用时应该如何设置。
3、简述ADS1.2工程文件的结构,及建立一个工程的大致步骤。
4、什么是API函数,其作用如何?
5、AXD的使用大致有哪些步骤?如何设置及取消断点。
6、简单描述绘图API函数的使用。
嵌入式系统设计实验报告
综合应用
一、实验目的:
掌握ADS1.2开发环境的使用。并初步掌握开发简单项目的能力
二、实验内容:
1、以数字和图形两种方式显示实时时钟;
2、同时支持触摸屏和键盘修改时间;
3、可显示万年历及可对年月修改
4、支持闹钟
三、实验设备及工具(包括软件调试工具)
硬件:ARM 嵌入式开发平台、PC 机、用于ARM9开发平台的JTAG 仿真器、串口线。 软件:PC 机操作系统Win2000 或WinXP、ARM ADS1.2 集成开发环境、仿真器驱动程序。
四、实验过程记录:
五、回答下列问题:
1、请分别描述设计思路及程序框图,并另外形成项目报告。
嵌入式系统设计实验报告
综合应用
一、实验目的:
掌握ADS1.2开发环境的使用。并初步掌握开发简单项目的能力
二、实验内容:
开发基于UCOS-II及ARM9的“贪食蛇”游戏。
1、“蛇”可以屏幕上以现有坐标及方向前进;
2、通过键盘可以控制“蛇”的行进方向;
3、“蛇”触及屏幕边框或设定的范围边界则游戏结束;
4、“蛇”可以吃掉在设定范围内随机产生的点,并得分 5、可以计算“蛇”吃掉所有点的时间
6、有多个关口
7、可以累计成绩
三、实验设备及工具(包括软件调试工具)
硬件:ARM 嵌入式开发平台、PC 机、用于ARM9开发平台的JTAG 仿真器、串口线。 软件:PC 机操作系统Win2000 或WinXP、ARM ADS1.2 集成开发环境、仿真器驱动程序。
四、实验过程记录:
五、回答下列问题:
1、请分别描述设计思路及程序框图,并另外形成项目报告。
嵌入式系统设计实验报告
综合应用
一、实验目的:
掌握ADS1.2开发环境的使用。并初步掌握开发简单项目的能力
二、实验内容:
开发基于UCOS-II及ARM9的“贪食蛇”游戏(按照以下关键点评分)
1、“蛇”可以屏幕上以现有坐标及方向前进;
2、通过键盘可以控制“蛇”的行进方向;
3、“蛇”触及屏幕边框或设定的范围边界则游戏结束;
4、“蛇”可以吃掉在设定范围内随机产生的点,吃完以后身体加长并得分 5、可以计算“蛇”吃掉所有点的时间
6、有多个关口
7、可以累计成绩
三、实验设备及工具(包括软件调试工具)
硬件:ARM 嵌入式开发平台、PC 机、用于ARM9开发平台的JTAG 仿真器、串口线。 软件:PC 机操作系统Win2000 或WinXP、ARM ADS1.2 集成开发环境、仿真器驱动程序。
四、实验过程记录:
五、回答下列问题:
1、请分别描述设计思路及程序框图,并另外形成项目报告。
嵌入式系统设计实验报告
综合应用
一、实验目的:
掌握ADS1.2开发环境的使用。并初步掌握开发简单项目的能力
二、实验内容:
开发基于UCOS-II及ARM9的“弹球”游戏(按照以下关键点评分)
1、球板位于屏幕下方,可左右移动;
2、通过键盘可以控制球拍的移动;
3、“球”触及屏幕边框或设定的范围边界会按照物理规律反弹;
4、“球”碰到屏幕下边框则游戏结束。 5、坚持一分钟则过一关,新的一关“球”将加快运动。
6、有多个关口
7、可以累计成绩
三、实验设备及工具(包括软件调试工具)
硬件:ARM 嵌入式开发平台、PC 机、用于ARM9开发平台的JTAG 仿真器、串口线。 软件:PC 机操作系统Win2000 或WinXP、ARM ADS1.2 集成开发环境、仿真器驱动程序。
四、实验过程记录:
五、回答下列问题:
1、请分别描述设计思路及程序框图,并另外形成项目报告。