ARM的串行口试验_第1页
ARM的串行口试验_第2页
ARM的串行口试验_第3页
ARM的串行口试验_第4页
ARM的串行口试验_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ARM的串行口试验一、 试验目的1. 掌握ARM的串行口工作原理2. 学习编程实现ARM的UART通讯3. 掌握CPU利用串口通讯的方法二、 试验内容学习串行通讯原理,了解串行通讯控制器,阅读ARM芯片文档,掌握ARM的UART相关寄存器的功能,熟悉ARM系统硬件的UART相关接口。编程实现ARM和计算机实现串行通讯:ARM监视串行口,将接受到的字符再发送给串口(计算机与开发板是通过超级终端通讯的),即按PC键盘通过超级终端发送数据,开发板将接受到的数据再返送给PC,在超级终端上显示。三、 预备知识1. 用ARM ADS1.2集成开发环境,编写和调试程序的基本过程。2. ARM应用程序的框架结

2、构。3. 了解串行总线。四、 试验设备及工具硬件:ARM嵌入式开发平台、PC机Pentium100以上、用于ARM920T的JTAG仿真器、串口线。软件:PC机操作系统Win2000或WinXP、ARM ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。五、 试验原理及说明随着计算机系统的应用和微机网络的发展,通信功能越来越显的重要。这里所说的通信是指计算机与外界的信息交换。因此,通信既包括计算机与外部设备之间,也包括计算机和计算机之间的信息交换。由于串行通信是在一根传输线上一位一位的传送信息,所用的传输线少,并且可以借助现成的电话网进行信息传送,因此,特别适合于远距离传输。对于那些

3、与计算机相距不远的人机交换设备和串行存储的外部设备如终端、打印机、逻辑分析仪、磁盘等,采用串行方式交换数据也很普遍。在实时控制和管理方面,采用多台微机处理机组成分级分布控制系统中,各CPU之间的通信一般都是串行方式。所以串行接口是微机应用系统常用的接口。许多外设和计算机按串行方式进行通信,这里所说的串行方式,是指外设与接口电路之间的信息传送方式,实际上,CPU与接口之间仍按并行方式工作。1、串行通信的概念图1所谓“串行通信”是指外设和计算机间使用一根数据信号线(另外需要地线,可能还需要控制线),数据在一根数据信号线上一位一位地进行传输,每一位数据都占据一个固定的时间长度。如图1所示。这种通信方

4、式使用的数据线少,在远距离通信中可以节约通信成本,当然,其传输速度比并行传输慢。由于CPU与接口之间按并行方式传输,接口与外设之间按串行方式传输,因此,在串行接口中,必须要有“接收移位寄存器”(串并)和“发送移位寄存器”(并串)。典型的串行接口的结构如图2所示。图2在数据输入过程中,数据1位1位地从外设进入接口的“接收移位寄存器”,当“接收移位寄存器”中已接收完1个字符的各位后,数据就从“接收移位寄存器”进入“数据输入寄存器”。CPU从“数据输入寄存器”中读取接收到的字符。(并行读取,即D7D0同时被读至累加器中)。“接收移位寄存器”的移位速度由“接收时钟”确定。在数据输出过程中,CPU把要输

5、出的字符(并行地)送入“数据输出寄存器”,“数据输出寄存器”的内容传输到“发送移位寄存器”,然后由“发送移位寄存器”移位,把数据1位1位地送到外设。“发送移位寄存器”的移位速度由“发送时钟”确定。接口中的“控制寄存器”用来容纳CPU送给此接口的各种控制信息,这些控制信息决定接口的工作方式。“状态寄存器”的各位称为“状态位”,每一个状态位都可以用来指示数据传输过程中的状态或某种错误。例如,用状态寄存器的D5位为“1”表示“数据输出寄存器”空,用D0位表示“数据输入寄存器满”,用D2位表示“奇偶检验错”等。2、奇偶校验串行数据在传输过程中,由于干扰可能引起信息的出错,例如,传输字符E,其各位为:0

