串口的一些基本概念--RS485 RS422 RS232 流控制

    串口是一种应用比较广泛的应用接口,PC上的COM口,工业控制器的RS485、家用设备的调试接口等等,本质上都是串口。

1、串口的分类

  1)RS232 标准串口,这是一种比较 常用的串口,电脑上的DB9针接口就是一种串口,通过不同电压来表示0和1,电平定义如              下:

        0--- +3~12V之间

        1--- -3~ -12V之间,

        最大传输距离只有15m左右,所以其只适合于本地设备 短距离通信,而且只能点对点 通信,也就是一对一。

 2)RS485和RS422的电平定义,可以参考之前的文章 RS485硬件接口。RS485和422的电气性能是一样的,主要区别是RS422 是4根信号线,2根发送+2根接收,这样RS422可以实现全双工通信。而RS485只有2根信号线,所以只能工作在 半双工模式。

3)3种 接口的引脚如下图

    RS232 接口

   串口的一些基本概念--RS485 RS422 RS232 流控制_第1张图片.

    实际使用 时,可以值用2(RXD)、3(TXD)、5(GND)引脚。

   RS422共5根线:TXD+、TXD-、RXD+、RXD-、GND。

   RS485共3根线:A、B、GND。

2、同步通信、异步通信

    1)同步通信:同步通信是一种比特同步通信技术,要求发收双方具有同频同相的同步时钟信号,只需在传送报文的最前面附            加特定的同步字符,使发收双方建立同步,此后便在同步时钟的控制下逐位发送/接收。如:SPI总线。这种模式下,需要主         机提供 时钟信号,

    2) 异步通信:两个互不同步的设备通过计时机制或其他技术进行数据传输。也就是说,双方不需要共同的时钟。发送方可以           随时传输数据,而接收方必须在信息到达时准备好接收。如:串口(UART),是半双工通信。

3、串口数据格式及参数

    1)起始位:在通信线上没有数据传送时处于逻辑“1”状态。当发送设备发送一个字符数据时,首先发出一个逻辑“0”信号,这个逻辑低电平就是起始位。起始位通过通信线传向接收设备,当接收设备检测到这个逻辑低电平后,就开始准备接收数据信号。因此,起始位所起的作用就是表示字符传送开始。

   2)数据位:数据位紧跟在起始位之后,是通信中的真正有效信息。数据位的位数可以由通信双方共同约定,一般可以是5位、7位或8位。传输数据时先传送字符的低位,后传送字符的高位。

   3)奇偶校验位仅占一位,用于进行奇校验或偶校验,奇偶检验位不是必须有的。如果是奇校验,需要保证传输的数据总共有奇数个“1”;如果是偶校验,需要保证传输的数据总共有偶数个“1”。 也就是有效数据奇、偶个数不够,用校验位凑。

     假设传输的数据位为01001100,如果是奇校验,则奇校验位为0(要确保总共有奇数个1),如果是偶校验,则偶校验位为          1(要确保总共有偶数个1)。 
     奇偶校验位仅是对数据进行简单的置逻辑高位或逻辑低位,不会对数据进行实质的判断,这样做的好处是接收设备能够知道一个位的状态,有可能判断是否有噪声干扰了通信以及传输的数据是否同步。 

 4)停止位:停止位可以是是1位、1.5位或2位,可以由软件设定。它一定是“1”,标志着传输一个字符的结束。

 5)空闲位:空闲位是指从一个字符的停止位结束到下一个字符的起始位开始,表示线路处于空闲状态,必须由高电平来填充。

3、流控制

    流控制的作用是防止数据拥堵, 实际使用时,不是必须的。

   数据在两个串口之间传输时,常常会出现丢失数据的现象,或者两台计算机的处理速度不同,如台式机与单片机之间的通讯,接收端数据缓冲区已满,则此时继续发送来的数据就会丢失。流控制能解决这个问题,当接收端数据处理不过来时,就发出“不再接收”的信号,发送端就停止发送,直到收到“可以继续发送”的信号再发送数据。因此流控制可以控制数据传输的进程,防止数据的丢失。

   流控制分为软控和硬控:

   1)软件流控制:

    “软件”流控制:这种方法采用特殊字符来开始(XON,DC1,八进制数021)或者结束(XOFF,DC3或者八进制数 023)数据流。当接收端的输入缓冲区内数据量超过设定的高位时,就向数据发送端发出xoff字符(十进制的19或control-s,设备编程说明书应该有详细阐述),发送端收到 xoff字符后就立即停止发送数据;当接收端的输入缓冲区内数据量低于设定的低位时,就向数据发送端发出xon字符(十进制的17或control- q),发送端收到xon字符后就立即开始发送数据。

  2)  硬件流控制:

     “硬件”流控制:这种方法使用RS-232标准的CTS和RTS信号来取代之前提到的特殊字符。当准备就绪时,接受一方会将CTS信号设置成为space电压,而尚未准备就绪时它会被设置成为mark电压。相应得,发送方会在准备就绪的情况下将RTS设置成space电压。正因为硬件流控制使用了于数据分隔的信号,所以与需要传输特殊字符的软件流控制相比它的速度很快。但是,并不是所有的硬件和操作系统都支持CTS/RTS流控制。

    

   

    

   

你可能感兴趣的:(电子技术)