• 正文
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

详解串行通信中的异步通信

2019/02/13 作者:与非网编辑
阅读需 58 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

 

数据通信的基本方式可分为并行通信与串行通信两种:

并行通信:是指利用多条数据传输线将一个资料的各位同时传送。它的特点是传输速度快,适用于短距离通信,但要求通讯速率较高的应用场合。


串行通信:是指利用一条传输线将资料一位位地顺序传送。特点是通信线路简单,利用简单的线缆就可实现通信,降低成本,适用于远距离通信,但传输速度慢的应用场合。

一、异步通信及其协议

异步通信以一个字符为传输单位,通信中两个字符间的时间间隔是不固定的,然而在同一个字符中的两个相邻位代码间的时间间隔是固定的。

通信协议(通信规程):是指通信双方约定的一些规则。在使用异步串口传送一个字符的信息时,对资料格式有如下约定:规定有空闲位、起始位、资料位、奇偶校验位、停止位。

异步通讯的时序,如图 5-1。

其中各位的意义如下:

起始位:先发出一个逻辑”0”信号,表示传输字符的开始。

资料位:紧接着起始位之后。资料位的个数可以是 4、5、6、7、8 等,构成一个字符。通常采用 ASCII 码。从最低位开始传送,靠时钟定位。

奇偶校验位:资料位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。

停止位:它是一个字符数据的结束标志。可以是 1 位、1.5 位、2 位的高电平。

空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。

波特率:是衡量资料传送速率的指针。表示每秒钟传送的二进制位数。例如资料传送速率为 120 字符 / 秒,而每一个字符为 10 位,则其传送的波特率为 10×120=1200 字符 / 秒=1200 波特。

注:异步通信是按字符传输的,接收设备在收到起始信号之后只要在一个字符的传输时间内能和发送设备保持同步就能正确接收。下一个字符起始位的到来又使同步重新校准(依靠检测起始位来实现发送与接收方的时钟自同步的)。

二、资料传送方式

根据资料传送方向的不同有以下三种方式。如图 5-2 所示。

(1)单工方式 (2)半双工方式 (3)全双工方式

图 5-2 资料传送方式

1、单工方式

资料始终是从 A 设备发向 B 设备。

2、 半双工方式

资料能从 A 设备传送到 B 设备,也能从 B 设备传送到 A 设备。在任何时候资料都不能同时在两个方向上传送,即每次只能有一个设备发送,另一个设备接收。但是通讯双方依照一定的通讯协议来轮流地进行发送和接收。

3、 全双工方式

允许通信双方同时进行发送和接收。这时,A 设备在发送的同时也可以接收,B 设备亦同。全双工方式相当于把两个方向相反的单工方式组合在一起,因此它需要两条数据传输线。在计算机串行通讯中主要使用半双工和全双工方式。

 

三、信号传输方式

1、基带传输方式

在传输线路上直接传输不加调制的二进制信号,如图所示。它要求传送线的频带较宽,传输的数字信号是矩形波。

基带传输方式仅适宜于近距离和速度较低的通信。

2、频带传输方式

传输经过调制的模拟信号

在长距离通信时,发送方要用调制器把数字信号转换成模拟信号,接收方则用解调器将接收到的模拟信号再转换成数字信号,这就是信号的调制解调

实现调制和解调任务的装置称为调制解调器(MODEM)。采用频带传输时,通信双方各接一个调制解调器,将数字信号寄载在模拟信号(载波)上加以传输。因此,这种传输方式也称为载波传输方式。这时的通信线路可以是电话交换网,也可以是专用线。

常用的调制方式有三种:

调幅、调频和调相,分别如下图所示。

四、串行接口标准

串行接口标准:指的是计算机或终端(资料终端设备 DTE)的串行接口电路与调制解调器 MODEM 等(数据通信设备 DCE)之间的连接标准。

RS-232C 标准

RS-232C 是一种标准接口,D 型插座,采用 25 芯引脚或 9 芯引脚的连接器,如图 5-5 所示。