6、100,0101=45HD7 D0由于干扰,可能使位变为1,这种情况,我们称为出现了“误码”。我们把如何发现传输中的错误,叫“检错”。发现错误后,如何消除错误,叫“纠错”。最简单的检错方法是“奇偶校验”,即在传送字符的各位之外,再传送1位奇/偶校验位。可采用奇校验或偶校验。奇校验:所有传送的数位(含字符的各数位和校验位)中,“1”的个数为奇数,如:1 0110,01010 0110,0001偶校验:所有传送的数位(含字符的各数位和校验位)中,“1”的个数为偶数,如:1 0100,01010 0100,0001图3奇偶校验能够检测出信息传输过程中的部分误码(1位误码能检出,2位及2位以上误码不能

7、检出),同时,它不能纠错。在发现错误后,只能要求重发。但由于其实现简单,仍得到了广泛使用。有些检错方法,具有自动纠错能力。如循环冗余码(CRC)检错等。3、单工、半双工和全双工的定义 如果在通信过程的任意时刻,信息只能由一方A传到另一方B,则称为单工。如果在任意时刻,信息既可由A传到B,又能由B传A,但只能由一个方向上的传输存在,称为半双工传输。 如果在任意时刻,线路上存在A到B和B到A的双向信号传输,则称为全双工。   电话线就是二线全双工信道。 由于采用了回波抵消技术,双向的传输信号不致混淆不清。双工信道有时也将收、发信道分开,采用分离的线路或频带传

8、输相反方向的信号,如回线传输。在串行通信中,数据通常是在两个站(如终端和微机)之间进行传送,按照数据流的方向可分成三种基本的传送方式:全双工、半双工、和单工。但单工目前已很少采用,下面仅介绍前两种方式。 (1)、全双工方式(full duplex) 当数据的发送和接收分流,分别由两根不同的传输线传送时,通信双方都能在同一时刻进行发送和接收操作,这样的传送方式就是全双工制,如图1所示。在全双工方式下,通信系统的每一端都设置了发送器和接收器,因此,能控制数据同时在两个方向上传送。全双工方式无需进行方向的切换,因此,没有切换操作所产生的时间延迟,这对那些不能有时间延误的交互式应用(例如远程监测和控制

9、系统)十分有利。这种方式要求通讯双方均有发送器和接收器,同时,需要2根数据线传送数据信号。(可能还需要控制线和状态线,以及地线)。 图4比如,计算机主机用串行接口连接显示终端,而显示终端带有键盘。这样,一方面键盘上输入的字符送到主机内存;另一方面,主机内存的信息可以送到屏幕显示。通常,往键盘上打入1个字符以后,先不显示,计算机主机收到字符后,立即回送到终端,然后终端再把这个字符显示出来。这样,前一个字符的回送过程和后一个字符的输入过程是同时进行的,即工作于全双工方式。(2)、半双式方式(half duplex)若使用同一根传输线既作接收又作发送,虽然数据可以在两个方向上传送,但通信双方不能同时

10、收发数据,这样的传送方式就是半双工制,如图5所示。采用半双工方式时,通信系统每一端的发送器和接收器,通过收/发开关转接到通信线上,进行方向的切换,因此,会产生时间延迟。收/发开关实际上是由软件控制的电子开关。图5当计算机主机用串行接口连接显示终端时,在半双工方式中,输入过程和输出过程使用同一通路。有些计算机和显示终端之间采用半双工方式工作,这时,从键盘打入的字符在发送到主机的同时就被送到终端上显示出来,而不是用回送的办法,所以避免了接收过程和发送过程同时进行的情况。目前多数终端和串行接口都为半双工方式提供了换向能力,也为全双工方式提供了两条独立的引脚。在实际使用时,一般并不需要通信双方同时既发

11、送又接收,像打印机这类的单向传送设备,半双工甚至单工就能胜任,也无需倒向。4、传输速率与传输距离(1)、波特率在串行通信中,用“波特率”来描述数据的传输速率。所谓波特率,即每秒钟传送的二进制位数,其单位为bps(bits per second)。它是衡量串行数据速度快慢的重要指标。有时也用“位周期”来表示传输速率,位周期是波特率的倒数。国际上规定了一个标准波特率系列:110、300、600、1200、1800、2400、4800、9600、14.4Kbps、19.2Kbps、28.8Kbps、33.6Kbps、56Kbps。 例如:9600bps,指每秒传送9600位,包含字符的数位和其它必须

12、的数位,如奇偶校验位等。 大多数串行接口电路的接收波特率和发送波特率可以分别设置,但接收方的接收波特率必须与发送方的发送波特率相同。通信线上所传输的字符数据(代码)是逐为位传送的,1个字符由若干位组成,因此每秒钟所传输的字符数(字符速率)和波特率是两种概念。在串行通信中,所说的传输速率是指波特率,而不是指字符速率,它们两者的关系是:假如在异步串行通信中,传送一个字符,包括12位(其中有一个起始位,8个数据位,2个停止位),其传输速率是1200b/s,每秒所能传送的字符数是1200/(1+8+1+2)=100个。图6(2)、发送接收时钟在串行传输过程中,二进制数据序列是以数字信号波形的形式出现的

