关键词不能为空

当前您在: 主页 > 英语 >

ARM实验三 ARM的串行口实验

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-27 21:56
tags:

-

2021年2月27日发(作者:desire)


实验三


ARM


的串行口实验













一、实验目的


1


.掌握


ARM


的串行口工作原理 。



2


.学习编程实现


ARM



UART


通讯。



3


.掌握


CPU


利用串口通讯的方法。




二、实验内容



学习串行通讯原理,了 解串行通讯控制器,阅读


ARM


芯片文档,掌握


ARM



UART


相关寄存器 的功能,熟悉


ARM


系统硬件的


UAR T


相关接口。编程实现


ARM



计算机实现串行通讯:



ARM


监视串行口,将接收到的字符再发送给串口(计算机与开发板是通过超


级终端 通讯的)



即按


PC

< br>键盘通过超级终端发送数据,


开发板将接收到的数据再


返 送给


PC


,在超级终端上显示。




三、预备知识


1


.用


EWARM


集成开发环境, 编写和调试程序的基本过程。



2


.< /p>


ARM


应用程序的框架结构。



3


、了解串行总线。




四、实验设备及工具



硬件:


ARM


嵌入式开发平台、

PC



Pentium100


以上 、


用于


ARM920T



JTAG


仿真器、串口线。



软件:


PC


机操作系统


Win200 0



WinXP


EWARM


集成开发环境、仿真器驱动程


序、超级终端通讯 程序。




五、实验原理及说明



1


.异步串行


I



O


异步串行方式是将传输数据的每个字符一位接一位


(

< br>例如先低位、


后高位


)



传送。数据的各不同位可以分时使用同一传输通道,因此串行


I



O


可以减少信


号连 线,


最少用一对线即可进行。


接收方对于同一根线上一连串的数 字信号,



先要分割成位,再按位组成字符。为了恢复发送的信 息,双方必须协调工作。在


微型计算机中大量使用异步串行


I< /p>



O


方式,双方使用各自的时钟信号,而 且允


许时钟频率有一定误差,


因此实现较容易。


但是由于每个字符都要独立确定起始


和结束


(


即每个字符都要重新同步


)


,字符和字符间还可 能有长度不定的空闲时


间,因此效率较低。






2-1


串行通信字符格式





2-1


给出异步串行通信中一个字符的传送格式。开 始前,线路处于空闲


状态,送出连续“


1



。传送开始时首先发一个“0”作为起始位,然后出现在通


信线上的是字符的二进制编码数据。


每个字符的数据位长可以约定为

5


位、


6


位、

7


位或


8


位,一般采用

< p>
ASCII


编码。后面是奇偶校验位,根据约定,用奇偶校验


位将所传字符中为



1


”< /p>


的位数凑成奇数个或偶数个。


也可以约定不要奇偶校验,


这样就取消奇偶校验位。最后是表示停止位的“


1


”信号,这个停止位可以约定


持续


1


位、


1.5


位或


2

位的时间宽度。


至此一个字符传送完毕,


线路又进入空闲,


持续为“


1



。经过一段随机的时间后,下一个字符开始传送才又发出起始位。


每一个数据位的宽度等于传送波特率的倒数。微机异步串行通信中,常用的


波特率为


50



95



110



150



300



600

< br>,


1200



2400



4800



9600


等。



接收方按约定的格式接收数据, 并进行检查,可以查出以下三种错误:



1

)奇偶错:在约定奇偶检查的情况下,接收到的字符奇偶状态和约定不符。



2


)帧格式错:一个字符从起始位到停止位的总位数不对。

< p>


3


)溢出错:若先接收的字符尚未被微机读取, 后面的字符又传送过来,则产


生溢出错。



每一种错误都会给出相应的出错信息,提示用户处理。



2


.串行接口的物理层标准



通用的串行


I



O


接口有许多种,现仅就最常见的两种标准作简单介绍。



1



EIA RS



232C


< br>是

















(Elec tronic


industries


Association


Recoil-mended


Standard)


。它在一种


25


针接插件


(DB



2 5)


上定义


了串行通信的有关信号。


这 个标准后来被世界各国所接受并使用到计算机的


I


< p>
O


接口中。





信号连线



在实际异步串行通信中,并不要求用全部的


RS



232C


信号,许多


PC< /p>



XT



容机仅 用


15


针接插件


(DB



15)


来引出其异步串行


I



O


信号,而


PC


中更是大量


采用


9


针接插件


