•串口、并口接口定义

  并行口与串行口的区别是交换信息的方式不同,并行口能同时通过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)

串口信号定义和接线方法-5针串口-9针串口-全功能串口相关推荐

  1. 2.3 基于FPGA的UART协议实现(一)串口信号定义和接线方法-5针串口-9针串口-全功能串口

      通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART.它将要传输的资料在串行通信与并行通信之间加以转换.作为把并行输入信号 ...

  2. 【搬家】VB.NET开发全功能串口调试助手

    VB.NET开发全功能串口调试助手 By Nightmare 2011-07-16 @Xinxiang 小记:VB.NET的串口通信用了很长时间了,也只用Write和Read这样的方法,以前都是用这种 ...

  3. s3c2410下利用TL16C554扩展4个全功能串口

    上周花了4,5天的时间调554,一开始直接就上ce的驱动,结果可想而知,后来还是老老实实的在ADS下写好了测试程序,然后下载到RAM里面跑,结果 发现写寄存器的值写不进去,后来一测晶振,晶振都没有跑, ...

  4. db9针232接口波特率标准_理解串口通信以及232,485,422常见问题

    下面先讲一讲串口通信的一些基本概念,术语.如果对串口通信比较熟悉的,就当复习复习,如果哪里讲错或不到位,也可以及时指出,当作一块交流交流. 这里并不对串口的编程作讲解,主要是从应用的角度去讲一讲.因为 ...

  5. DB9针和DB25针串口的引脚定义

    <设备监控技术详解>第3章串口设备监控,本章着力介绍串口交换机和串口联网方式.本节为大家介绍标准25针串口的引脚定义. 作者:李瑞民来源:机械工业出版社 3.3 串口线的制作和转换 串口的 ...

  6. 标准15针 VGA 显示接口定义及焊接方法

    标准15针 VGA 显示接口定义及焊接方法 <图>   VGA 15 针母插座 VGA 15 针公插头 VGA 是 Video Graphics Adapter(Array) 的缩写,信号 ...

  7. STM32L0系列串口重定义的方法

    STM32L0系列串口重定义的方法 芯片型号:STM32L071RBT6 本篇重点:将printf( ) 函数重定义到USART1 集成开发工具(IDE):IAR 在uart已经配置好情况下,重定义f ...

  8. mcgscom口针脚定义_标准9针串口引脚定义

    标准 9 针串口引脚定义 从前面的内容中,知道了串口外形,就可以继续了解其每个引脚的定义,这是做线的基础.无论是 RS-232C . RS-422 ,还是 RS-485 ,串口接口的外形.尺寸都是相同 ...

  9. 鸣志驱动器与研华工控机RS485/422 com串口接线方法

    鸣志驱动器与研华工控机RS485/422 com串口接线方法

  10. 【嵌入式系统】STM32串口通信的四种方法(基于RTOS)

    目录 1.串行通信的基本参数 2.轮询方式代码效果 3.中断方式代码效果 4.中断加上时间戳方式代码及效果 5.DMA空闲中断方式接收数据 1.串行通信的基本参数 串行端口的通信方式是将字节拆分成一个 ...

最新文章

  1. C#中string与byte[]的转换帮助类
  2. 关于react中setState的深入理解
  3. 利器:Sublime Text 要点记录
  4. CALayer与UIBezierPath
  5. android 自定义 打包文件类型,Android设置apk打包文件名报错
  6. status函数(自学数据结构第一天)
  7. HDFS分布式文件系统知识总结
  8. CodeProject上的一些摘抄
  9. android gc卡顿,由于频繁GC造成的界面卡顿原因分析
  10. 微软中国艰难前行:业绩遭遇连续跳票
  11. 基于IE的MIME sniffing功能的跨站点脚本攻击
  12. SIGMOD论文阅读笔记
  13. 将参数量化为二进制补码定点数的形式
  14. 梅卡尔大学-IOT-前端笔记
  15. 汽车的调谐器技术-Tuner
  16. MTK keypad调试,扩张键盘IC AW9523
  17. Unity3D 通用麻将胡牌算法
  18. 辟谣:Deno不是下一代Node.js!
  19. 树立个人品牌:让名企hr们主动来找你
  20. 鹅厂入职背调,发现三个学历造假...

热门文章

  1. 【iOS-Cocos2d游戏开发】解决滚屏背景/拼接地图有黑边(缝隙)
  2. USB计算机连接只能充电,手机连接不上电脑只显示充电怎么办
  3. 0基础学RS(二十五)思科OSPF配置
  4. 学习黑马JVM的笔记
  5. malloc函数java_malloc函数详解及用法举例
  6. 56个民族静态字典代码创建sql语句
  7. python读取文本后如何加拼音_[编程心得]用Python给汉字加上带音调的拼音
  8. 三个百分数相乘计算机,我的公考笔记:资料分析的三个速算技巧
  9. teamviewer路由器设置虚拟服务器,远程控制软件TeamViewer的配置详细操作步骤
  10. 树莓派4B配置远程桌面软件 Teamviewer(解决报错)