13、,如何对这些数字波形定时发送出去或接收进来,以及如何对发收双方之间的数据传输进行同步控制的问题就引出了发送接收时钟的应用。在发送数据时,发送器在发送时钟(下降沿)作用下将发送移位寄存器的数据按串行移位输出;在接收数据时,接收器在接收时钟(上升沿)作用下对来自通信线上串行数据,按位串行移入移位寄存器。可见,发送接收时钟是对数字波形的每一位进行移位操作,因此,从这个意义上来讲,发送接收时钟又可叫做移位始终脉冲。另外,从数据传输过程中,收方进行同步检测的角度来看,接收时钟成为收方保证正确接收数据的重要工具。为此,接收器采用比波特率更高频率的时钟来提高定位采样的分辨能力和抗干扰能力。(3)、波特率因子

14、在波特率指定后,输入移位寄存器/输出移位寄存器在接收时钟/发送时钟控制下,按指定的波特率速度进行移位。一般几个时钟脉冲移位一次。要求:接收时钟/发送时钟是波特率的16、32或64倍。波特率因子就是发送接收1个数据(1个数据位)所需要的时钟脉冲个数,其单位是个位。如波特率因子为16,则16个时钟脉冲移位1次。 例:波特率=9600bps,波特率因子=32,则 接收时钟和发送时钟频率=9600×32=297200Hz。(4)、传输距离串行通信中,数据位信号流在信号线上传输时,要引起畸变,畸变的大小与以下因素有关:波特率信号线的特征(频带范围)传输距离信号的性质及大小(电平高低、电流大小)

15、当畸变较大时,接收方出现误码。在规定的误码率下,当波特率、信号线、信号的性质及大小一定时,串行通信的传输距离就一定。为了加大传输距离,必须加调制解调器。5、调制解调器(MODEM)计算机的通信是要求传送数字信号,而在进行远程数据通信时,通信线路往往是借用现存的公用电话网,但是,电话网是为3003400HZ 之间的音频信号设计的,这对二进制数据的传输不适合。为此,在发送时,需要将二进制信号调制成相应的音频信号,以适合在电话网上传输。在接收后时,需要对音频信号进行调解还原成数字信号。因此,在发送端使用调制器(Modulator)把数字信号转换为模拟信号,(该模拟信号携带了数据信号,称为载波信号),

16、模拟信号经通信线传送到接收方,接收方再以解调器(Demodulator),把模拟信号变为数字信号。大多数情况下,调制器和解调器合在一个装置中,称为“调制解调器”Modem。在通信中,Modem起着传输信号的作用,是一种数据通信设备(Data Communication equipment),简称DCE或称数传机(Dataset),接收设备和发送设备称为数据终端设备(data terminal equipment),简称DTE。加入Modem后,通信系统的结构如图7所示图7调制信号的方法有:把采用调频方式的称为FSK对应频移键控FSK类型的MODEM;把采用调相方式的称为PSK对应相移键控PSK

17、类型的MODEM;把采用调幅方式的称为ASK对应振幅键控ASK类型的MODEM。当波特率小于300时,一般采用频移控键(FSK)调制方式,或者称为两态调频。它的基本原理是把“0”和“1”的两种数字信号分别调制成不同频率的两个音频信号。其原理图如图8所示。图8两个不同频率的模拟信号f1和f2 ,分别经过电子开关S1、S2送到运算放大器A的输入端相加点。电子开关的通断由外部控制,并且当加高电平时,接通;加低电平时,断开。利用被传输的数字信号(即数据)去控制开关。当数字信号为“1”时,使电子开关S1接通,送出一串频率较高的模拟信号f1;当数字信号为“0”时,使电子开关S2接通,送出一串频率较低的模拟

18、信号f2。于是这两个不同频率的信号经运算放大器相加后,在运算放大器的输出端,就得到了调制后的两种频率的音频信号。6、串口通讯异步通信方式串行通信可以分为两种类型:同步通信、异步通信。(1)、异步通信的特点及信息帧格式:以起止式异步协议为例,下图显示的是起止式一帧数据的格式:图9起止式异步通信的特点是:一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以“起始位”开始,以“停止位”结束,字符之间没有固定的时间间隔要求。每一个字符的前面都有一位起始位(低电平,逻辑值),字符本身由5-7位数据位组成,接着字符后面是一位校验位(也可以没有校验位),最后是一位或一位半或二位停止位,