图 5-5

微型计算机之间的串行通信就是按照 RS-232C 标准设计的接口电路实现的。如果使用一根电话线进行通信,那幺计算机和 MODEM 之间的联机就是根据 RS-232C 标准连接的。其连接及通信原理如图 5-6 所示

图 5-6

RS232 信号定义

RS-232C 标准规定接口有 25 根联机。只有以下 9 个信号经常使用。

引脚和功能分别如下:

1. TXD(第 2 脚):发送资料线,输出。发送资料到 MODEM。

2. RXD(第 3 脚):接收资料线,输入。接收资料到计算机或终端。

3. (第 4 脚):请求发送,输出。计算机通过此引脚通知 MODEM,要求发送资料。

4. (第 5 脚):允许发送,输入。发出 作为对 的回答,计算机才可以进行发送资料。

5. (第 6 脚):资料装置就绪(即 MODEM 准备好),输入。表示调制解调器可以使用,该信号有时直接接到电源上,这样当设备连通时即有效。

6. CD(第 8 脚):载波检测(接收线信号测定器),输入。表示 MODEM 已与电话线路连接好。

7. 如果通信线路是交换电话的一部分,则至少还需如下两个信号:

8. RI(第 22 脚):振铃指示,输入。MODEM 若接到交换台送来的振铃呼叫信号,就发出该信号来通知计算机或终端。

9. (第 20 脚):资料终端就绪,输出。计算机收到 RI 信号以后,就发出 信号到 MODEM 作为回答,以控制它的转换设备,建立通信链路。

10. GND(第 7 脚):信号地

逻辑电平

RS-232C 标准采用 EIA 电平,规定:

“1”的逻辑电平在 -3V~-15v 之间

“0”的逻辑电平在+3V~+15V 之间。

由于 EIA 电平与 TTL 电平完全不同,必须进行相应的电平转换,MCl488 完成 TTL 电平到 EIA 电平的转换,MCl489 完成 EIA 电平到 ITL 电平的转换。还有 MAX232 可以同时完成 TTL-》EIA 和 EIA-》TTL 的电平转换。

除了 RS-232C 标准以外,还有一些其它的通用的异步串行接口标准,如:

RS-423A 标准

为了克服 RS-232C 的缺点,提高传送速率,增加通信距离,又考虑到与 RS-232C 的兼容性,美国电子工业协会在 1987 年提出了 RS-423A 标准。该标准的主要优点是在接收端采用了差分输入。而差分输入对共模干扰信号有较高的抑制作用,这样就提高了通信的可靠性。RS-423A 用 -6v 表示逻辑“1”,用+6v 表示逻辑“0”,可以直接与 RS-232C 相接。采用 RS-423A 标准以获得比 RS-232C 更佳的通信效果。图 5-7 是 RS423A 的连接示意图。

图 5-7

RS-422A 标准

RS-422A 总线采用平衡输出的发送器,差分输入的接收器。如图 5-8 所示。

图 5-8

RS-422A 的输出信号线间的电压为±2v,接收器的识别电压为±0.2v。共模范围±25v。在高速传送信号时,应该考虑到通信线路的阻抗匹配,一般在接收端加终端电阻以吸收掉反射波。电阻网络也应该是平衡的,如图 5-9 所示。

图 5-9 为 RS-422A 平衡输出差分输示意图

 

RS-485 标准

RS-485 适用于收发双方共享一对线进行通信,也适用于多个点之间共享一对线路进行总线方式联网,但通信只能是半双工的,线路如图 5-10 所示。

图 5-10

典型的 RS232 到 RS422/485 转换芯片有:MAX481/483/485/487/488/489/490/491,SN75175/176/184 等等,它们均只需单一+5v 电源供电即可工作(芯片内部采用电荷泵方式升压)。具体使用方法可查阅有关技术手册。

五、S3C2410 内置的 UART 控制器

