ARM的串行口实验报告.docx
- 文档编号:30409751
- 上传时间:2023-08-14
- 格式:DOCX
- 页数:9
- 大小:415.18KB
ARM的串行口实验报告.docx
《ARM的串行口实验报告.docx》由会员分享,可在线阅读,更多相关《ARM的串行口实验报告.docx(9页珍藏版)》请在冰豆网上搜索。
ARM的串行口实验报告
ARM的串行口实验报告
班级:
电信091
学号:
2121
姓名:
指导教师:
陶福寿
日期:
2011年10月12日
ARM的串行口实验
一、实验目的
1.掌握ARM的串行口工作原理。
2.学习编程实现ARM的UART通讯。
3.掌握CPU利用串口通讯的方法。
二、实验内容
学习串行通讯原理,了解串行通讯控制器,阅读ARM芯片文档,掌握ARM的UART相关寄存器的功能,熟悉ARM系统硬件的UART相关接口。
编程实现ARM和计算机实现串行通讯:
ARM监视串行口,将接收到的字符再发送给串口(计算机与开发板是通过超级终端通讯的),即按PC键盘通过超级终端发送数据,开发板将接收到的数据再返送给PC,在超级终端上显示。
三、预备知识
1、用EWARM集成开发环境,编写和调试程序的基本过程。
2、ARM应用程序的框架结构。
3、了解串行总线
四、实验设备及工具
硬件:
ARM嵌入式开发平台、PC机Pentium100以上、用于ARM920T的JTAG仿真器、串口线。
软件:
PC机操作系统Win2000或WinXP、EWARM集成开发环境、仿真器驱动程序、超级终端通讯程序。
五、实验原理及说明
异步串行I/O
异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。
数据的各不同位可以分时使用同一传输通道,因此串行I/O可以减少信号连线,最少用一对线即可进行。
接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。
为了恢复发送的信息,双方必须协调工作。
在微型计算机中大量使用异步串行I/O方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。
但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。
六、实验步骤
1.编写串口驱动函数
2.在主函数中实现将从串口0接收到的数据发送到串口0():
3.启动H-JTAG仿真器并进行初始化配置。
4.启动EWARM新建工程,将“Exp1ARM串口实验”中的文件添加到工程中并调试运行
七、思考题
1.232串行通讯的数据格式是什么
答:
开始前,线路处于空闲状态,送出连续“1”。
传送开始时首先发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编码数据。
每个字符的数据位长可以约定为5位、6位、7位或8位,一般采用ASCII编码。
后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。
也可以约定不要奇偶校验,这样就取消奇偶校验位。
最后是表示停止位的“1”信号,这个停止位可以约定持续1位、位或2位的时间宽度。
至此一个字符传送完毕,线路又进入空闲,持续为“1”。
经过一段随机的时间后,下一个字符开始传送才又发出起始位。
每一个数据位的宽度等于传送波特率的倒数。
微机异步串行通信中,常用的波特率为50,95,110,150,300,600,1200,2400,4800,9600等。
接收方按约定的格式接收数据,并进行检查,可以查出以下三种错误:
1)奇偶错:
在约定奇偶检查的情况下,接收到的字符奇偶状态和约定不符。
2)帧格式错:
一个字符从起始位到停止位的总位数不对。
3)溢出错:
若先接收的字符尚未被微机读取,后面的字符又传送过来,则产生溢出错。
每一种错误都会给出相应的出错信息,提示用户处理。
2.串行通讯最少需要几根线,分别如何连接
答:
TXD/RXD是一对数据线,TXD称发送数据输出,RXD称接收数据输入。
当两台微机以
全双工方式直接通信(无MODEM方式)时,双方的这两根线应交叉联接(扭接)。
所有的信号都要通过信号地线构成耦合回路。
通信线有以上三条(TXD、RXD和信号地)就能工作了。
其余信号主要用于双方设备通信过程中的联络(握手信号),而且有些信号仅用于和MODEM的联络。
若采取微型机对微型机直接通信,且双方可直接对异步串行通信电路芯片编程,若设置成不要任何联络信号,则其它线都可不接。
有时在通信线的同一端将相关信号短接以“自握手”方式满足联络要求。
3.ARM的串行口有几个,相应的寄存器是什么
答:
ARM自带三个UART端口,每个UART通道都有16字节的FIFO(先入先出寄存器)用于接受和发送。
用系统时钟最大波特率可达,如果用外部时钟(UCLK)UART可以以更高的波特率运行。
UART线控制寄存器包括ULCON0,ULCON1和ULCON2,主要用来选择每帧数据位数、停止位数,奇偶校验模式及是否使用红外模式。
UART控制寄存器包括UCON0,UCON1andUCON2,主要用来选择时钟,接收和发送中断类型(即电平还是脉冲触发类型),接收超时使能,接收错误状态中断使能,回环模式,发送接收模式等。
UART错误状态寄存器包括UERSTAT0,UERSTAT1andUERSTAT2,此状态寄存器的相关位表明是否有帧错误或溢出错误发生。
UART模块中有三个接收/发送状态寄存器,包括UTRSTAT0,UTRSTAT1和UTRSTAT2。
在UART模块中有3个UART发送缓冲寄存器,包括UTXH0,UTXH1和UTXH2,UTXHn有8位发送数据。
在UART模块中有3个UART接收缓冲寄存器,包括URXH0,URXH1和URXH2,URXHn有8位接收数据。
UART包括三个波特率因子寄存器UBRDIV0,UBRDIV1andUBRDIV2,存储在波特率因子寄存器(UBRDIVn)中的值决定串口发送和接收的时钟数率(波特率)
4.用中断方式实现串口驱动。
答:
/***************************************************************************\
Copyright(c)2004-2007,Allrightsreserved.
bythreewter#说明:
Cmain函数,ucos-ii初始化等定义
----------------------------------Bug--------------------------------------
----------------------------------TODOlist--------------------------------------
----------------------------------修正--------------------------------------
2004-5-12创建
\***************************************************************************/
/ucos-ii/"/*uC/OSinterface*/
/ucos-ii/add/"
/inc/"
/inc/sys/"
/src/gui/"
#defineU8unsignedchar
#include<>
#include<>
#defineTRUE1
#defineFALSE0
#pragmaimport(__use_no_semihosting_swi)
hudelay(10);
WrUTXH0(data);
}
else
{
while(!
(rUTRSTAT1&0x4));
hudelay(10);
WrUTXH1(data);
}
}
charUart_Getchn(char*Revdata,intUartnum,inttimeout)
{
if(Uartnum==0){
while(!
(rUTRSTAT0&0x1));//Receivedataread
*Revdata=RdURXH0();
returnTRUE;
}
else{
while(!
(rUTRSTAT1&0x1));//Receivedataread
*Revdata=RdURXH1();
returnTRUE;
}
}
程序中划线部分使我们的程序。
保证的了只有在连续输入abc,时,超级终端上才产生输出abc。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 串行口 实验 报告