19、停止位后面是不定长的空闲位。停止位和空闲位都规定为高电平(逻辑值),这样就保证起始位开始处一定有一个下跳沿。从图中可看出,这种格式是靠起始位和停止位来实现字符的界定或同步的,故称为起止式协议。异步通信可以采用正逻辑或负逻辑,正负逻辑的表示如下表所示: 逻辑0逻辑1正逻辑低电平高电平负逻辑高电平低电平异步通信的信息格式如下边的表所示:起始位逻辑01位数据位逻辑0或15位、6位、7位、8位校验位逻辑0或11位或无停止位逻辑11位,1.5位或2位空闲位逻辑1任意数量例:传送8位数据45H(0100,0101B),奇校验,1个停止位,则信号线上的波形象图10所示那样:异步通信的速率:若960

20、0bps,每字符8位,1起始,1停止,无奇偶,则实际每字符传送10位,则960字符/秒。图10(2)、异步通信的接收过程接收端以“接收时钟”和“波特率因子”决定一位的时间长度。下面以波特率因子等于16(接收时钟每16个时钟周期,使接收移位寄存器移位一次)、正逻辑为例说明,如图11所示。图11、开始通信时,信号线为空闲(逻辑1),当检测到由1到0的跳变时,开始对“接收时钟”计数。、当计到8个时钟时,对输入信号进行检测,若仍为低电平,则确认这是“起始位”B,而不是干扰信号。、接收端检测到起始位后,隔16个接收时钟,对输入信号检测一次,把对应的值作为D0位数据。若为逻辑1, 作为数据位1;若为逻辑0

21、,作为数据位0。、再隔16个接收时钟,对输入信号检测一次,把对应的值作为D1位数据。.,直到全部数据位都输入。、检测校验位P(如果有的话)。、接收到规定的数据位个数和校验位后,通信接口电路希望收到停止位S(逻辑1),若此时未收到逻辑1,说明出现了错误,在状态寄存器中置“帧错误”标志。若没有错误,对全部数据位进行奇偶校验,无校验错时,把数据位从移位寄存器中送数据输入寄存器。若校验错,在状态寄存器中置奇偶错标志。、本幀信息全部接收完,把线路上出现的高电平作为空闲位。、当信号再次变为低时,开始进入下一幀的检测。(3)异步通信的发送过程发送端以“发送时钟”和“波特率因子”决定一位的时间长度。、当初始化

22、后,或者没有信息需要发送时,发送端输出逻辑1,即空闲位,空闲位可以有任意数量。、当需要发送时,发送端首先输出逻辑0,作为起始位。、接着,发送端首先发送D0位,直到各数据位发送完。、如果需要的话,发送端输出校验位。、最后,发送端输出停止位(逻辑1)。、如果没有信息需要发送时,发送端输出逻辑1,即空闲位,空闲位可以有任意数量。如果还有信息需要发送,转入第步。对于以上发送、接收过程应注意以下几点:、接收端总是在每个字符的头部(即起始位)进行一次重新定位,因此发送端可以在字符之间插入不等长的空闲位,不影响接收端的接收。、发送端的发送时钟和接收端的接收时钟,其频率允许有一定差异,当频率差异在一定范围内,

23、不会引起接收端检测错位,能够正确接收。并且这种频率差异不会因多个字符的连续接收而造成误差累计(因为每个字符的开始(起始位处)接收方均重新定位)。只有当发送时钟和接收时钟频率差异太大,引起接收端采样错位,才造成接收错误。、起始位、校验位、停止位、空闲位的信号,由“发送移位寄存器”自动插入。在接收方,“接收移位寄存器”接收到一帧完整信息(起始、数据、校验、停止)后,仅把数据的各位送至“数据输入寄存器”,即CPU从“数据输入寄存器”中读得的信息,只是有效数字,不包含起始位、校验位、停止位信息。7、串口通讯同步通信方式(1)、同步通信方式的特点:采用同步通信时,将许多字符组成一个信息组,这样,字符可以

24、一个接一个地传输,但是,在每组信息(通常称为帧)的开始要加上同步字符,在没有信息要传输时,要填上空字符,因为同步传输不允许有间隙。在同步传输过程中,一个字符可以对应58位。当然,对同一个传输过程,所有字符对应同样的数位,比如说n位。这样,传输时,按每n位划分为一个时间片,发送端在一个时间片中发送一个字符,接收端则在一个时间片中接收一个字符。同步传输时,一个信息帧中包含许多字符,每个信息帧用同步字符作为开始,一般将同步字符和空字符用同一个代码。在整个系统中,由一个统一的时钟控制发送端的发送和空字符用同一个代码。接收端当然是应该能识别同步字符的,当检测到有一串数位和同步字符相匹配时,就认为开始一个