(DB



9)


来担当此任,


因此这里也不打算就


RS



232C


的全部信号


作详细解释。图


3-2


给出两台微机利用

RS



232C


接口通信的联线< /p>


(



MODEM)



我们按


DB


25


的引脚号标注各个信号。



下 面对图


3-2


中几个主要信号作简要说明。


保护地



通信线两端所接设备 的金属外壳通过此线相联。


当通信电缆使用屏


蔽线时,


常利用其外皮金属屏蔽网来实现。


由于各设备往往已通过电源线接通保< /p>


护地,


因此,


通信线中不必重复接此地线


(


图中用虚线表示


)

< br>。


例如使用


9


针插头

< p>
(DB



9)


的异步串行


I



O


接口就 没有引出保护地信号。



TXD



RXD

< br>是一对数据线,


TXD


称发送数据输出,


RXD


称接收数据输入。当


两台微机以全双工方式直接 通信


(



MODEM

< br>方式


)


时,


双方的这两根线应交 叉联接


(


扭接


)




信号地


所有的信号都要通过信号地线构成耦合回路。通信线有以上三条


(TXD

< p>


RXD


和信号地


)


就能工作了。其余信号主要用于双方设备通信过程中的联



(


握手信号


)



而且有些信号仅用于和


MODEM


的联络。< /p>


若采取微型机对微型机直


接通信,


且双方 可直接对异步串行通信电路芯片编程,


若设置成不要任何联络信


号,则其它线都可不接。有时在通信线的同一端将相关信号短接以“自握手”方


式满足联 络要求。这就是如图


2-2(a)


所示的情况。






2-2


实用


RS-232C


连线




RTS



CTS

< br>请求发送值号


RTS


是发送器输出的准备好信号。接收方 准备好后


送回清除发送信号


CTS


后,


发送数据开始进行,


在同一端将这两个信号短接就意

< p>
味着只要发送器准备好即可发送。



DCD < /p>


载波检测


(


又称接收线路信号检测


)



本意是


MODE M


检测到线路中的载波


信号后,通知终端准备接收数据的信号, 在没有接


MODEM


的情况下,也可以和


RTS



CTS


短接。



相对于


MODEM


而言,


微型机和终端机一样被称为数据终端


DTE(Data


Terminal


Equipment)


MODEM










DCE(Data


Communications


Equipment)



DTE



DCE< /p>


之间的连接不能像图


3-2


中有“扭接” 现象,而应该是


按接插件芯号,同名端对应相接。此处介绍的


R S



232C


的信号名称及信号流向< /p>


都是对


DTE


而言的。

< br>


DTR



DSR


数据终端准备好时发


DTR


信号,在收到数据通 信装置装备好


DSR


信号后,方可通信。图

3-2(a)


中将这一对信号以“自握手”方式短接。



R1


原意是在


MODEM


接收到电话交换机有效的拨号时,


使


RI


有效,


通知数据


终端准备传送。在无


MODEM


时也可和


DTR

相接。




3-2(b)


给出了无


MODEM


情况下,

< br>DTE



DTE


异步串行通信线 路的完整连接,


它不仅适用于微型机和微型机之间的通信,


还适 用于微型机和异步串行外部设备


(


如终端机、绘图仪、数字化仪 等


)


的连接。





2




信号电平规定



RS

< br>—


232C


规定了双极性的信号逻辑电平:



-3V



-25V


之间的电平表示逻辑“


1


< br>。



+3V


< br>+25V


之间的电平表示逻辑“


0





因此这是一套负逻辑定义。



以上标准 称为


EIA


电平。


PC



XT


系列使用的信号电平是


-12V



+12V


,符合

< p>
EIA


标准,但在计算机内部流动的信号都是


TT L


电平,因此这中间需要用电平转


换电路。常用芯片

< p>
MCl488



SN75150

< br>将


TTL


电平转换为


EIA


电平,


MCl489


SN75154



EIA


电平转换 为


TTL


电平。


PC

< br>/


XT


系列以这种方式进行串行通信时,


在波特率不高于


9600


的情况下,理论上通信线的长 度限制纽为


15


米。



2



20mA


电流环



20mA


电流环并没有形成一套完整的标准,


主要是将数字信号的表示方法不使


用电子的高低,


而改用


20mA


电流的有无:



1



信号在环路中产生

< p>
20mA


电流;



0



信号无电流产生。当然也需要有电路来实现


TTL


电平和


20mA


电流之间的转 换。