S3C2410 内部具有 3 个独立的 UART 控制器,每个控制器都可以工作在 Interrupt(中断)模式或 DMA(直接内存访问)模式,也就是说 UART 控制器可以 CPU 与 UART 控制器传送资料的时候产生中断或 DMA 请求。并且每个 UART 均具有 16 字节的 FIFO(先入先出寄存器),支持的最高波特率可达到 230.4Kbps

图 5-11 是 S3C2410 内部 UART 控制器的结构图

图 5-11

UART 的操作

UART 的操作分为以下几个部分,分别是:资料发送、资料接收、产生中断、产生波特率、Loopback 模式、红外模式以及自动流控模式。

资料发送

发送的资料帧格式是可以编程设置的。它包含了起始位、5~8 个资料位、可选的奇偶校验位以及 1~2 位停止位。这些都是通过 UART 的控制寄存器 ULCONn 来设置的。

资料接收

同发送一样,接收的资料帧格式也是可以进行编程设置的。此外,还具备了检测溢出出错、奇偶校验出错、帧出错等出错检测,并且每种错误都可以置相应的错误标志。

自动流控模式

S3C2410 的 UART0 和 UART1 都可以通过各自的 nRTS 和 nCTS 信号来实现自动流控。

在自动流控(AFC)模式下 nRTS 取决于接收端的状态,而 nCTS 控制了发送断的操作。具体地说:只有当 nCTS 有效时(表明接收方的 FIFO 已经准备就绪来接收资料了),UART 才会将 FIFO 中的资料发送出去。在 UART 接收资料之前,只要当接收 FIFO 有至少 2-byte 空余的时候,nRTS 就会被置为有效。图 5-12 是 UART 自动流控模式的连接方式

图 5-12

中断 /DMA 请求产生

S3C2410 的每个 UART 都有 7 种状态,分别是:溢出覆盖(Overrun)错误、奇偶校验错误、帧出错、断线错误、接收就绪、发送缓冲空闲、发送移位器空闲。它们在 UART 状态寄存器 UTRSTATn / UERSTATn 中有相应的标志位。

波特率发生器

每个 UART 控制器都有各自的波特率发生器来产生发送和接收资料所用的序列时钟,波特率发生器的时钟源可以 CPU 内部的系统时钟,也可以从 CPU 的 UCLK 管脚由外部取得时钟信号,并且可以通过 UCONn 选择各自的时钟源。

波特率产生的具体计算方法如下:

当选择 CPU 内部时钟时:

UBRDIVn=(int)(PCLK/(bps*16))-1,bps 为所需要的波特率值,PCLK 为 CPU 内部外设总线(APB)的工作时钟。

当需要得到更精确的波特率时,可以选择由 UCLK 引入的外部时钟来生成。

UBRDIVn=(int)(UCLK/(bps*16))-1

LoopBack 操作模式

S3C2410 CPU 的 UART 提供了一种测试模式,也就是这里所说的 LoopBack 模式。在设计系统的具体应用时,为了判断通讯故障是由于外部的数据链路上的问题,还是 CPU 内驱动程序或 CPU 本身的问题,这就需要采用 LoopBack 模式来进行测试。在 LoopBack 模式中,资料发送端 TXD 在 UART 内部就从逻辑上与接收端 RXD 连在一起,并可以来验证资料的收发是否正常。

 

UART 控制寄存器

下面将针对 UART 的各个控制寄存器逐一进行讲解,以期对 UART 的操作和设置能有更进一步的了解。

ULCONn (UART Line Control Register)见图 5-13

图 5-13

Word Length :资料位长度

Number of Stop Bit :停止位数

Parity Mode :奇偶校验位类型

Infra-Red Mode :UART/ 红外模式选择(当以 UART 模式工作时,需设为“0”)

UCONn (UART Control Register)见图 5-14

Receive Mode :选择接收模式。如果是采用 DMA 模式的话,还需要指定说使用的 DMA 信道。

Transmit Mode :同上。

Send Break Signal :选择是否在传 1 帧资料中途发送 Break 信号。

