安徽工业大学嵌入式实验报告

更新时间:2023-10-21 06:22:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《嵌入式系统实验报告》

指导教师:陆勤

姓名:程少锋

学号:139074366

班级:物联网131班

实验一B 熟悉实验开发环境

一、实验目的

熟悉ADS1.2 开发环境,学会ARM 仿真器的使用。使用ADS 编译、下载、调试并跟踪一段已有的程序,了解嵌入式开发的基本思想和过程。

二、实验内容

本次实验使用ADS 集成开发环境。新建一个简单的工程文件,并编译这个工程文件。学习ARM 仿真器的使用和开发环境的设置。下载已经编译好的文件到嵌入式控制器中运行。学会在程序中设置断点,观察系统内存和变量,为调试应用程序打下基础。

三、预备知识

C 语言的基础知识、程序调试的基础知识和方法。

四、实验设备及工具(包括软件调试工具)

硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以 上、串口线。

软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发 环境、仿真器驱动程序、超级终端通讯程序。

五、实验步骤

1)建立工程

(1)运行ADS1.2 集成开发环境(CodeWarrior for ARM Developer Suite)。选择File|New…菜单,在对话框中选择Project,如图1B-1 所示,新建一个工程文件。图中示例的工程名为Exp6.mcp。点set…按钮可为该工程选择路径如图1B-2 所示,选中CreatFolder 选项后将以图1B-1 中的ProjectName 或图1B-2 中的文件名为名创建目录,这样可以将所有与该工程相关的文件放到该工程目录下,便于管理工程。

设置完成后,可以将该新建的空工程文件作为模板保存以便以后使用。将工程文件名改为44B0 ARM

Executable.mcp。然后在ADS1.2 软件安装目录下的Stationery 目录下新建名为44B0 ARM Executable Image 的模板目录,再将刚设置完的44B0 ARM Executable.mcp工程模板文件存放到该目录下即可。这样以后新建工程的时候就能看到以44B0 ARM Executable Image 为名字的模板了。新建工程后,可以执行菜单Project | Add Files 把和工程相关的所有文件包括init

和startup 子目录加入到工程中。ADS1.2 不能自动按文件类别对这些文件进行分类,需要的话用户可以执行菜单Project | Create Group 创建文件组,然后分别将不同类的文件加入到不同的组,以方便管理。如图1B-12 所示。更为简单的办法是,在新建工程时ADS 创建了和工程同名的目录,在该目录下按类别创建子目录并存放工程文件。选中所有目录拖动到任务栏上的ADS 任务条上,不要松开鼠标当ADS 窗口恢复后再拖动到工程文件窗口,松开鼠标。这样ADS 将以子目录名建立同名文件组并以此对文件分类。

双击Main.c 打开该文件,可以看到Main()函数的内容,可以发现ADS 的文本编辑器

已经有了很大的改善,文本按语法分颜色显示,读者可以根据喜好在Edit 菜单下的Preferences窗口中进行设置。并可以很好的支持中文注释。

2)进行程序的在线仿真、调试

(1)回到工程窗口选中Debug 版本,执行菜单Project | Make 对工程进行编译连接。在出现的错误/警告窗口中选择某错误/警告信息,ADS 会自动打开相应源文件并用箭头指向出错的文本行。如果某个源文件被修改,重新编译时ADS 会自动同步各文件 的日期信息。

(2)在ADS 中执行菜单Project | Debug 启动ADS1.2 的调试工具AXD。

(5)等待程序装载完毕以后,通过Execute | Go 菜单以及Execute | Stop(或者工具栏中的相应按钮)运行或暂停程序。程序暂停后在窗口中将显示出程序暂停的位置。

(6)通过Execute | Step 菜单(或者工具栏中的相应按钮)可以单步运行程序。也可以使用Step In、Step Out 菜单命令进入或者跳出函数的调用。Run To Cursor 命令运行到光标位置。

(7)程序停止后可以通过Processor Views | Sources 菜单查看源文件,并可在适当位置 按F9 设置端点。

(8)使用在Processor View 菜单下的Registers、Variables 和Memory 命令可以查看工作寄存器或者内存变量。读者可以逐一地尝试,为以后调试程序打下基础。

【注意事项】在进行调试时在 ADS 中必须选择当前工程的 Debug 版本,如果选择 Release 版本则无

法正常调试程序。但在调试通过后就必须选择 Release 版本进行编译连接并将生产的 system.bin 文件复制到开发板的 Flash 中。将开发板上的 Flash 激活并使 Windows 认其为一个U盘的操作在下节中描述。

实验一C:超级终端设置及BIOS 功能使用