25、信息帧,于是,把此后的数位作为实际传输信息来处理。(2)、面向字符的同步协议(IBM的BSC协议)图12该协议规定了10个特殊字符(称为控制字符)作为信息传输的标志。其格式为:SYNSOH标题STX数据块ETB/ETX块校验SYN:同步字符(Synchronous character),每帧可加1个(单同步)或2个(双同步)同步字符。SOH:标题开始(Start of Header)。标题:Header,包含源地址(发送方地址)、目的地址(接收方地址)、路由指示。STX:正文开始(Start of Text)。数据块:正文(Text),由多个字符组成。ETB:块传输结束(end of tran

26、smission block), 标识本数据块结束。ETX:全文结束(end of text),(全文分为若干块传输)。块校验:对从SOH开始,直到ETB/ETX字段的检验码。(3)、面向bit的同步协议(ISO的HDLC)图13一帧信息可以是任意位,用位组合标识帧的开始和结束。 帧格式为:F场A场C场I场FC场F场F场:标志场;作为一帧的开始和结束,标志字符为8位,01111110。A场:地址场,规定接收方地址,可为8的整倍位。接收方检查每个地址字节的第1位,如果为“0”,则后边跟着另一个地址字节。若为“1”,则该字节为最后一个地址字节。C场:控制场。指示信息场的类型,8位或16位。若第1字

27、节的第1位为0,则还有第2个字节也是控制场。I场:信息场。要传送的数据。FC场:帧校验场。16位循环冗余校验码CRC。除F场和自动插入的“0”位外,均参加CRC计算。(4)、同步通信的“0位插入和删除技术”在同步通信中,一帧信息以一个(或几个)特殊字符开始,例如,F场=01111110B。但在信息帧的其他位置,完全可能出现这些特殊字符,为了避免接收方把这些特殊字符误认为帧的开始,发送方采用了“0位插入技术”,相应地,接收方采用“0位删除技术”。发送方的0位插入:除了起始字符外,当连续出现5个1时,发送方自动插入一个0。使得在整个信息帧中,只有起始字符含有连续的6个1。接收方的“0位删除技术”:

28、接收方收到连续6个1,作为帧的起始,把连续出现5个1后的0自动删除。(5)、同步通信的“字节填充技术”设需要传送的原始信息帧为:SOTDATAEOT字节填充技术采用字符替换方式,使信息帧的DATA中不出现起始字符SOT和结束字符EOT。设按下表方式进行替换:DATA中的原字符替换为SOTESC XEOTESC YESCESC Z其中,ESC=1AH,X、Y、Z可指定为任意字符(除SOT、EOT、ESC外)。发送方按约定方式对需要发送的原始帧进行替换,并把替换后的新的帧发送给接收方。例如图所示:图14接收方按约定方式进行相反替换,可以获得原始帧信息。(6)、异步通信和同步通信的比较、异步通信简单

29、,双方时钟可允许一定误差。同步通信较复杂,双方时钟的允许误差较小。、异步通信只适用于点<-> 点,同步通信可用于点<-> 多。、通信效率:异步通信低,同步通信高。8、串行接口的物理层标准通用的串行IO接口有许多种,现仅就最常见的两种标准作简单介绍。(1)EIA RS232C这是美国电子工业协会推荐的一种标准(Electronic industries Association Recoil-mended Standard)。它在一种25针接插件(DB25)上定义了串行通信的有关信号。这个标准后来被世界各国所接受并使用到计算机的IO接口中。信号连线在实际异步串行通信中,并不

30、要求用全部的RS232C信号,许多PCXT兼容机仅用15针接插件(DB15)来引出其异步串行IO信号,而PC中更是大量采用9针接插件(DB9)来担当此任,因此这里也不打算就 RS232C 的全部信号作详细解释。图2 给出两台微机利用RS232C接口通信的联线(无MODEM),我们按DB25的引脚号标注各个信号。 下面对图2中几个主要信号作简要说明。图15保护地 通信线两端所接设备的金属外壳通过此线相联。当通信电缆使用屏蔽线时,常利用其外皮金属屏蔽网来实现。由于各设备往往已通过电源线接通保护地,因此,通信线中不必重复接此地线(图中用虚线表示)。例如使用9针插头(DB9)的异步串行IO接口就没有引

31、出保护地信号。 TXDRXD 是一对数据线,TXD 称发送数据输出,RXD 称接收数据输入。当两台微机以全双工方式直接通信(无MODEM方式)时,双方的这两根线应交叉联接(扭接)。信号地 所有的信号都要通过信号地线构成耦合回路。通信线有以上三条(TXD、RXD 和信号地)就能工作了。其余信号主要用于双方设备通信过程中的联络(握手信号),而且有些信号仅用于和MODEM的联络。若采取微型机对微型机直接通信,且双方可直接对异步串行通信电路芯片编程,若设置成不要任何联络信号,则其它线都可不接。有时在通信线的同一端将相关信号短接以“自握手”方式满足联络要求。这就是如图2(a)所示的情况。RTSCTS 请

