串口通信基础

来源:互联网 发布:vue.js highcharts 编辑:程序博客网 时间:2024/05/22 03:11

1、串口通信原理

串口即串行端口,它是CPU和串行设备之间的编码转换器。当数据从CPU到串口发送出去时,字节数据转换为串行的位;在接受数据时,串行的位被转换为字节数据。串口按位即bit发送和接收字节,比按字节的并行通信慢但可以使用一根线发送数据的同时用另一根线接收数据。串口通信使用地线、发送、接收这3根线来完成,其它线用于握手,但不是必须的。早期计算机上一般包含两个基于RS-232的串口,由于串口不支持热插拔及传输速率较低,目前部分新主板和大部分便携电脑已开始取消该接口。目前串口多用于工控和测量设备以及部分通信设备中。

串口通信可分为同步串行通信方式和异步串行通信方式:

同步串行接口SPI是Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息,TRM450是SPI接口。

异步串行接口UART是Universal Asynchronous Receiver/Transmitter的缩写,通用异步接收/发送。UART是一个并行输入成为串行输出的芯片,通常集成在主板上。UART包含TTL电平的串口和RS232电平的串口。 TTL电平是3.3V的,而RS232是负逻辑电平,它定义+5~+12V为低电平,而-12~-5V为高电平,MDS2710、MDS SD4、EL805等是RS232接口,EL806有TTL接口。一般的单片机是TTL或CMOS电特性的,而PC机的串口电特性为RS232,所以两者连接时应使用串口电平转换芯片进行电平转换。

串口从发展历史来看,有三种接口标准,RS-232、RS-422、RS-485:

RS-232可以用于连接鼠标、打印机、Modem、工业仪表等,一般用在实验室等短距离(20米左右),传输速度要求不高(异步传输时波特率仅为20Kbps,实际已远超这个数值)的场合,且抗噪声、干扰较弱。单向传输。RS-232只限于PC串口和设备间点对点的通信。传统的RS-232有22根线,采用标准25芯D型插头座(DB25),后来使用简化为9芯D型插座(DB9),现在应用中一般使用9芯D型插座

DB-9针连接头:

DB-9接头针脚的功能(RS-232):
数据:
TXD(pin 3):串口数据输出(Transmit Data)
RXD(pin 2):串口数据输入(Receive Data)
握手:
RTS(pin 7):发送数据请求(Request to Send)
CTS(pin 8):清除发送(Clear to Send)
DSR(pin 6):数据发送就绪(Data Send Ready)
DCD(pin 1):数据载波检测(Data Carrier Detect)
DTR(pin 4):数据终端就绪(Data Terminal Ready)
地线:
GND(pin 5):地线
其他
RI(pin 9):铃声指示

RS-422在RS-232的基础上提高了传输距离和传输速度,在相同传输线上可连接多个站点(最多10个)。

RS-485从RS-422发展而来,分为二线和四线方式,可连接多个站点(最多32个)。

RS-485与RS-422一样,其最大传输距离约为1219米,最大传输速率为10Mb/s。平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能使用规定最长的电缆长度。只有在很短的距离下才能获得最高速率传输。一般100米长双绞线最大传输速率仅为1Mb/s。

RS-485与RS-422的共模输出电压是不同的,RS-485是-7V至+12V之间,而RS-422在-7V至+7V之间,RS-485接收器最小输入阻抗为12kΩ、RS-422是4kΩ;由于RS-485满足所有RS-422的规范,所以RS-485的驱动器可以用在RS-422网络中应用。

RS-232与RS-422是全双工的,RS485属于半双工(4线or2线为全双工?)。

串口通信最重要的参数是波特率、数据位、停止位、奇偶校验位:

波特率:每秒钟传送bit的个数,用来衡量通信速度。时钟周期即为波特率,同时串口通信在数据线上的采样率也即为波特率。通常电话线的波特率为14400、28800、36600。波特率和距离成反比,所以高波特率通常用于相距很近的仪器间的通信。