1、运行Windows 系统下的超级终端(HyperTerminal)应用程序,新建一个通信终端。如果要求输入区号、电话号码等信息请随意输入,出现如图1C-1 所示对话框时,为所建超级终端取名为arm,可以为其选一个图标。单击“确定”按钮。

3、完成新建超级终端的设置以后,可以选择超级终端文件菜单中的保存,将当前设置

保存为一个特定超级终端到桌面上,以备后用。用串口线将PC 机串口和平台UART0 正确连接后,就可以在超级终端上看到程序输出的信息了,比如本实验的“Hello world!”。

4、启动开发板,按住开发板上键盘的任意按键,使开发板进入BIOS 设置状态。

5、该画面上提示了该BIOS 的版本等信息。Shell Menu 是平台的检测菜单,每个条目的最左边字母是该功能的快捷键,按PC 机键盘相应键将执行对应功能。注意操作时保持超级终端处于激活状态,并且PC 机键盘必须为小写。 7、按PC 键盘的u 键(要使超级终端处于活动状态),这时超级终端上会显示所示的信息

8、这时,在“我的电脑”中可以发现多了一个“可移动磁盘”,这就是开发板的海量存储器16M 非线性Flash。开发板就像一个U 盘,可以通过“我的电脑”进行操作。把上两节内容中生成的system.bin 文件通过USB 下载到嵌入式开发板中,复位系统,运行并检查输出结果。

【注意事项】system.bin 文件是系统通过BIOS引导以后,装入内存中运行的默认文件名。所以上文中对工程的设置都使用该文件名作为编译最终文件。SDT 环境中,system.bin 文件 产生在工程路径下的 Debug 和 Release 目录下;ADS 环境中,该文件产生在工程路径ProjectName_Data\\Debug 和 Release 目录下。建议将Release下的 system.bin 文件拷贝到U盘。

实验二 ARM串口实验

一、实验目的

1.掌握ARM 的串行口工作原理。

2.学习编程实现ARM 的UART 通讯。 3.掌握CPU 利用串口通讯的方法。

二、实验内容

学习串行通讯原理,了解串行通讯控制器,阅读ARM 芯片文档,掌握ARM 的UART相关寄存器的功能,熟悉ARM 系统硬件的UART 相关接口。编程实现ARM 和计算机实现串行通讯:ARM 监视串行口,将接收到的字符再发送给串口(计算机与开发板是通过超级终端通讯的),即按PC 键盘通过超级终端发送数据,开发板将接收到的数据再返送给PC,在超级终端上显示。

三、预备知识

1、用ARM SDT 2.5 或ADS1.2 集成开发环境,编写和调试程序的基本过程。 2、ARM 应用程序的框架结构。 3、了解串行总线

四、实验设备及工具

硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以上、串口线。

软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发环境、仿真器驱动程序、超级终端通讯程序。

五、实验原理及说明

1.异步串行I/O

异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。数据的各不同位可以分时使用同一传输通道,因此串行I/O 可以减少信号连线,最少用一对线即可进行。接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。为了恢复发送的信息,双方必须协调工作。在微型计算机中大量使用异步串行I/O 方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。

给出异步串行通信中一个字符的传送格式。开始前,线路处于空闲状态,送出连续“1”。传送开始时首先发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编码数据。每个字符的数据位长可以约定为5 位、6 位、7 位或8 位,一般采用ASCII 编码。后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。也可以约定不要奇偶校验,这样就取消奇偶校验位。最后是表示停止位的“1”信号,这个停止位可以约定持续1 位、1.5 位或2 位的时间宽度。至此一个字符传送完毕,线路又进入空闲,持续为“1”。经过一段随机的时间后,下一个字符开始传送才又发出起始位。每一个数据位的宽度等于传送波特率的倒数。微机异步串行通信中,常用的波特率为50,95,110,150,300,600,1200,2400,4800,9600 等。 接收方按约定的格式接收数据,并进行检查,可以查出以下三种错误:

1)奇偶错:在约定奇偶检查的情况下,接收到的字符奇偶状态和约定不符。 2)帧格式错:一个字符从起始位到停止位的总位数不对。

3)溢出错:若先接收的字符尚未被微机读取,后面的字符又传送过来,则产生溢出错。 每一种错误都会给出相应的出错信息,提示用户处理。

2.串行接口的物理层标准

六、实验步骤

1.新建工程,将“Exp2 ARM 串口实验”中的文件添加到工程中,这些是启动时所需 要的文件。

2.定义与UART 有关的各个寄存器地址和一些特殊的位命令。 3.编写串口驱动函数(MyUart.c)

