为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长。
串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用.常用的串口是 RS-232-C 接口(又称 EIA RS-232-C)它是在 1970 年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准.它的全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准"该标准规定采用一个 25 个脚的 DB25 连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定.传输距离在码元畸变小于 4% 的情况下,传输电缆长度应为 50 英尺,串口通信协议也可以用于获取远程采集设备的数据。它属于ISO’S OSI七层参考模型中的数据链路层。
在串口通信中,常用的协议包括RS-232、RS-422和RS-485。串口由收发器组成。发送器是通过 TXD 引脚发送串行数据,接收器是通过 RXD 引脚接收串行数据。发送器和接收器都利用了一个移位寄存器,这个移位寄存器可以将数据进行“并转串”和“串转并”。虽然一个UART接口通常都包含了发送器和接收器,而实际上一个全双工串口UART控制器需要独立的发送和接收通道。
RS-232的每一个引脚都有它的作用,也有信号流动方向。原先的RS-232是用来连接调制解调器的(俗称“猫”)的,因此它的引脚位意义通常也和调制解调器传输相关。
从功能上来看,全部信号线分为3类:数据线(TXD、RXD)、地线(GND)和联络控制线(DSR、DTR、RI、DCD、RTS、CTS)
两个通讯设备之间的地电位可能不一样,这会影响收发双方的电平信号,所以两个串口设备之间必须要使用地线连接,即共地。
串口线中的联络控制线使用逻辑1表示信号有效,逻辑0表示信号无效。例如,当计算机端控制DTR信号线为逻辑1时,其目的是告知远端的调制解调器本机已准备好接收数据,0表示还没准备就绪。
目前,其它工业控制使用的串口通讯中,一般只使用RXD、TXD以及GND三条信号线,直接传输数据信号,RTS、CTS等联络控制线被裁剪掉。
使用RS-232标准串口的设备间通讯结构图如下:
两个通讯设备的“DB9接口”之间用串口线建立起连接,串口线中使用RS-232标准传输数据信号。由于RS-232电平标准的信号不能直接被控制器直接识别,所以信号需要经过一个“电平转换芯片”转换成控制器能识别的TTL标准电平信号。
电平标准详细表如下:
数字电路中常用TTL的电平标准。理想状态下使用5V表示二进制逻辑1,使用0V表示二进制逻辑0。为了增加串口通讯的远距离传输及抗干扰能力,它使用负电平表示逻辑1,正电平表示逻辑0。
串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。
(1)波特率: 这是一个衡量通信速度的参数。**它表示每秒钟传送的位(bit)的个数。**例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。波特率有:1200,2400,4800,9600,14400,19200,38400,57600,76800,115200。在数据传输和接收双方,需要预先统一波特率,以便正确的传输数据。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。波特率用于表示数据传输的速度,波特率越高,数据传输速度越快。
(2)数据位: 是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。
(3)停止位: 用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。
(4)奇偶校验位: 在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位为1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。
串行通讯的基础是单线传输,数据通常是在两个站点之间进行传输,按照数据在通信线路上的传送方向可分为3种基本的传送方式:单工、半双工和全双工。
单工模式的数据是单向的,通讯双方一方为发送端,另一方则固定为接收端。信息只能沿一个方向传输,使用一根数据线。例如收音机,只能接收发射塔给它的数据,并不能给发射塔发数据。
半双工模式是指通讯双方都具有发送器和接收器,双方既可以发射也可以接收,但是接收和发射不能同时进行。 半双工一般用数据能在两个方向传输的场合,例如对讲机。
全双工数据通讯分别由两根可以在两个不同的站点同时发送和接收的传输线进行传输数据,通讯双方能在同一时刻进行发送和接收操作。全双工模式下,每一端都有发送器和接收器,有两条传输线可以在交互式应用场合中使用,信息传输效率高,例如手机。
串口通讯的数据包由发送设备通过自身的 TXD 接口传输到接收设备的 RXD 接口,通讯双方的数据包格式要规约一致才能正常收发数据。串口通讯协议层中,规定了数据包的内容,它由起始位、主体数据位、校验位以及停止位组成。
比特率与波特率的区别:
(1)比特率:
比特率(bit rate)又称传信率、信息传输速率(简称信息速率,information rate)。其定义是:通信线路(或系统)单位时间(每秒)内传输的信息量,即每秒能传输的二进制位数,通常用Rb表示,其单位是比特/秒(bit/s或b/s,英文缩略语为bps)。
在二进制系统中,信息速率(比特率)与信号速率(波特率)相等,例如,当系统以每秒50个二进制符号传输时,信息速率为50bit/s,信号速率也为50Bd(波特)。在无调制的情况下,比特率等于波特率;采用调相技术时,比特率不等于波特率。通信系统的发送设备和接收设备必须在相同的波特率下工作,否则会出现帧同步错误。
(2) 波特率:
波特率(Baud rate)又称传码率、码元传输速率(简称码元速率)、信号传输速率(简称信号速率,signaling rate)或调制速率。其定义是:通信线路(或系统)单位时间(每秒)内传输的码元(脉冲)个数;或者表示信号调制过程中,单位时间内调制信号波形的变换次数,通常用RB表示,单位是波特(Bd或Baud,前者规范)。如果每秒传输1个码元就称为1Bd;如果1码元的时间长短为200ms,则每秒可传输5个码元,那么码元速率(波特率)就是5Bd。
波特率(码元速率)并没有限定是何种进制的码元,所以给出波特率时必须说明这个码元的进制。对于M进制码元,比特率(信息速率)Rb与波特率(码元速率)RB的关系式为:
Rb=RB·lbM
式中:lbM=log2M,表示M的以2为底的对数。显然,对于二进制码元,由于lb2=1,所以Rb=RB,即波特率与比特率在数值上相等,但单位不同,也即二者代表的意义不同。
例如,波特率为600Bd,则在二进制时,比特率也为600bit/s;在四进制时,由于lb4=2,所以比特率为1200bit/s。可见,在一个码元中可以传送多个比特。
注:本文主要是串口基础介绍,内容多来自网络,参考已注明主要出处。若侵权,请告知删除!
##参考:
1.串口通讯介绍
2.UART串口协议基础1
3.串口通信原理和简介
4.51单片机 | 串口工作原理知识点汇总
5. 波特率和比特率的关系