数据位:当发送一个信息包时,其中的数据一般占5、7、8位,如何设置取决于你想要传送的数据类型。

停止位:表示单个包的最后一位。典型的值为1、1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。奇偶校验位是一个表示给定位数的二进制数中 1 的个数是奇数还是偶数的二进制数,是最简单的错误检测码。对于奇偶校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据(数据位+校验位)有偶个或者奇个1。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位为1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。

2、物理接口标准

3、串口通信协议

串行通信协议可分为同步协议和异步协议,包含以下三种协议:

起止式异步协议

起止式异步协议的特点是一个字符一个字符地传输,传送一个字符总是以起始位开始,以停止位结束。如图所示:



每一个字符的前面都有一个起始位(低电平,逻辑值为0),字符本身由5—7位数据位组成,字符后面是一位校验位(也可以没有校验位),后面是一位/一位半/两位的停止位,停止位后面是不定长度的空闲位。停止位和空闲位为高电平,逻辑值为1,这样就能保证起始位开始处一定有一个下跳沿。

传送时,数据的低位在前,高位在后,如图表示了传送一个字符E的ASCII码的波形1010001:

起始位是低电平时,告诉收方传送开始,它的到来,表示下面接着是数据位来了,要准备接收。停止位标志一个字符的结束,它表示一个字符传送完毕。这样就为通信双方提供了何时开始收发、何时结束的标志。

面向字符的同步协议

面向比特的同步协议


4、握手

RS-232通行方式允许简单连接三线:Tx、Rx和地线。但是对于数据传输,双方必须对数据定时采用使用相同匹配参数,如波特率。尽管这种方法对于大多数应用已经足够,但是对于接收方过载的情况这种使用受到限制,这时需要串口的握手功能。常用的握手形式有三种,软件握手、硬件握手和Xmodem:

软件握手:通常用在实际数据是控制字符的情况,类似于GPIB使用命令字符串的方式。必须的线仍然是三根:Tx,Rx和地线,因为控制字符在传输线上和普通字符没有区别。在软件握手中,接收方发送字符OXFF让发送方停止发送数据,发送XON让发送方继续发送数据。

例如:假设发送方以高波特率发送数据。在传输中,接收方发现由于CPU忙于其他工作,输入buffer已经满了。为了暂时停止传输,接收方发送XOFF字符,典型的值是十进制19,即十六进制13,直到输入buffer空了。一旦接收方准备好接收,它发送XON字符,典型的值是十进制17,即十六进制11,继续通信。

函数SetXModem允许用户使用或者禁止用户使用两个控制字符XON和XOFF。

硬件握手RTS/CTS和DTR/DSR一起工作,一个作为输出,另一个作为输入。第一组线是RTS(Request to Send)和CTS(Clear toSend)。当接收方准备好接收数据,它置高RTS线表示它准备好了,如果发送方也就绪,它置高CTS,表示它即将发送数据。另一组线是DTR(DataTerminal Ready)和DSR(Data Send Ready)。这些线主要用于Modem通信。使得串口和Modem通信他们的状态。例如:当Modem已经准备好接收来自PC的数据,它置高DTR线,表示和电话线的连接已经建立。读取DSR线置高,PC机开始发送数据。一个简单的规则是DTR/DSR用于表示系统通信就绪,而RTS/CTS用于单个数据包的传输。

在LabWindows,函数SetCTSMode使能或者禁止使用硬件握手。

XModem握手:XModem文件传输协议。这个协议在Modem通信中非常通用,它是一种是用拨号调制解调器的个人计算机通信中广泛使用的异步传输协议。尽管它通常使用在Modem通信中,XModem协议能够直接在其他遵循这个协议的设备通信中使用。只要PC和其他设备使用XModem协议,在文件传输中就使用LabWindows的XModem函数。函数是XModemConfig,XModemSend和XModemReceive。



0 0
原创粉丝点击