4.在主函数中实现将从串口0 接收到的数据发送到串口0(Main.c):

七、问题讨论

【1】232串行通讯的数据格式是什么

RS-232属于“异步传输”,在传送数据时,并不需要另外使用一条传输线来传送同步信号,不过必须在每一组数据的前后都加上同步信号,把同步信号与数据混和之后,使用同一条传输线来传输。从低位到高位的一帧数据格式为: ---------------------------------------------------------------------------------------

起始位(Start)+数据位(Data)+奇偶校验位(Parity)+停止位(Stop)

----------------------------------------------------------------------------------------

其中起始位固定为一个比特,停止位则可以是1、1.5或者是2比特(传送与接受一致),数据位可以设置为7、8或者9,奇偶校验位可以设置为无(N)、奇(O)或者偶(E),奇偶校验位可以使用数据中的比特。

【2】串行通讯最少有几根线,分别如何连接

最少2根线,一个接收一个发送,电脑端9针接口,2接收(RXD),3发送端(TXD),最好再加一个5接地端(GND)

【3】ARM的串行口有几个,相应的寄存器是什么?

ARM有三个UART端口,寄存器有:

(1) UART线性控制寄存器(ULCONn) (2) UART控制寄存器(UCONn) (3) UART FIFO控制寄存器(UFCONn) (4) UART MODEM控制寄存器(UMCONn) (5) UART接收发送状态寄存器(UTRSTATn) (6) UART错误状态寄存器(UERSTATn) (7) UART FIFO状态寄存器(UFSTATn) (8) UART MODEM状态寄存器(UMSTATn) (9) UART发送缓存寄存器(UTXHn) (10) UART接收缓存寄存器(URXHn) (11) UART波特率除数寄存器(UBRDIVn)

实验三 ARM的A/D转换实验

一、实验目的

1.熟悉ARM 本身自带的八路十位A/D 控制器及相应寄存器。 2.编程实现ARM 系统的A/D 功能。

3.掌握带有A/D 的CPU 编程实现A/D 功能的主要方法。

二、实验内容

学习A/D 接口原理,了解实现A/D 系统对于系统的软件和硬件要求。阅读ARM 芯片文档,掌握ARM 的A/D 相关寄存器的功能,熟悉ARM 系统硬件的A/D 相关接口。利用外部模拟信号编程实现ARM 循环采集全部前4 路通道,并且在超级终端上显示。

三、预备知识

1、用ARM SDT 2.5 或ADS1.2 集成开发环境,编写和调试程序的基本过程。 2、ARM 应用程序的框架结构。

3、能够自己完成在LCD 上显示指定参量。

四、实验设备及工具

硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以上、模拟电压信号源。 软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发环境、仿真器驱动程序、超级终端通讯程序 1.A/D 转换器

A/D 转换器是模拟信号源和CPU 之间联系的接口,它的任务是将连续变化的模拟信号

转换为数字信号,以便计算机和数字系统进行处理、存储、控制和显示。在工业控制和数据 采集及许多其他领域中,A/D 转换是不可缺少的。

A/D 转换器有以下类型:逐位比较型、积分型、计数型、并行比较型、电压-频率型, 主要应根据使用场合的具体要求,按照转换速度、精度、价格、功能以及接口条件等因素来 决定选择何种类型。

3.ARM 自带的十位A/D 转换器

ARM S3C440BX 芯片自带一个8路10 位A/D 转换器,该转换器可以通过软件设置为Sleep 摸式,可以节电减少功率损失,最大转换率为500K,非线性度为正负1位,其转换时间可以通过下式计算:如果系统时钟为66MHz,比例值为9,则为66MHz/2 (9+1)/16 (完成转换至少需要16 个时钟周期)=205.25KHz(相当于4.85us)ARM 芯片与A/D 功能有关的引脚为以下几个,其中AIN[7:0]为8 路模拟采集通道,AREFT 为参考正电压,AREFB 为参考负电压,AVCOM 为模拟共电压。

4.AD 转换器在开发平台的接法如下: 即前四路通过分压电位器接到2.5v 电源上。

六、实验步骤

1.新建工程,将“Exp5 ARM A/D 接口实验”种的文件添加到工程。 2.编写获取转换结果函数(main.c)3.主函数(main.c)

七、实验问题

【1】逐次逼近型的 A/D 转换器原理是什么?

转换过程:

(1)首先发出“启动信号”信号S。当S由高变低时,“逐次逼近寄存器SAR”清0,DAC输出Vo=0,“比较器”输出1。当S变为高电平时, “控制电路”使SAR开始工作。

