精华内容
下载资源
问答
  • 串口信号

    2006-09-02 00:13:00
    UART信号描述 引脚序号 信号名称 符号 流向 功能 1 载波检测 DCD DTE

    UART信号描述

    引脚序号 信号名称 符号 流向 功能
    1 载波检测 DCD DTE<-DCE 表示DTE接收到远程载波
    2 接收数据 RXD DTE<-DCE DTE接收串行数据
    3 发送数据 TXD DTE->DCE DTE发送串行数据
    4 数据终端准备好 DTR DTE->DCE DTE准备好
    5 信号地 GND   信号公共地
    6 数据设备准备好 DSR DTE<-DCE DCE准备好
    7 请求发送 DTS DTE->DCE DTE请求DCE将线路切换到发送方式
    8 允许发送 RTS DTE<-DCE DCE告诉DTE线路已接通可以发送数据
    9 振铃指示 RI DTE<-DCE 表示DCE线路已接通,出现振铃
     

     

    展开全文
  • 查看串口 信号时序 ,支持多个通道 ,适合 嵌入式开发以及相关智能硬件通信人员 使用
  • 工业控制中把USB扫描枪的键盘信号转成串口信号输出给PLC
  •   通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。...2.3.1 串口信号定义和接线方法-5针串口-9针串口-全功能串口 1.串口、并口接口定义   并行口与串行口的区别是交换信息的...

      通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上
      

    2.3.1 串口信号定义和接线方法-5针串口-9针串口-全功能串口

    1.串口、并口接口定义

      并行口与串行口的区别是交换信息的方式不同,并行口能同时通过8条数据线传输信息,一次传输一个字节;而串行口只能用1条线传输一位数据,每次传输一个字节的一位。并行口由于同时传输更多的信息,速度明显高于串行口,但串行口可以用于比并行口更远距离的数据传输。
      

    2.25针并行口插口的针脚功能:

                  表2 3 25针并行口插口的针脚功能
    在这里插入图片描述

    3.串行口的典型代表是RS-232C及其兼容插口,有9针和25针两类。

      25针串行口具有20mA电流环接口功能,用9、11、18、25针来实现。其针脚功能如下:
                    表2 4 25针串行口插口的针脚功能
    在这里插入图片描述

    4.9针串行口的针脚功能

                      表2 5 9针串行口插口的针脚功能
    在这里插入图片描述

    5.串口通信基本原理及接线方法

      目前较为常用的串口有9针串口(DB9)和25针串口(DB25),通信距离较近时(<12m),可以用电缆线直接连接标准RS232端口(RS422,RS485较远),若距离较远,需附加调制解调器(MODEM)。最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连,本文只涉及到最为基本的接法,且直接用RS232相连。表2 6中为DB9和DB25的常用信号脚说明。
                    表2 6 DB9和DB25的常用信号脚说明
    在这里插入图片描述

      RS232C串口通信接线方法(三线制),串口传输数据只要有接收数据针脚和发送针脚就能实现:同一个串口的接收脚和发送脚直接用线相连,两个串口相连或一个串口和多个串口相连:同一个串口的接收脚和发送脚直接用线相连 对9针串口和25针串口,均是2与3直接相连;两个不同串口(不论是同一台计算机的两个串口或分别是不同计算机的串口)。
      上面分析是对微机标准串行口而言的,还有许多非标准设备,如接收GPS数据或电子罗盘数据,只要记住一个原则:接收数据针脚(或线)与发送数据针脚(或线)相连,彼此交叉,信号地对应相接,就能百战百胜。
    在这里插入图片描述
    在这里插入图片描述

                          图2 32 常用串口电缆
      串口调试中要注意的几点:
      串口调试时,准备一个好用的调试工具,如串口调试助手、串口精灵等,有事半功倍之效果; 强烈建议不要带电插拨串口,插拨时至少有一端是断电的,否则串口易损坏。

    6.单工、半双工和全双工的定义

      如果在通信过程的任意时刻,信息只能由一方A传到另一方B,则称为单工。如果在任意时刻,信息既可由A传到B,又能由B传A,但只能由一个方向上的传输存在,称为半双工传输。如果在任意时刻,线路上存在A到B和B到A的双向信号传输,则称为全双工。
      电话线就是二线全双工信道。 由于采用了回波抵消技术,双向的传输信号不致混淆不清。双工信道有时也将收、发信道分开,采用分离的线路或频带传输相反方向的信号,如回线传输。

    7.奇偶校验

      串行数据在传输过程中,由于干扰可能引起信息的出错,例如,传输字符‘E’,其各位为:
    在这里插入图片描述

      由于干扰,可能使位变为1,这种情况,我们称为出现了“误码”。我们把如何发现传输中的错误,叫“检错”。发现错误后,如何消除错误,叫“纠错”。最简单的检错方法是“奇偶校验”,即在传送字符的各位之外,再传送1位奇/偶校验位。可采用奇校验或偶校验。
      奇校验:所有传送的数位(含字符的各数位和校验位)中,“1”的个数为奇数,如:

    在这里插入图片描述

      偶校验:所有传送的数位(含字符的各数位和校验位)中,“1”的个数为偶数,如:

    在这里插入图片描述
      奇偶校验能够检测出信息传输过程中的部分误码(1位误码能检出,2位及2位以上误码不能检出),同时,它不能纠错。在发现错误后,只能要求重发。但由于其实现简单,仍得到了广泛使用。
    有些检错方法,具有自动纠错能力。如循环冗余码(CRC)检错等。

    8.串口通讯流控制

      在串行通讯处理中,常常看到RTS/CTS和XON/XOFF这两个选项(尤其在上位机中),这就是两个流控制的选项,目前流控制主要应用于调制解调器的数据通讯中,但对普通RS232编程,了解一点这方面的知识是有好处的。那么,流控制在串行通讯中有何作用,在编制串行通讯程序怎样应用呢?这里我们就来谈谈这个问题。
      流控制在串行通讯中的作用
      这里讲到的“流”,当然指的是数据流。数据在两个串口之间传输时,常常会出现丢失数据的现象,或者两台计算机的处理速度不同,如台式机与单片机之间的通讯,接收端数据缓冲区已满,则此时继续发送来的数据就会丢失。现在我们在网络上通过MODEM进行数据传输,这个问题就尤为突出。流控制能解决这个问题,当接收端数据处理不过来时,就发出“不再接收”的信号,发送端就停止发送,直到收到“可以继续发送”的信号再发送数据。因此流控制可以控制数据传输的进程,防止数据的丢失。 PC机中常用的两种流控制是硬件流控制(包括RTS/CTS、DTR/CTS等)和软件流控制XON/XOFF(继续/停止),下面分别说明。
      硬件流控制
      硬件流控制常用的有RTS/CTS流控制和DTR/DSR(数据终端就绪/数据设置就绪)流控制。硬件流控制必须将相应的电缆线连上,用RTS/CTS(请求发送/清除发送)流控制时,应将通讯两端的RTS、CTS线对应相连,数据终端设备(如计算机)使用RTS来起始调制解调器或其它数据通讯设备的数据流,而数据通讯设备(如调制解调器)则用CTS来起动和暂停来自计算机的数据流。这种硬件握手方式的过程为:我们在编程时根据接收端缓冲区大小设置一个高位标志(可为缓冲区大小的75%)和一个低位标志(可为缓冲区大小的25%),当缓冲区内数据量达到高位时,我们在接收端将CTS线置低电平(送逻辑0),当发送端的程序检测到CTS为低后,就停止发送数据,直到接收端缓冲区的数据量低于低位而将CTS置高电平。RTS则用来标明接收设备有没有准备好接收数据。常用的流控制还有还有DTR/DSR(数据终端就绪/数据设置就绪)。我们在此不再详述。由于流控制的多样性,我个人认为,当软件里用了流控制时,应做详细的说明,如何接线,如何应用。
      软件流控制
      由于电缆线的限制,我们在普通的控制通讯中一般不用硬件流控制,而用软件流控制。一般通过XON/XOFF来实现软件流控制。常用方法是:当接收端的输入缓冲区内数据量超过设定的高位时,就向数据发送端发出XOFF字符(十进制的19或Control-S,设备编程说明书应该有详细阐述),发送端收到XOFF字符后就立即停止发送数据;当接收端的输入缓冲区内数据量低于设定的低位时,就向数据发送端发出XON字符(十进制的17或Control-Q),发送端收到XON字符后就立即开始发送数据。一般可以从设备配套源程序中找到发送的是什么字符。应该注意,若传输的是二进制数据,标志字符也有可能在数据流中出现而引起误操作,这是软件流控制的缺陷,而硬件流控制不会有。

    9.额外说明:

      UART含义
      随着计算机的日益普及,很多非RS232的串口也要接入PC机,如果为每一种新出现的串口都增加一个新的I/O口显然不现实,因为PC后面板位置有限,因此,将RS232串口和非RS232串口都通过RS232口接入是最佳方案。UART的U(通用)指的就是这个意思。早期ROM BIOS和DOS里的通信软件都是为RS232设计的,在没有检测到DCD有效前不会发送数据,因此,就连发送一个字符这样朴素的应用也要给出DCD、DTR、DSR等控制信号。因此,串口接头上要将一些控制线短接,或者干脆绕过系统软件自己写通信程序。
      到此,UART的涵义就总结为:通用的 异步 (串行) I/O口。就在UART冠以通用二字,准备一统江湖的时候,制造商们不满于它的速度、体积和灵活性(软件可配置),推出了USB和1394串口。目前,笔记本上的UART串口有被取消的趋势,因而有网友发出了“没有串口,吾谁与归”的慨叹,古今多少事,都付笑谈中,USB取代UART是后话,暂且不表。
      话说自从贺氏(Hayes)公司推出了聪明猫(SmartModem),他们制定的MODEM接口就成了业界标准,自此以后,所有公司制造的兼容猫都符合贺氏标准(连AT指令也兼容)。
    细观贺氏制定的MODEM串口,与RS232标准大不相同。DTR在整个通信过程中一直保持有效,DSR在MODEM上电后/可以拨号前有效(取决于软件对DSR的理解),在通信过程的任意时刻,只要DTR/DSR无效,通信过程立即终止。在某种意义上,这也可以算是流控,但肯定不是RS232所指的那种主流控。如果拘泥于RS232,你是不会理解DTR和DSR的用途的。
      贺氏不但改了DTR和DSR,竟然连RTS和CTS的涵义也重新定义了。因此,RTS和CTS已经不具有最开始的意义了。从字面理解RTS和CTS,是用于半双工通信的,当DTE想从收模式改为发模式时,就有效RTS请求发送,DCE收到RTS请求后不能立即完成转换,需要一段时间,然后有效CTS通知DTE:DCE已经转到发模式,DTE可以开始发送了。在全双工时,RTS和CTS都缺省置为有效即可。然而,在贺氏的MODEM串口定义中,RTS和CTS用于硬件流控,和什么全双工/半双工一点关系也没有。 注意,硬件流控是靠软件实现的,之所以强调“硬件”二字,仅仅是因为硬件流控提供了用于流量情况指示的硬件连线,并不是说,你只要把线连上,硬件就能自己流控。如果软件不支持,光连上RTS和CTS是没有用的。
      RTS和CTS硬件流控的软件算法如下:(RTS有效表示PC机可以收,CTS有效表示MODEM可以收,这两个信号互相独立,分别指示一个方向的流量情况) 。
      PC端处理:
      发: 当发现(不一定及时发现) CTS (-3v to -15v)无效时,停止发送,
           当发现(不一定及时发现) CTS (3v to 15v)有效时,恢复发送;
      收: 当接收buffers中的bytes当接收buffers中的bytes>N 时,给 RTS 无效信号(-3v to -15v);
      MODEM端处理:同上,但RTS与CTS交换。
      在RS232中本来CTS 与RTS 有明确的意义,但自从贺氏(HAYES ) 推出了聪明猫(SmartModem)后就有点混淆了。在RS232中RTS 与CTS 是用来半双工模式下的方向切换;HAYES Modem中的RTS ,CTS 是用来进 行硬件流控的。通常UART的RTC、CTS 的含义指后者,即用来做硬流控的。
      如果UART只有RX、TX两个信号,要流控的话只能是软流控;如果有RX,TX,CTS ,RTS 四个信号,则多半是支持硬流控的UART;如果有 RX,TX,CTS ,RTS ,DTR,DSR 六个信号的话,RS232标准的可能性比较大。
      硬流控的RTS 、CTS :RTS (Require To Send,发送请求)为输出信号,用于指示本设备准备好可接收;CTS(Clear To Send,发送清除)为输入信号,有效时停止发送。假定A、B两设备通信,A设备的RTS 连接B设备的CTS ;A设备的CTS 连接B设备 的RTS 。 前一路信号控制B设备的发送,后一路信号控制A设备的发送。对B设备的发送(A设备接收)来说,如果A设备接收缓冲快满的时发出RTS 信号(意思 通知B设备停止发送),B设备通过CTS 检测到该信号,停止发送;一段时间后A设备接收缓冲有了空余,发出RTS 信号,指示B设备开始发送数据。A设备发(B设备接收) 类似。上述功能也能在数据流中插入Xoff(特殊字符)和Xon(另一个特殊字符)信号来实现。A设备一旦接收到B设备发送过来的Xoff,立刻停止发 送;反之,如接收到B设备发送过来的Xon,则恢复发送数据给B设备。同理,B设备也类似,从而实现收发双方的速度匹配。
      半双工的方向切换:RS232中使用DTR(Date Terminal Ready,数据终端准备)与DSR(Data Set Ready ,数据设备准备好)进行主流控,类似上述的RTS 与CTS 。对半双工的通信的DTE(Date Terminal Equipment,数据终端设备)与DCE(Data circuit Equipment )来说,默认的方向是DTE接收,DCE发送。如果DTE要发送数据,必须发出RTS 信号,请求发送数据。DCE收到后如果 空闲则发出CTS 回 应RTS 信 号,表示响应请求,这样通信方向就变为DTE->TCE,同时RTS 与CTS 信号必须一直保持。从这里可以看出,CTS ,TRS虽 然也有点流控的意思(如CTS 没有发出,DTE也不能发送数据),但主要是用来进行方向切换的。
    在这里插入图片描述

    展开全文
  • 这个现象与我正常理解的不太一样,我理解的是在不接地或者没有信号时,引脚的串口信号会保持一个稳定的状态(保持高电压或者低电压),但事实是,信号会随机变化。 但是由于引脚信号在使用过程中需要变化...

    问题

    描述

    最近开始玩 Arduino, 在设置数字引脚为输入端时,发现了一个现象,当引脚没有用杜邦线连接到下拉电阻或上拉电阻时,串口的信号就会发生震荡,很不稳定。引脚用杜邦线接出来但没有连接也是一样的效果。

    这个现象与我正常理解的不太一样,我理解的是在不接地或者没有信号时,引脚的串口信号会保持一个稳定的状态(保持高电压或者低电压),但事实是,信号会随机变化。

    但是由于引脚信号在使用过程中需要变化,作为控制单元,在受到外部信号的影响时,由低变到高或者由高变到低。因此不能简单地只接下拉电阻或是只接上拉电阻。

    接线

    Arduino 板的说明图如下:
    Arduino 板的说明图

    图片来自 W3Cschool :Arduino 板的说明

    我连接的引脚口是图中15号数字I/O中的 2 号引脚,简化后的代码如下:

    const int pinLight = 2;
    
    void setup() {
      // put your setup code here, to run once:
      pinMode(pinLight, INPUT);
      Serial.begin(9600);
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      int read_light = digitalRead(pinLight);
      if (read_light == HIGH) {
        Serial.println("3");
      }
      else if (read_light == LOW) {
        Serial.println("4");
      }
    }
    

    最后利用串口监视器监视的效果就是 34 在震荡。

    解决过程

    主要查了以下几个资料:

    1. ARDUINO UNO数字引脚端口上电后不稳定状态。

    最初找到的就是这篇博客,上面说: 引脚作为数字输入,但是不连接任何的拉电阻,处于悬空转态,容易受电子噪声干扰而随机的改变其电平状态。

    不过,个人尝试了一下,发现不是噪声这么简单,信号的震荡频率很大,有时会一直保持高电位;有时又会一直保持低电位。基本上一直不会稳定下来。

    1. Arduino 入门教程

    这个教程里说: 如果你将数字引脚悬空(没接下拉电阻),LED可能会不规律的闪烁。这是因为此时Arduino引脚的输入一直在”漂移”。就是说,程序不能判定它是高电压还是低电压,故而只会随机的返回HIGH或LOW

    我觉得这个说得比较对,不只是噪声的问题。

    后来又问了一下学长,得到的解释是,在悬空时,会输出三个0连着三个1,实际中并不是这么有规律的,但确实见到过三个0连着三个1的情况,网上没有查到具体细节。

    最后的解决方案

    唯一的解决方案就是让串口接触稳定,就算是更换输入信号,也要很快完成改变,尽量不能悬空。

    我使用的是 欧姆龙(OMRON)MY2NJ继电器,按照继电器上的连线情况,在另一端的连线处,增加一根连接 Arduino 上接地的线。这样,无论开关是打开或是闭合,都可以接一个稳定的信号源了。

    展开全文
  • 串口信号发生器

    2012-12-01 20:42:21
    实验实现串口通信的功能如下:1.按时间顺序产生下面格式的数据: (1)TinyOS的传输消息用的数据格式,图示如下: /************************************************************* addr type group length Date ...
  • 串口、并口接口定义  并行口与串行口的区别是交换信息的方式不同,并行口能同时通过8条数据线传输信息,一次传输一个字节;而串行口只能用1条线传输一位数据,每次传输一个字节的一位。并行口由于同时传输更多的...

    •串口、并口接口定义

      并行口与串行口的区别是交换信息的方式不同,并行口能同时通过8条数据线传输信息,一次传输一个字节;而串行口只能用1条线传输一位数据,每次传输一个字节的一位。并行口由于同时传输更多的信息,速度明显高于串行口,但串行口可以用于比并行口更远距离的数据传输。

    1、25针并行口插口的针脚功能:

      针脚 功能        针脚 功能

       1 选通 (STROBE低电平) 10 确认 (ACKNLG低电平)

       2 数据位0 (DATAO) 11 忙 (BUSY)

       3 数据位1 (DATA1) 12 却纸 (PE)

       4 数据位2 (DATA2) 13 选择 (SLCT)

       5 数据位3 (DATA3) 14 自动换行 (AUTOFEED低电平)

       6 数据位4 (DATA4) 15 错误观点(ERROR低电平)

       7 数据位5 (DATA5) 16 初始化成(INIT低电平)

       8 数据位6 (DATA6) 17 选择输入 (SLCTIN低电平)

       9 数据位7 (DATA7) 18-25 地线路(GND)

    2.串行口的典型代表是RS-232C及其兼容插口,有9针和25针两类。

    25针串行口具有20mA电流环接口功能,用9、11、18、25针来实现。其针脚功能如下:

     针脚 功能     针脚 功能

       1 未用

       2 发出数据(TXD) 11 数据发送(一)

       3 接受数据(RXD) 12-17 未用

       4 请求发送(RTS) 18 数据接收( )

       5 清除发送(CTS) 19 未用

       6 数据准备好(DSR) 20 数据终端准备好比(DTR)

       7 信号地线路 (SG) 21 未用

       8 载波检测 (DCD) 22 振铃指示精神 (RI)

       9 发送返回( ) 23-24 未用

       10 未用 25 接收返回(一)

    9针串行口的针脚功能:

       针脚 功能 针脚 功能

       1 载波检测(DCD) 6 数据准备好(DSR)

       2 接受数据(RXD) 7 请求发送(RTS)

       3 发出数据(TXD) 8 清除发送(CTS)

       4 数据终端准备好(DTR) 9 振铃指示(RI)

       5 信号地线(SG)

    • 串口通信基本原理及接线方法

    目前较为常用的串口有9针串口(DB9)和25针串口(DB25),通信距离较近时(<12m),可以用电缆线直接连接标准RS232端口(RS422,RS485较远),若距离较远,需附加调制解调器(MODEM)。最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连,本文只涉及到最为基本的接法,且直接用RS232相连。

    1.DB9和DB25的常用信号脚说明

    9针串口(DB9) 25针串口(DB25)
    针号 功能说明 缩写 针号 功能说明 缩写
    1 数据载波检测 DCD 8 数据载波检测 DCD
    2 接收数据 RXD 3 接收数据 RXD
    3 发送数据 TXD 2 发送数据 TXD
    4 数据终端准备 DTR 20 数据终端准备 DTR
    5 信号地 GND 7 信号地 GND
    6 数据设备准备好 DSR 6 数据准备好 DSR
    7 请求发送 RTS 4 请求发送 RTS
    8 清除发送 CTS 5 清除发送 CTS
    9 振铃指示 DELL 22 振铃指示 DELL

    2.RS232C串口通信接线方法(三线制)

    首先,串口传输数据只要有接收数据针脚和发送针脚就能实现:同一个串口的接收脚和发送脚直接用线相连,两个串口相连或一个串口和多个串口相连
    · 同一个串口的接收脚和发送脚直接用线相连 对9针串口和25针串口,均是2与3直接相连;
    · 两个不同串口(不论是同一台计算机的两个串口或分别是不同计算机的串口)
    上面表格是对微机标准串行口而言的,还有许多非标准设备,如接收GPS数据或电子罗盘数据,只要记住一个原则:接收数据针脚(或线)与发送数据针脚(或线)相连,彼此交叉,信号地对应相接,就能百战百胜。

    3.串口调试中要注意的几点:

    串口调试时,准备一个好用的调试工具,如串口调试助手、串口精灵等,有事半功倍之效果; 强烈建议不要带电插拨串口,插拨时至少有一端是断电的,否则串口易损坏。
    单工、半双工和全双工的定义
    如果在通信过程的任意时刻,信息只能由一方A传到另一方B,则称为单工。
    如果在任意时刻,信息既可由A传到B,又能由B传A,但只能由一个方向上的传输存在,称为半双工传输。
    如果在任意时刻,线路上存在A到B和B到A的双向信号传输,则称为全双工。
    电话线就是二线全双工信道。 由于采用了回波抵消技术,双向的传输信号不致混淆不清。双工信道有时也将收、发信道分开,采用分离的线路或频带传输相反方向的信号,如回线传输。
    奇偶校验
    串行数据在传输过程中,由于干扰可能引起信息的出错,例如,传输字符‘E’,其各位为:
    0100,0101=45H
    D7 D0
    由于干扰,可能使位变为1,这种情况,我们称为出现了“误码”。我们把如何发现传输中的错误,叫“检错”。发现错误后,如何消除错误,叫“纠错”。
    最简单的检错方法是“奇偶校验”,即在传送字符的各位之外,再传送1位奇/偶校验位。可采用奇校验或偶校验。
    奇校验:所有传送的数位(含字符的各数位和校验位)中,“1”的个数为奇数,如:
    1 0110,0101
    0 0110,0001
    偶校验:所有传送的数位(含字符的各数位和校验位)中,“1”的个数为偶数,如:
    1 0100,0101
    0 0100,0001
    奇偶校验能够检测出信息传输过程中的部分误码(1位误码能检出,2位及2位以上误码不能检出),同时,它不能纠错。在发现错误后,只能要求重发。但由于其实现简单,仍得到了广泛使用。
    有些检错方法,具有自动纠错能力。如循环冗余码(CRC)检错等。

    串口通讯流控制

    我们在串行通讯处理中,常常看到RTS/CTS和XON/XOFF这两个选项,这就是两个流控制的选项,目前流控制主要应用于调制解调器的数据通讯中,但对普通RS232编程,了解一点这方面的知识是有好处的。那么,流控制在串行通讯中有何作用,在编制串行通讯程序怎样应用呢?这里我们就来谈谈这个问题。

    1.流控制在串行通讯中的作用

    这里讲到的“流”,当然指的是数据流。数据在两个串口之间传输时,常常会出现丢失数据的现象,或者两台计算机的处理速度不同,如台式机与单片机之间的通讯,接收端数据缓冲区已满,则此时继续发送来的数据就会丢失。现在我们在网络上通过MODEM进行数据传输,这个问题就尤为突出。流控制能解决这个问题,当接收端数据处理不过来时,就发出“不再接收”的信号,发送端就停止发送,直到收到“可以继续发送”的信号再发送数据。因此流控制可以控制数据传输的进程,防止数据的丢失。 PC机中常用的两种流控制是硬件流控制(包括RTS/CTS、DTR/CTS等)和软件流控制XON/XOFF(继续/停止),下面分别说明。

    2.硬件流控制

    硬件流控制常用的有RTS/CTS流控制和DTR/DSR(数据终端就绪/数据设置就绪)流控制。
    硬件流控制必须将相应的电缆线连上,用RTS/CTS(请求发送/清除发送)流控制时,应将通讯两端的RTS、CTS线对应相连,数据终端设备(如计算机)使用RTS来起始调制解调器或其它数据通讯设备的数据流,而数据通讯设备(如调制解调器)则用CTS来起动和暂停来自计算机的数据流。这种硬件握手方式的过程为:我们在编程时根据接收端缓冲区大小设置一个高位标志(可为缓冲区大小的75%)和一个低位标志(可为缓冲区大小的25%),当缓冲区内数据量达到高位时,我们在接收端将CTS线置低电平(送逻辑0),当发送端的程序检测到CTS为低后,就停止发送数据,直到接收端缓冲区的数据量低于低位而将CTS置高电平。RTS则用来标明接收设备有没有准备好接收数据。
    常用的流控制还有还有DTR/DSR(数据终端就绪/数据设置就绪)。我们在此不再详述。由于流控制的多样性,我个人认为,当软件里用了流控制时,应做详细的说明,如何接线,如何应用。

    3.软件流控制

    由于电缆线的限制,我们在普通的控制通讯中一般不用硬件流控制,而用软件流控制。一般通过XON/XOFF来实现软件流控制。常用方法是:当接收端的输入缓冲区内数据量超过设定的高位时,就向数据发送端发出XOFF字符(十进制的19或Control-S,设备编程说明书应该有详细阐述),发送端收到XOFF字符后就立即停止发送数据;当接收端的输入缓冲区内数据量低于设定的低位时,就向数据发送端发出XON字符(十进制的17或Control-Q),发送端收到XON字符后就立即开始发送数据。一般可以从设备配套源程序中找到发送的是什么字符。
    应该注意,若传输的是二进制数据,标志字符也有可能在数据流中出现而引起误操作,这是软件流控制的缺陷,而硬件流控制不会有。

    PS:

      DB9只有9根线,遵循RS232标准。定义如下:
      DTR,DSR——DTE设备准备好/DCE设备准备好。主流控信号。
      RTS,CTS——请求发送/清除发送。用于半双工时,收发切换。属于辅助流控信号。半双工的意思是说,发的时候不收,收的时候不发。那么怎么区分收发呢?缺省时是DCE向DTE发送数据,当DTE决定向DCE发数据时,先有效RTS,表示DTE希望向DCE发送,一般DCE不能马上转换收发状态,DTE就通过监测CTS是否有效来判断可否发送,这样避免了DTE在DCE未准备好时发送所导致的数据丢失。全双工时,这两个信号一直有效即可。
      随着计算机的日益普及,很多非RS232的串口也要接入PC机,如果为每一种新出现的串口都增加一个新的I/O口显然不现实,因为PC后面板位置有限,因此,将RS232串口和非RS232串口都通过RS232口接入是最佳方案。UART的U(通用)指的就是这个意思。早期ROM BIOS和DOS里的通信软件都是为RS232设计的,在没有检测到DCD有效前不会发送数据,因此,就连发送一个字符这样朴素的应用也要给出DCD、DTR、DSR等控制信号。因此,串口接头上要将一些控制线短接,或者干脆绕过系统软件自己写通信程序。
      到此,UART的涵义就总结为:通用的 异步 (串行) I/O口。
      就在UART冠以通用二字,准备一统江湖的时候,制造商们不满于它的速度、体积和灵活性(软件可配置),推出了USB和 1394串口。目前,笔记本上的UART串口有被取消的趋势,因而有网友发出了“没有串口,吾谁与归”的慨叹,古今多少事,都付笑谈中,USB取代UART是后话,暂且不表。
      话说自从贺氏(Hayes)公司推出了聪明猫(SmartModem),他们制定的MODEM接口就成了业界标准,自此以后,所有公司制造的兼容猫都符合贺氏标准(连AT指令也兼容)。
      细观贺氏制定的MODEM串口,与RS232标准大不相同。DTR在整个通信过程中一直保持有效,DSR在MODEM上电后/可以拨号前有效(取决于软件对DSR的理解),在通信过程的任意时刻,只要DTR/DSR无效,通信过程立即终止。在某种意义上,这也可以算是流控,但肯定不是RS232所指的那种主流控。如果拘泥于RS232,你是不会理解DTR和DSR的用途的。
    贺氏不但改了DTR和DSR,竟然连RTS和CTS的涵义也重新定义了。因此,RTS和CTS已经不具有最开始的意义了。从字面理解RTS和CTS,是用于半双工通信的,当DTE想从收模式改为发模式时,就有效RTS请求发送,DCE收到RTS请求后不能立即完成转换,需要一段时间,然后有效CTS通知DTE:DCE已经转到发模式,DTE可以开始发送了。在全双工时,RTS和CTS都缺省置为有效即可。然而,在贺氏的MODEM串口定义中,RTS和CTS用于硬件流控,和什么全双工/半双工一点关系也没有。 注意,硬件流控是靠软件实现的,之所以强调“硬件”二字,仅仅是因为硬件流控提供了用于流量情况指示的硬件连线,并不是说,你只要把线连上,硬件就能自己流控。如果软件不支持,光连上RTS和CTS是没有用的。
      RTS和CTS硬件流控的软件算法如下:(RTS有效表示PC机可以收,CTS有效表示MODEM可以收,这两个信号互相独立,分别指示一个方向的流量情况。)
      PC端处理:
       发.   当发现(不一定及时发现) CTS (-3v to -15v)无效时,停止发送,
           当发现(不一定及时发现) CTS (3v to 15v)有效时,恢复发送;
       收.    当接收buffers中的bytes当接收buffers中的bytes>N 时,给 RTS 无效信号(-3v to -15v);
      MODEM端处理:
      
      同上,但RTS与CTS交换。

      在RS232中本来CTS 与RTS 有明确的意义,但自从贺氏(HAYES ) 推出了聪明猫(SmartModem)后就有点混淆了。在RS232中RTS 与CTS 是用来半双工模式下的方向切换;HAYES Modem中的RTS ,CTS 是用来进 行硬件流控的。通常UART的RTC、CTS 的含义指后者,即用来做硬流控的。

      硬流控的RTS 、CTS :RTS (Require To Send,发送请求)为输出信号,用于指示本设备准备好可接收;CTS(Clear To Send,发送清除)为输入信号,有效时停止发送。假定A、B两设备通信,A设备的RTS 连接B设备的CTS ;A设备的CTS 连接B设备 的RTS 。 前一路信号控制B设备的发送,后一路信号控制A设备的发送。对B设备的发送(A设备接收)来说,如果A设备接收缓冲快满的时发出RTS 信号(意思 通知B设备停止发送),B设备通过CTS 检测到该信号,停止发送;一段时间后A设备接收缓冲有了空余,发出RTS 信号,指示B设备开始发送数据。A设备发(B设备接收) 类似。上述功能也能在数据流中插入Xoff(特殊字符)和Xon(另一个特殊字符)信号来实现。A设备一旦接收到B设备发送过来的Xoff,立刻停止发 送;反之,如接收到B设备发送过来的Xon,则恢复发送数据给B设备。同理,B设备也类似,从而实现收发双方的速度匹配。

      半双工的方向切换:RS232中使用DTR(Date Terminal Ready,数据终端准备)与DSR(Data Set Ready ,数据设备准备好)进行主流控,类似上述的RTS 与CTS 。对半双工的通信的DTE(Date Terminal Equipment,数据终端设备)与DCE(Data circuit Equipment )来说,默认的方向是DTE接收,DCE发送。如果DTE要发送数据,必须发出RTS 信号,请求发送数据。DCE收到后如果 空闲则发出CTS 回 应RTS 信 号,表示响应请求,这样通信方向就变为DTE->TCE,同时RTS 与CTS 信号必须一直保持。从这里可以看出,CTS ,TRS虽 然也有点流控的意思(如CTS 没有发出,DTE也不能发送数据),但主要是用来进行方向切换的。


    #如果UART只有RX、TX两个信号,要流控的话只能是软流控;如果有RX,TX,CTS ,RTS 四个信号,则多半是支持硬流控的UART;如果有 RX,TX,CTS ,RTS ,DTR,DSR 六个信号的话,RS232标准的可能性比较大。


    顺便提一下:

    DCD( Data Carrier Detect, 数据载波检测):DCE向DTE指示,线路上检测到载波。

    RI(Ring Indicator,振铃指示):DCE向DTE指示,有呼叫接入。

    • 串口通信基本接线方法

    1.串口通信基本接线方法,目前较为常用的串口有9针串口(DB9)和25针串口(DB25),通信距离较近时( <12m),可以用电缆线直接连接标准RS232端口(RS422,RS485较远),若距离较远,需附加调制解调器(MODEM)。最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连,本文只涉及到最为基本的接法,且直接用RS232相连。

    2.RS232C串口通信接线方法(三线制) 首先,串口传输数据只要有接收数据针脚和发送针脚就能实现:同一个串口的接收脚和发送脚直接用线相连,两个串口相连或一个串口和多个串口相连 同一个串口的接收脚和发送脚直接用线相连 对9针串口和25针串口,均是2与3直接相连; 两个不同串口(不论是同一台计算机的两个串口或分别是不同计算机的串口) 上面表格是对微机标准串行口而言的,还有许多非标准设备,如接收GPS数据或电子罗盘数据,只要记住一个原则:接收数据针脚(或线)与发送数据针脚(或线)相连,彼些交叉,信号地对应相接,就能百战百胜。

    3.串口调试中要注意的几点: 不同编码机制不能混接,如RS232C不能直接与RS422接口相连,市面上专门的各种转换器卖,必须通过转换器才能连接; 线路焊接要牢固,不然程序没问题,却因为接线问题误事; 串口调试时,准备一个好用的调试工具,如串口调试助手、串口精灵等,有事半功倍之效果; 强烈建议不要带电插拨串口,插拨时至少有一端是断电的,否则串口易损坏

    • 制作RS232串口连接线

    9针串口功能一览表
       针脚 功能1 载波检测 (DCD) 2 接收数据 (RXD) 3 发送数据(TXD)
       4 数据终端准备好 (DTR) 5 信号地 (GND) 6 数据准备好 (DSR)
       7 发送请求 (RTS) 8 发送清除 (CTS) 9 振铃指示 (RI)

       串口联机线的连接方法
       串口联机线主要用于直接把两台电脑的com口连接。比较早一点的AT架构的电脑的串口有为9针,和25针两种,现在的ATX架构的电脑两个串口全部是9针。于是联机线就分为3种(9针对9针串口联机线,9针对25针串口联机线,25针对25针串口联机线)这些直接电缆连接线可以互换的连线方法如下表:

       串口连机线一览
       9针对9针串口连接
       9针母头 9针母头
       2 —— 3 3 —— 2 4 —— 6 5 —— 5 6 —— 4 7 —— 8 8 —— 7

    如果需要做其他用途,连接 针脚 功能 2 接收数据 (RXD) 3 发送数据(TXD)5 信号地 (GND)
    这里写图片描述

    这里写图片描述

    展开全文
  • 串口通信,使用权该谁?需要采用信号量,进行控制。go如何实现? 原理 缓冲通道的缓冲大小等于资源数 time计时器控制超时 示例 func NewPortAvailableSem()*PortAvailableSem{ ps := &PortAvailableSem{ ...
  • LabWindows/CVI 中的RS232串口发送接收信息,发送指令AA,启动发送区波形显示。接收指令AA,启动接收区波形显示。两条波形在同一GRAPH上同时显示,与实时动态变化。
  • 请参考C#的API文档:...通过串口读写数据,非常简单,只需要将控制拉到窗口位置即可,就可以在窗口的下方查看到串口控件的图标,点击图标,按下F4即可查看该串品的详...
  • CD4052是一个差分4通道数字控制...例如,若V DD=+5V,VSS=0,VEE=-13.5V,则0~5V的数字信号可控制-13.5~4.5V的模拟信号,这些开关电路在整个VDD-VSS和VDD-VEE电源范围内具有极低的静态功耗,与控制信号的逻辑状态...
  • MATLAB-串口信号实时监测显示

    千次阅读 2018-05-15 08:50:34
    set(s,'BaudRate',9600); fopen(s);data=[];time=[];data=[data str2num(fgetl(s))];time=[time now]; while(1) %data=[data,str2num(fgetl(s))]; %time=[time,now] plot(time,data); ...
  • 好久没用动硬件了,串口更是好久没用用了。 曾经接口信号记得很清楚,久了,忘了。 今天,重新回顾,笔记记下。 DB9接口分公头和母头,公头即插针头,电脑机箱上多少公头。母头即插孔座。 合理的硬件设计均以...
  • 为了增加单片机串口之间的通讯距离,拟采用在单片机处增加232芯片来把TTL信号转换后再进行信息的传输,是多个发送,一个接收,我想选用4067模拟开关来选择通讯通道,可以实现吗?
  • http://blog.csdn.net/whui_168/article/details/50460430?reload
  • 成品稳定产品追溯软件,可以结合生产工具自动打印标签,已在工厂应用,售价1800RMB。QQ80303857
  • 在介绍前,我先和不明白引出串口信号的朋友介绍下这样做的目的: 一般做linux kenrel(其实是所有kernel层次)的开发,没有VC IDE debugger这种好用的工具,就连gdb server很多时候都不管用。最常见的办法就是...
  • 利用串口发送代码,实现其他设备程序的互动,其他程序接收串口信号即可互动
  • 串口流控信号检测

    2015-09-16 16:35:27
    串口流控信号检测,包含一个功能强大的串口类,可实现串口收发数据、串口流控信号设置及检测,开发环境:VS2005
  • VC串口流控信号检测

    2015-09-17 08:47:14
    VC++串口流控信号检测,包含一个功能强大的串口类,可实现串口收发数据、串口流控信号设置及检测,开发环境:VS2005
  • Wince下串口流控信号检测,包含一个功能强大的串口类,可实现串口收发数据、串口流控信号设置及检测
  • 通过串口采集数据,将数据传到指定串口,为上位机模拟信号提供信号
  • 32单片机串口打印对外脉冲信号,32单片机串口打印对外脉冲信号
  • 基于LabVIEW与单片机串口信号处理基于LabVIEW与单片机串口信号处理;
  • MC51代码,用串口接收到触发信号,并在调式软件界面输出固定字符串
  • 在计算机PC上的九针串口的各个信号定义,希望对大家有用!
  • Wince下串口流控信号检测,包含一个功能强大的串口类,可实现串口收发数据、串口流控信号设置及检测,VS2005,VC。
  • 信号串口传输的MFC实例

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,772
精华内容 1,908
关键字:

串口信号