Loopback Mode :选择是否将 UART 置于 Loopback 测试模式。

Rx Error Status Interrupt Enable :选择是否使能当发生接收异常时,是否产生接收错误中断。

Rx Time Out Enable :是否使能接收超时中断。

Rx Interrupt Type :选择接收中断类型。

选择 0:Pulse(脉冲式 / 边沿式中断。非 FIFO 模式时,一旦接收缓冲区中有资料,即产生一个中断;为 FIFO 模式时,一旦当 FIFO 中的资料达到一定的触发水平后,即产生一个中断)

选择 1:Level(电平模式中断。非 FIFO 模式时,只要接收缓冲区中有资料,即产生中断;为 FIFO 模式时,只要 FIFO 中的资料达到触发水平后,即产生中断)

Tx Interrupt Type :类同于 Rx Interrupt Type

Clock SelecTIon :选择 UART 波特率发生器的时钟源。

图 5-14

UFCONn (UART FIFO Conrtol Register)见图 5-15

FIFO Enable :FIFO 使能选择。

Rx FIFO Reset :选择当复位接收 FIFO 时是否自动清除 FIFO 中的内容。

Tx FIFO Reset :选择当复位发送 FIFO 时是否自动清除 FIFO 中的内容。

Rx FIFO Trigger Level :选择接收 FIFO 的触发水平。

Tx FIFO Trigger Level :选择发送 FIFO 的触发水平。

图 5-15

UMCONn (UART Modem Control Register)见图 5-16

Request to Send :如果在 AFC 模式下,该位将由 UART 控制器自动设置;否则的话就必须由用户的软件来控制。

Auto Flow Control :选择是否使能自动流控(AFC)。

图 5-16

UTRSTATn (UART TX/RX Status Register)见图 5-17

Receive buffer data ready :当接收缓冲寄存器从 UART 接收端口接收到有效资料时将自动置“1”。反之为“0”则表示缓冲器中没有资料。

Transmit buffer empty :当发送缓冲寄存器中为空,自动置“1”;反之表明缓冲器中正有资料等待发送。

Transmitter empty :当发送缓冲器中已经没有有效资料时,自动置“1”;反之表明尚有资料未发送。

图 5-17

UERSTATn (UART Error Status Register)见图 5-18

Overrun Error :为“1”,表明发生 Overrun 错误。

Frame Error :为“1”。表明发生 Frame(帧)错误。

图 5-18

UFSTATn :(UART FIFO Status Register)见图 5-19

Rx FIFO Count :接收 FIFO 中当前存放的字节数。

Tx FIFO Count :发送 FIFO 中当前存放的字节数。

Rx FIFO Full :为“1“表明接收 FIFO 已满。

Tx FIFO Full :为“1“表明发送 FIFO 已满。

图 5-19

UMSTATn :(UART FIFO Status Register)见图 5-20

Clear to Send :为“0”表示 CTS 无效;为“1”表示 CTS 有效。

Delta CTS :指示自从上次 CPU 访问该位后,nCTS 的状态有无发生改变。

为“0”则说明不曾改变;反之表明 nCTS 信号已经变化了。

图 5-20

UTXHn 和 URXHn 分别是 UART 发送和接收资料寄存器

这两个寄存器存放着发送和接收的资料,当然只有一个字节8位资料。需要注意的是在发生溢出错误的时候,接收的资料必须要被读出来,否则会引发下次溢出错误

UBRDIVn :(UART Baud Rate Divisor Register)见图 5-21

图 5-21

关于 UART 波特率的计算方法,在前面的内容中已经有详细的阐述,此处不做多余说明。

小结:读写状态寄存器 UTRSTAT 以及错误状态寄存 UERSTAT,可以反映芯片目前的读写状态以及错误类型。FIFO 状态寄存器 UFSTAT 和 MODEM 状态寄存器 UMSTAT,通过前者可以读出目前 FIFO 是否满以及其中的字节数;通过后者可以读出目前 MODEM 的 CTS 状态。

相关推荐

电子产业图谱