(2)SAR首先产生8位数字量的一半,即10000000B,试探模拟量的Vi大小,若Vo>Vi,“控制电路”清除最高位,若Vo

(3)在最高位确定后,SAR又以对分搜索法确定次高位,即以低7位的一半y1000000B(y为已确定位) 试探模拟量Vi的大小。在bit6确定后,SAR以对分搜索法确定bit5位,即以低6位的一半yy100000B(y为已确定位) 试探模拟量Vi的大小。重复这一过程,直到最低位bit0被确定。

(4)在最低位bit0确定后,转换结束,“控制电路”发出“转换结束”信号EOC。该信号的下降沿把SAR的输出

锁存在“缓冲寄存器”里,从而得到数字量输出。 从转换过程可以看出: 启动信号为负脉冲有效。 转换结束信号为低电平。

【2】A/D 转换的重要指标包括哪些?

A/D 转换的重要指标有;分辨率、精度、转换时间、电源灵敏度、量程、输出逻辑电平和工作温度范围等。 【3】ARM 的 A/D 功能的相关寄存器有哪几个,对应的地址是什么?

与A/D相关的寄存器主要有A/D转换控制寄存器(ADCCON)和A/D转换数据寄存器ADCDAT0。ADCCON的地址为0x58000000,ADCDAT0的地址为0x5800000C。

【4】如何启动 ARM 开始转换 A/D,有几种方式?转换开始时 ARM 是如何知道转换哪路 通道的?如

何判断转换结束?

A/D转换的数据可以通过中断或查询的方式来访问,如果使用中断方式,全部的转换时间(从A/D转换的开始到数据读出)要更长。如果是查询方式,则要检测ADCCON[15](转换结束标志位)来确定从ADCDAT寄存器读取的数据是否是最新的转换数据。A/D转换开始的另一种方式是将ADCCON[1]置为1,这时只要有读转换数据的信号,A/D转换才会同步开始。转换开始时ARM 中的ADCCON寄存器的第5-3位表示模拟输入通道选择,可判断其值就可知哪路通道转换。通过测试ADCCON寄存器的第15位是否为1,就可判断转换是否结束。

实验四 GUI绘图实验

一、实验目的

学习使用嵌入式系统绘图的API 函数。理解绘图设备上下文(DC)在多任务操作系统中的作用。会使用绘图设备上下文(DC)在屏幕上绘制一个圆角矩形和一个圆。了解绘制动画防止闪烁的基本原理,可以实现无闪烁的动画。

二、实验内容

本次实验通过使用嵌入式系统的绘图API 函数,首先,在屏幕上绘制一个圆角矩形和一个整圆。然后,再在屏幕上无闪烁的绘制一个移动的正弦波。

三、预备知识

1、用ARM SDT 2.5 或ADS1.2 集成开发环境,编写和调试程序的基本过程。 2、基于uCOS-II 操作系统的应用程序的框架结构。

四、实验设备及工具(包括软件调试工具)

硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以上。

软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发环境、仿真器驱动程序、超级终端通讯程序

五、实验原理

请查阅附录API 函数,在Display.h 中定义了和绘图显示有关的数据类型和函数原型。在uCOS-II 系统环境下,绘图必须通过使用绘图设备上下文(DC)来实现。绘图设备上下文(DC)中包括了与绘图相关的信息,比如:画笔的宽度、绘图的原点等等。这样,在多任务系统中,不同的任务通过不同的绘图设备上下文(DC)绘图才不会互相影响。

与绘图设备上下文(DC)有关的函数有:initOSDC()用来初始化系统的DC,为DC 动态内存开辟空间;CreateDC()和DestoryDC(PDC pdc)分别用来创建和删除DC,前者返回所创建的DC 指针,后者则释放DC 的内存空间。 和绘图有关的函数有TextOut(),LineTo(),FillRect(),Circle(),ShowBmp()等常见的图形函数,用户可以查看附录API 函数显示部分,尝试使用这些函数。

在uCOS-II 操作系统中,液晶显示屏的刷新是通过Lcd_Fresh_Task 任务完成的,该任务是在系统附加任务初始化函数OSAddTask_Init()中定义的,该函数开辟了LCD 刷新任务,触摸屏任务,键盘任务等。绘图首先是在绘图缓冲区中完成的,然后系统自动(也可以通过设置绘图设备上下文参数,不让系统自动刷新)向Lcd_Fresh_Task 发送更新

消息。其流程图如图所示:

六、实验步骤

1、新建工程,将“Exp14 绘图的API 函数”中的文件加入工程。

2、编辑Main.c 文件,在Main_Task 任务中加入代码。使用操作系统的绘图API 函数, 绘制出如图所示的图形。