32、求发送信号RTS是发送器输出的准备好信号。接收方准备好后送回清除发送信号CTS后,发送数据开始进行,在同一端将这两个信号短接就意味着只要发送器准备好即可发送。DCD 载波检测(又称接收线路信号检测)。本意是MODEM检测到线路中的载波信号后,通知终端准备接收数据的信号,在没有接MODEM的情况下,也可以和RTS、CTS短接。相对于MODEM而言,微型机和终端机一样被称为数据终端DTE(Data Terminal Equipment)而MODEM被称为数据通信装置DCE(Data Communications Equipment),DTE和DCE之间的连接不能像图2中有“扭接”现象,而应该是按接

33、插件芯号,同名端对应相接。此处介绍的RS232C的信号名称及信号流向都是对DTE而言的。DTRDSR 数据终端准备好时发DTR信号,在收到数据通信装置装备好DSR信号后,方可通信。图3-2(a)中将这一对信号以“自握手”方式短接。R1 原意是在MODEM接收到电话交换机有效的拨号时,使RI有效,通知数据终端准备传送。在无MODEM时也可和DTR相接。图15(b)给出了无MODEM情况下,DTE对DTE异步串行通信线路的完整连接,它不仅适用于微型机和微型机之间的通信,还适用于微型机和异步串行外部设备(如终端机、绘图仪、数字化仪等)的连接。信号电平规定RS232C规定了双极性的信号逻辑电平: -3

34、V到-25V之间的电平表示逻辑“1”。 +3V到+25V之间的电平表示逻辑“0”。 因此这是一套负逻辑定义。 以上标准称为EIA电平。PCXT系列使用的信号电平是-12V和+12V,符合EIA标准,但在计算机内部流动的信号都是TTL电平,因此这中间需要用电平转换电路。常用芯片MCl488或SN75150将TTL电平转换为EIA电平,MCl489或SN75154将EIA电平转换为TTL电平。PCXT系列以这种方式进行串行通信时,在波特率不高于9600的情况下,理论上通信线的长度限制纽为15米。(2)20mA电流环20mA电流环并没有形成一套完整的标准,主要是将数字信号的表示方法不使用电子的高低,

35、而改用20mA电流的有无:“1”信号在环路中产生20mA电流;“0”信号无电流产生。当然也需要有电路来实现TTL电平和20mA电流之间的转换。图3是PCXT微机中使用的一种20mA电流环接口。当发送方SOUT1时,便有20mA电流灌入接收方的光耦合器,于是光耦合器导通,使SIN1。反之当发送方SOUT0时环路电流为零,接收方光耦合器截止,SIN0。显然,当要求双工方式通信时,双方都应各有收发电路,通信联线至少要4根。由于通信双方利用光耦合器实现电气上隔离,而且信号又是双端回路方式,故有很强的抗干扰性,可以传送远至1千米的距离。图16“0”、“1”信号的表示方法不同外,其他方面(如字符的传输格式

36、)常借用 RS232C 标准。因此 PCXT 微机中的异步串行信道接口往往将这两种标准做在一起,实际通过跨接线从二者中择一使用。 9、ARM自带的串行口寄存器ARM自带三个UART端口,每个UART通道都有16字节的FIFO(先入先出寄存器)用于接受和发送。用系统时钟最大波特率可达 230.4K,如果用外部时钟(UCLK)UART 可以以更高的波特率运行。S3C2410X UART包括可编程波特率,红外发送/接收,插入一个或两个停止位,5字节,6字节,7字节,或8字节数据宽度和奇偶校验。其特点是: -基于DMA或者中断操作的RxD0,TxD0,RxD1,TxD1,RxD2,TxD2。 -包括I

37、rDA 1.0和16字节FIFO的UART通道0,1,2。 -包括nRTS0,nCTS0,nRTS1和nCTS1的UART通道。 -支持握手方式的接收/发送。与UART有关的寄存器主要有以下几个:(1)、UART线控制寄存器包括ULCON0,ULCON1和ULCON2,主要用来选择每帧数据位数、停止位数,奇偶校验模式及是否使用红外模式,如表1,2所示。表1 UART寄存器设置表2 UART寄存器位描述(2)、UART控制寄存器包括UCON0, UCON1 and UCON2,主要用来选择时钟,接收和发送中断类型(即电平还是脉冲触发类型),接收超时使能,接收错误状态中断使能,回环模式,发送接收模

