`
buliedian
  • 浏览: 1238371 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

串口通信的基本概念

 
阅读更多
问题: 我从那里能够学到串口通信的基本知识

解答: 串口通信的基本概念
1,什么是串口?
2,什么是RS-232?
3,什么是RS-422?
4,什么是RS-485?
5,什么是握手?
1,什么是串口?
串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。

串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。

典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配:
a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。
b,数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。
c,停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。
d,奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。

2,什么是RS-232?
RS-232(ANSI/EIA-232标准)是IBM-PC及其兼容机上的串行连接标准。可用于许多用途,比如连接鼠标、打印机或者Modem,同时也可以接工业仪器仪表。用于驱动和连线的改进,实际应用中RS-232的传输长度或者速度常常超过标准的值。RS-232只限于PC串口和设备间点对点的通信。RS-232串口通信最远距离是50英尺。

DB-9针连接头
-------------
\ 1 2 3 4 5 /
\ 6 7 8 9 /
-------
从计算机连出的线的截面。
RS-232针脚的功能:

数据:
TXD(pin 3):串口数据输出
RXD(pin 2):串口数据输入

握手:
RTS(pin 7):发送数据请求
CTS(pin 8):清除发送
DSR(pin 6):数据发送就绪
DCD(pin 1):数据载波检测
DTR(pin 4):数据终端就绪

地线:
GND(pin 5):地线

其他
RI(pin 9):铃声指示

3,什么是RS-422?
RS-422(EIA RS-422-A Standard)是Apple的Macintosh计算机的串口连接标准。RS-422使用差分信号,RS-232使用非平衡参考地的信号。差分传输使用两根线发送和接收信号,对比RS-232,它能更好的抗噪声和有更远的传输距离。在工业环境中更好的抗噪性和更远的传输距离是一个很大的优点。

4,什么是RS-485?
RS-485(EIA-485标准)是RS-422的改进,因为它增加了设备的个数,从10个增加到32个,同时定义了在最大设备个数情况下的电气特性,以保证足够的信号电压。有了多个设备的能力,你可以使用一个单个RS-422口建立设备网络。出色抗噪和多设备能力,在工业应用中建立连向PC机的分布式设备网络、其他数据收集控制器、HMI或者其他操作时,串行连接会选择RS-485。RS-485是RS-422的超集,因此所有的RS-422设备可以被RS-485控制。RS-485可以用超过4000英尺的线进行串行通行。

DB-9 引脚连接

-------------
\ 1 2 3 4 5 /
\ 6 7 8 9 /
-------

从计算机连出的线的截面。

RS-485和RS-422的引脚的功能
数据:TXD+(pin 8),TXD-(pin 9),RXD+(pin 4),RXD-(pin 5)
握手:RTS+(pin 3),RTS-(pin 7),CTS+(pin 2),CTS-(pin 6)
地线:GND (pin 1)

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

a,软件握手:我们讨论的第一种握手是软件握手。通常用在实际数据是控制字符的情况,类似于GPIB使用命令字符串的方式。必须的线仍然是三根:Tx,Rx和地线,因为控制字符在传输线上和普通字符没有区别,函数SetXModem允许用户使能或者禁止用户使用两个控制字符XON和OXFF。这些字符在通信中由接收方发送,使发送方暂停。
例如:假设发送方以高波特率发送数据。在传输中,接收方发现由于CPU忙于其他工作,输入buffer已经满了。为了暂时停止传输,接收方发送XOFF,典型的值是十进制19,即十六进制13,直到输入buffer空了。一旦接收方准备好接收,它发送XON,典型的值是十进制17,即十六进制11,继续通信。输入buffer半满时,LabWindows发送XOFF。此外,如果XOFF传输被打断,LabWindows会在buffer达到75%和90%时发送XOFF。显然,发送方必须遵循此守则以保证传输继续。

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

在LabWindows,函数SetCTSMode使能或者禁止使用硬件握手。如果CTS模式使能,LabWindows使用如下规则:
当PC发送数据:
RS-232库必须检测CTS线高后才能发送数据。

当PC接收数据:
如果端口打开,且输入队列有空接收数据,库函数置高RTS和DTR。
如果输入队列90%满,库函数置低RTS,但使DTR维持高电平。
如果端口队列近乎空了,哭喊数置高RTS,但使DRT维持高电平。
如果端口关闭,库函数置低RTS和DTR。

c,XModem握手:最后讨论的握手叫做XModem文件传输协议。这个协议在Modem通信中非常通用。尽管它通常使用在Modem通信中,XModem协议能够直接在其他遵循这个协议的设备通信中使用。在LabWindows中,实际的XModem应用对用户隐藏了。只要PC和其他设备使用XModem协议,在文件传输中就使用LabWindows的XModem函数。函数是XModemConfig,XModemSend和XModemReceive。

XModem使用介于如下参数的协议:start_of_data、end_of_data、neg_ack、wait_delay、start_delay、max_tries、packet_size。这些参数需要通信双方认定,标准的XModem有一个标准的定义:然而,可以通过XModemConfig函数修改,以满足具体需要。这些参数的使用方法由接收方发送的字符neg_ack确定。这通知发送方其准备接收数据。它开始尝试发送,有一个超时参数start_delay;当超时的尝试超过max_ties次数,或者收到接收方发送的start_of_data,发送方停止尝试。如果从发送方收到start_of_data,接收方将读取后继信息数据包。包中含有包的数目、包数目的补码作为错误校验、packet_size字节大小的实际数据包,和进一步错误检查的求和校验值。在读取数据后,接收方会调用wait_delay,然后想发送方发送响应。如果发送方没有收到响应,它会重新发送数据包,直到收到响应或者超过重发次数的最大值max_tries。如果一直没有收到响应,发送方通知用户传输数据失败。
由于数据必须以pack_size个字节按包发送,当最后一个数据包发送时,如果数据不够放满一个数据包,后面会填充ASCII码NULL(0)字节。这导致接收的数据比原数据多。在XModem情况下一定不要使用XON/XOFF,因为XModem发送方发出包的数目很可能增加到XON/OFF控制字符的值,从而导致通信故障。


分享到:
评论

相关推荐

    串口通信的基本概念全集

    【串口通信】是指通过...总的来说,串口通信是计算机与设备间进行数据交换的重要方式,通过理解并掌握串口通信的基本概念和相关标准,我们可以实现不同设备之间的有效通信,尤其是在远程监控、数据采集和控制系统中。

    串口通信编程详解和实例

    串口通信是计算机与外部串行设备之间的数据传输通道,包括串行通信协议、串口设置、数据传输等方面。串口通信的实现机制是根据不同的条件实现对串口的灵活编程控制。 二、串口通信方法 1. 使用 VC++ 提供的串行...

    串口通信的基本概念.pdf

    ### 串口通信的基本概念 #### 一、什么是串口? 串口,即串行接口,是一种常用的设备通信协议,不同于通用串行总线(USB)等其他类型的接口。大多数个人计算机都内置了两个基于RS-232标准的串行端口。串口通信在...

    深入浅出VC++串口编程之基本概念.PDF

    首先,书中会介绍串行通信的基本概念。串行通信是指数据以位(bit)为单位,按照时间顺序依次传输的一种通信方式。与并行通信相比,串行通信只需要较少的物理线路,因此在硬件成本和连线复杂性上具有优势,但传输...

    实验15:串口通信,串口通讯实验报告,C,C++

    总的来说,这个实验旨在帮助你理解51单片机的串口通信机制,掌握基本的串行通信编程技巧,并能应用到实际项目中去。通过这个实验,你将不仅了解串口通信的基本原理,还能增强你的动手能力和问题解决能力。

    串行通讯的概念 串行通讯 串行通讯的特点

    ### 串行通讯的概念及其特点 #### 一、串行通讯的基本定义 串行通讯是一种数据传输技术,其中数据按照顺序一位接一位...无论是从基本概念还是具体实现细节来看,串行通讯都是理解和掌握数据通信技术不可或缺的一部分。

    五大串口通信的基本概念

    ### 五大串口通信的基本概念 #### 一、串口通信概述 **串口**是一种在计算机和其他电子设备之间进行数据传输的接口形式。它通过将数据分解为一系列连续的比特流来实现通信,与并行通信相比,串行通信在物理连接上...

    串口通讯基本接线方法 概念及接口电路

    串口通讯,也被称为串行通信,是一种在设备间传输数据的方式,通常用于低速、长距离或简单网络环境的数据交换。与并行通信相比,串口通讯使用较少的线缆,因此更节省成本,更适合远程连接。在本文中,我们将深入探讨...

    串口通信的基本知识概念

    了解串口通信的基本概念对于进行设备间的通信配置至关重要,特别是对于那些负责维护工业控制系统和测试设备的工程师和技术人员。掌握波特率、数据位、停止位和奇偶校验等参数,以及RS232、RS422和RS485等通信标准的...

    串口通信基本接线方法

    在了解串口通信的基本接线方法之前,我们先来了解一下串口的基本概念。串口,即串行接口,是一种按位(bit)发送数据的通信协议。在计算机科学中,串行接口用于连接计算机与其他外围设备,例如鼠标、键盘、打印机等...

    串口通讯动态链接库代码

    1. **串口通讯基本概念**: - **波特率**:决定数据传输的速度,如9600bps、19200bps等。 - **数据位**:通常有5、6、7、8位,用于传输一个字符的二进制表示。 - **停止位**:1或2位,用于确保接收端正确识别数据...

    易语言串口通信基本接线方法

    串口通信,也称为串行通信,是设备之间通过串行接口进行数据交换的一种通信方式。 串口通信的基本概念: 1. 波特率:数据传输的速度,单位是比特每秒(bps),如9600bps、115200bps等。 2. 数据位:一次传输的数据...

    RS232串口通信编程大全.pdf

    该技术文摘涵盖了RS232串口通信的方方面面,包括串口基本概念、串口通信协议、串口通信接口、串口通信技术等。 一、串口通信基本概念 串口通信是指计算机与外部设备之间的串行数据传输,通过串口(COM口)进行数据...

    Java实现串口通信

    首先,我们需要了解Java中的串口通信基本概念。串行端口,或称为串口,是一种用于设备间通信的接口,它以串行方式传输数据,一次传输一位。在Java中,通常使用javax.comm包来处理串口通信,这个包提供了SerialPort类...

    vb串口通讯源码简单的VB串口通信示例

    在探讨“vb串口通讯源码简单的VB串口通信示例”这一主题时,我们可以从中提炼出关于Visual Basic(简称VB)环境下串行通信的基本原理和技术实现的关键知识点。虽然提供的链接无法直接访问具体内容,但根据标题和描述...

    有关串口通信的基本概念

    串口通信是一种广泛使用的数据通信方式,它主要利用串行通信技术在计算机和各种外部设备之间传输数据。它能够提供简单、可靠且低成本的通信方式,并且适用于多种不同的应用场景。在深入理解串口通信之前,我们需要先...

    完整串口通信程序(发送和接受)源代码.zip_串口发送_串口通信_串口通信代码_串口通讯_通信接受程序

    首先,我们要理解串口通信的基本概念。串口通信,也称为串行通信,是指数据以串行方式一位一位地传输。与并行通信相比,串行通信所需的硬件资源较少,但传输速度相对较慢。在个人计算机上,串口通常指的是RS-232接口...

    龚建伟_Visual C++_Turbo C串口通信编程实践.pdf

    根据提供的文件信息,我们可以深入探讨以下几个关键的知识点:串口通信的基本概念、Visual C++与Turbo C在串口通信中的应用以及如何实现串口数据的读取与转换。 ### 一、串口通信基本概念 #### 1. 什么是串行通信 ...

    深入浅出VC++串口编程之基本概念

    《深入浅出VC++串口编程之基本概念》是一本专为VC++开发者设计的教程,旨在帮助读者理解和掌握串口通信的基本原理和实践方法。串口通信,又称RS-232通信,是计算机硬件和设备之间常用的一种数据传输方式,尤其在...

Global site tag (gtag.js) - Google Analytics