3、用ARM SDT 2.5 或ADS1.2 编译、下载并调试上述程序,检查运行结果。 4、在屏幕上无闪烁的绘制一个移动的正弦波。

5、用ARM SDT 2.5 或ADS1.2 编译、下载并调试上述程序,检查运行结果。

6、生成发行版本的.bin 文件,通过USB 下载到嵌入式开发板中,运行并检查输出结果。

七、注意事项

提示: 1)绘制整个圆可以用 Circle 函数,绘制直线用 LineTo 函数,绘制圆弧用 ArcTo 函 数。调试的过程中可以在每次调用绘图函数之后调用 OSTimeDly()函数,使系统更新显 示,输出到液晶屏上。 2)为方便绘图,可使用 SetDrawOrg 函数设置绘图的原点。 3)因为本次实验不用系统的字符显示,所以,可以去掉 Main()函数中 LoadFont() 函数,以节省系统启动的时间。 3、用 ARM SDT 2.5 或 ADS1.2 编译、下载并调试上述程序,检查运行结果。 4、在屏幕上无闪烁的绘制一个移动的正弦波。 提示: 1)绘制正弦波等有数学表达式的曲线时,可以根据平面几何的知识通过数学计算 得到曲线上点的坐标,然后用线段连起来构成整个曲线。两帧画面之间可以清屏擦掉原 来图形,然后重画新图形。 2)因为绘图需要使用 sin()函数,所以需要在 main.c 中加入#include 。 5、用 ARM SDT 2.5 或 ADS1.2 编译、下载并调试上述程序,检查运行结果。 6、生成发行版本的.bin 文件,通过 USB 下载到嵌入式开发板中,运行并检查输出结果。

实验五 系统的消息循环

一、实验目的

学习使用系统的消息循环。掌握如何通过系统的消息循环来响应键盘任务的消息,同时 学会使用图形模式下的液晶屏文字显示函数。

二、实验内容

本次实验将通过使用消息队列接收键盘任务发出的按键消息,并把对应按键的字符显示 在液晶屏和 PC 机的终端上。

三、预备知识

1、用 ARM SDT 2.5 或 ADS1.2 集成开发环境,编写和调试程序的基本过程。 2、基于 uCOS-II 操作系统的应用程序的框架结构。

3、操作系统的绘图 API 函数和绘图设备上下文(DC)的使用。

四、实验设备及工具(包括软件调试工具)

硬件:ARM 嵌入式开发平台、用于 ARM7TDMI 的 JTAG 仿真器、PC 机 Pentium100 以 上。

软件:PC 机操作系统 win98、Win2000 或 WinXP、ARM SDT 2.51 或 ADS1.2 集成开发 环境、仿真器驱动程序、超级终端通讯程序

五、实验原理

通常在多任务操作系统中,任务之间的通讯是通过发送消息来实现的。消息队列是

uCOS-II 操作系统的一种通信机制,它可以使一个任务或者中断服务程序向另一个任务发送 以指针方式定义的变量。uCOS-II 操作系统提供了若干对消息队列进行操作的函数,例如 OSQCreate(),OSQPend(),OSQPost()等,都定义在 OS_Q.C 中。但是,在将 uCOS-II 移植到 本 ARM 嵌入式开发平台时,对消息队列相关函数又作了提高,使得程序中对消息队列的使 用变得更加简单易行。请参考附录 API 函数系统消息部分,开发平台的消息队列相关函数定 义在 OSMessage.h 中。程序中可以用 OSCreateMessage()函数为某个控件创建消息,用 SendMessage()函数将该消息发送到消息队列中,用 WaitMessage()函数等待消息,用 DeleteMessage()函数删除消息。 消息的数据结构定义如下: typedef struct {

POS_Ctrl pOSCtrl; //消息所发到的窗口(控件),为 NULL 时指桌面 U32 Message; //消息类型 148

U32 WParam; //消息参数 U32 LParam; //消息参数 }OSMSG, *POSMSG;

下面是平台的基本消息类型定义: #define OSM_KEY 1 //键盘消息

#define OSM_TOUCH_SCREEN 2 //触摸屏消息 #define OSM_SERIAL 100 //串口收到数据的消息

#define OSM_LISTCTRL_SELCHANGE 1001 //列表框的选择被改变的消息 #define OSM_LISTCTRL_SELDBCLICK 1002 //列表框的选择双击消息 #define OSM_BUTTON_CLICK 1003 //单击按钮消息 下面是各基本消息类型的参数说明: Message WParam LParam

本文来源:https://www.bwwdw.com/article/81pf.html

Top