38、式等。如表3, 4所示表3 UART控制寄存器设置表4 UART控制寄存器位描述(3)、UART错误状态寄存器包括UERSTAT0, UERSTAT1 and UERSTAT2,此状态寄存器的相关位表明是否有帧错误或溢出错误发生。如表5,6所示表5 UART错误状态寄存器设置表6 UART错误状态寄存器位描述注意:在读取UART错误状态寄存器时,这些位(UERSATn3:0)会自动清零。(4)在UART模块中有三个接收/发送状态寄存器,包括UTRSTAT0,UTRSTAT1和UTRSTAT2。如表7, 8所示:表7 UART接收/发送寄存器设置表8 UART接收/发送寄存器位描述(5)在UAR

39、T模块中有3个UART发送缓冲寄存器,包括UTXH0,UTXH1和UTXH2,UTXHn有8位发送数据。如下表9:表9 UART发送缓冲寄存器其功能如下表10所示:表10 UART发送缓冲寄存器功能注意:(L):小端模式,(B):大端模式(6)在UART模块中有3个UART接收缓冲寄存器,包括URXH0,URXH1和URXH2,URXHn有8位接收数据。如表11:表11 UART接收缓冲寄存器其功能如下表12所示:表12 UART接收缓冲寄存器功能注意:当发生溢出错误时,必须读URXHn。否则,即使UERSTATn的溢出位已经清零,下个已接收数据也会产生溢出错误。(7)UART波特率因子寄存器

40、:表13 UART波特率因子寄存器设置表14 UART波特率因子寄存器功能UART包括三个波特率因子寄存器UBRDIV0, UBRDIV1 and UBRDIV2,存储在波特率因子寄存器(UBRDIVn)中的值决定串口发送和接收的时钟数率(波特率),计算公式如下:UBRDIVn = (int)(PCLK / (bps x 16) ) 1或UBRDIVn = (int)(UCLK / (bps x 16) ) 1例如:如果波特率是115200,PCLK or或UCLK 是40 MHz,那么UBRDIVn :UBRDIVn = (int)(40000000 / (115200 x 16) ) -1

41、= (int)(21.7) -1= 21 -1 = 20六、 试验步骤本次实验安排4节课,任务很繁重。1、 将工程“Exp1 ARM串口实验”打开,分别观察工程的目标设置:Debug Setting ; Release Setting。(目的是让大家进一步熟悉ARM开发环境ADS1.2的使用,大家在看相关参数设置的时候,请阅读在线帮助文档,就明白相应参数的意义了,这是一个艰苦的过程,这些在线帮助文档经常看,不但增进ARM开发知识,还提高英语)2、 对工程进行编译,然后下载到目标机(嵌入式系统开发的特点就是交叉调试,我们的PC机是宿主机,开发箱里面的板子就是目标机)上运行。注意:这个过程需要我们

42、前面实验的知识,如烧写Bootloader程序vivi;超级终端的建立(如果已经建立就不用建立了)。程序运行的时候,敲一下键盘,就会在超级终端上显示你输入的字符,这个字符是怎么传送的?分析一下)3、 在工程中打开工程文件,看这个工程是怎么实现的。了解一个ARM运用程序的基本框架。4、 看传的文档“um_s3c2410s_rev12_030428”和“ARM芯片S3C2410关于UART的文档”,结合程序代码的分析,了解串口通讯程序是如何实现的。5、 安装UArmJtag2.0程序(具体如何安装请看UArmJtag使用指南,该文档中的“ARM flash下载程序的使用”不要作,“SDT 2.51

43、的设置”也不要作),尝试进行仿真调试。七、 串口程序代码分析1、系统启动程序所执行的操作跟具体的目标系统和开发系统相关,一般通用的内容包括:􀂋 中断向量表􀂋 初始化存储器系统􀂋 初始化堆栈􀂋 初始化有特殊要求的端口、设备􀂋 初始化应用程序执行环境􀂋 改变处理器模式􀂋 呼叫主应用程序串口实验完成这一任务的是startup.s 程序:GET 2410addr.s; Some ARM920CPSR bit descriptions;Pre-defined constants

44、;这部分在预定义一些常量USERMODE EQU0x10FIQMODE EQU0x11IRQMODE EQU0x12SVCMODE EQU0x13ABORTMODE EQU0x17UNDEFMODE EQU0x1bMODEMASK EQU0x1fNOINT EQU0xc0I_Bit*0x80F_Bit*0x40; MMURegister description;p15CP15;c0CN0;c1CN1;c2CN2;c3CN3CtrlMMU*1CtrlAlign*2CtrlCache*4CtrlWBuff*8CtrlBigEnd*128CtrlSystem*256CtrlROM*512;initi