3-3



PC



XT


微机中使用的一种


20mA


电流环接口。当发送方


S

< p>
OUT



1


时,便



20mA


电流灌入接收方的光耦合器,于是 光耦合器导通,使


S


IN


< p>
1


。反之当发


送方


S


OUT



0


时环路 电流为零,接收方光耦合器截止,


S


IN



0


。显然,当要求双工


方式通信时 ,


双方都应各有收发电路,


通信联线至少要

4


根。


由于通信双方利用


光耦合器 实现电气上隔离,而且信号又是双端回路方式,故有很强的抗干扰性,


可以传送远至


1


千米的距离。






2-3 20mA


电流环接口





0



< br>“


1


”信号的表示方法不同外,其他方面


(


如字符的传输格式


)


常借用


RS



232C


标准。


因此


PC


< br>XT


微机中的异步串行信道接口往往将这两种标准做在


一 起,实际通过跨接线从二者中择一使用。





3



ARM


自带的串行口寄存器



ARM< /p>


自带三个


UART


端口,每个

< p>
UART


通道都有


16


字 节的


FIFO


(先入先出寄


存器)用于 接受和发送。用系统时钟最大波特率可达


230.4K


,如果用 外部时钟


(UCLK)UART


可以以更高的波特率运行。



S3C2410X UART


包括可编程 波特率,红外发送


/


接收,插入一个或两个停止


位,


5


字节,


6


字节,


7


字节,或


8


字节数据宽度和奇偶校验。



其特点是:



-----


基于


DMA


或者中断操作的


RxD0



TxD0



RxD1



TxD1



RxD2



TxD2




-----


包括


IrDA 1.0



16


字节


FIF O



UART


通道

0



1



2




-----

包括


nRTS0



nCTS0



nRTS1



n CTS1



UART


通道。

< p>


-----


支持握手方式的接收


/


发送



< br>UART


包括三个波特率因子寄存器


UBRDIV0,


UBRDIV1


and


UBRDI V2


,存储在波


特率因子寄存器


(UB RDIVn)


中的值决定串口发送和接收的时钟数率(波特率),


计算公式如下:



UBRDIVn = (round_off)(MCLK / (bps x 16)+0.5)



1


其中


M CLK


是系统频率,例如在


40MHz


的情况下,当波特率取


115200


时,



UBRDIVn = (int)(40000000 / (115200 x 16)+0.5) -1


= (int)(21.7+0.5) -1


= 22 -1 = 21




六、实验步骤



1


.新建工程,将“


Exp2 ARM


串口实验”中的文件添加到工程中,这些是启


动时所需要



的文件。



2< /p>



定义与


UART

有关的各个寄存器地址和一些特殊的位命令。


主要有以下各


寄存器(


44b.h





/* UART


的全部功能寄存器


*/


#define rULCON0 (*(volatile unsigned *)0x1d00000)


#define rULCON1 (*(volatile unsigned *)0x1d04000)


#define rUCON0 (*(volatile unsigned *)0x1d00004)


#define rUCON1 (*(volatile unsigned *)0x1d04004)


#define rUFCON0 (*(volatile unsigned *)0x1d00008)


#define rUFCON1 (*(volatile unsigned *)0x1d04008)


#define rUMCON0 (*(volatile unsigned *)0x1d0000c)


#define rUMCON1 (*(volatile unsigned *)0x1d0400c)


#define rUTRSTAT0 (*(volatile unsigned *)0x1d00010)


#define rUTRSTAT1 (*(volatile unsigned *)0x1d04010)


#define rUERSTAT0 (*(volatile unsigned *)0x1d00014)


#define rUERSTAT1 (*(volatile unsigned *)0x1d04014)


#define rUFSTAT0 (*(volatile unsigned *)0x1d00018)


#define rUFSTAT1 (*(volatile unsigned *)0x1d04018)


#define rUMSTAT0 (*(volatile unsigned *)0x1d0001c)


#define rUMSTAT1 (*(volatile unsigned *)0x1d0401c)


#define rUBRDIV0 (*(volatile unsigned *)0x1d00028)


#define rUBRDIV1 (*(volatile unsigned *)0x1d04028)



#ifdef __BIG_ENDIAN //


大端摸式



#define rUTXH0 (*(volatile unsigned char *)0x1d00023)

-


-


-


-


-


-


-


-



本文更新与2021-02-27 21:56,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/676349.html

ARM实验三 ARM的串行口实验的相关文章