45、alizationL0 is MMU FULL_ACCESS, DOMAIN, SECTIONTLB_L0_INIT*0x0C02; 整个初始化程序从这里开始,设置中断向量表,ARM要求中断向量表必须放置在从0地址开始,连续8×4字节的空间内。;AREAInit,CODE,READONLYIMPORT _use_no_semihosting_swiIMPORTEnter_UNDEFIMPORTEnter_SWIIMPORTEnter_PABORTIMPORTEnter_DABORTIMPORTEnter_FIQENTRY ; ENTRY是指定编译器保留这段代码bColdReset;复

46、位bEnter_UNDEF;未定义指令bEnter_SWI;软件中断bEnter_PABORT;指令预取中止bEnter_DABORT;数据中止b.;保留bIRQ_Handler;中断请求处理bEnter_FIQ;快中断请求处理;处理正常的中断请求EXPORTIRQ_HandlerIRQ_HandlerIMPORTISR_IrqHandlerSTMFDsp!, r0-r12, lrBLISR_IrqHandlerLDMFDsp!, r0-r12, lrSUBSpc, lr,#4;=; ENTRY ;=;处理负责操作EXPORT ColdResetColdResetldrr0,=WTCON;关闭

47、看门狗 ldrr1,=0x0strr1,r0ldrr0,=INTMSKldrr1,=0xffffffff;禁止所有中断strr1,r0ldrr0,=INTSUBMSKldrr1,=0x7ff;禁止所有的子中断strr1,r0;*;*堆栈的初始化 * ;*blInitStacks; 为每一种模式初始化堆栈;把异常处理向量表复制到SRAM中的0x00处;IMPORT|Load$EXCEPTION_EXEC$Base|IMPORT|Image$EXCEPTION_EXEC$Base|IMPORT|Image$EXCEPTION_EXEC$Length|ldrr0,=|Load$EXCEPTION_E

48、XEC$Base|;源数据ldrr1,=|Image$EXCEPTION_EXEC$Base|;在0x00处放置异常向量表ldrr2,=|Image$EXCEPTION_EXEC$Length|exception_cploopsubr2,r2,#4ldmiar0!,r3stmiar1!,r3cmpr2, #0bge exception_cploop; 用C语言写主要的功能; ;IMPORT _mainBL_main ;不能用main();呼叫主应用程序B.;*;*初始化堆栈;* 因为ARM 处理器有7 种执行状态,每一种状态的堆栈指针寄存器(SP)都是独立的(System 和User 模式使用

49、相同的SP 寄存器)。因此对程序中需要用到的每一种模式都要给SP 寄存器定义一个堆栈地址。方法是改变状态寄存器CPSR 内的状态位,使处理器切换到不同的状态,然后给SP 赋值。注意不要切换到User模式进行User模式的堆栈设置,因为进入User模式后就不能再操作CPSR回到别的模式了。可能会对接下去的程序执行造成影响。一般堆栈的大小要根据需要而定,但是要尽可能给堆栈分配快速和高带宽的存储器。堆栈性能的提高对系统整体性能的影响是非常明显的。;*IMPORT UserStackIMPORT SVCStackIMPORT UndefStackIMPORT IRQStackIMPORT AbortS

50、tackIMPORT FIQStackInitStacks;不要用 DRAM,;SVCstack之前已经被初始化mrsr0,cpsrbicr0,r0,#MODEMASKorrr1,r0,#UNDEFMODE|NOINTmsrcpsr_cxsf,r1;未定义模式ldrsp,=UndefStackorrr1,r0,#ABORTMODE|NOINTmsrcpsr_cxsf,r1;中止模式ldrsp,=AbortStackorrr1,r0,#IRQMODE|NOINTmsrcpsr_cxsf,r1;中断模式ldrsp,=IRQStackorrr1,r0,#FIQMODE|NOINTmsrcpsr_cx

51、sf,r1;快中断模式ldrsp,=FIQStack;bicr0,r0,#MODEMASK|NOINTorrr1,r0,#SVCMODE|NOINTmsrcpsr_cxsf,r1;SVC模式ldrsp,=SVCStack;用户模式没有被初始化movpc,lr ;在模式转换时,LR寄存器可能无效。; End of Startup.c;END; 其栈空间在汇编的时候就分好了,如下stack.s所示: AREA Stacks, DATA, NOINIT EXPORT UserStack EXPORT SVCStack EXPORT UndefStack EXPORT IRQStack EXPORT AbortStack EXPORT FIQStackSPACE4096UserStackSPACE4096SVCStackSPACE4096UndefStackSPACE4096AbortStackSPACE4096IRQStackSPACE4096FIQStackSPACE4096 END下面分析主程序:Release main.c/主逻辑函数/#include"./ucos-ii/includes.h" /* uC/OS interface */#include ".

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论