串口通信的基本原理:深入浅出

一、前言

串行接口,简称串口,也称串行通信接口(采用串行通信方式的扩展接口),通常指COM接口;


二、串口通信的两种基本方式

1、同步通信(SYNC-synchronous data communication)

同步通信有时钟信号来做同步,在约定的通信速率下,发送端和接收端的时钟信号频率和相位始终保持一致(同步),这样就保证了通信双方在发送和接收时具有完全一致的定时关系;

同步串行通信SPI(Serial Peripheral Interface串行外围设备接口简称),SPI总线系统是一种同步串行的外设接口,它可以是MCU与各种外围设备以串行方式进行通信以交换信息;

2、异步通信(ASYNC-asynchronous data communication)

以字符为单位进行传输,字符之间没有固定的时间间隔要求,而每个字符中的各位则固定的时间传送。异步通信中,收发双方去的同步是通过在字符格式中设置起始位和停止位的方式来实现的。具体来说就是,在一个有效字符正式发送之前,发送器先发送一个起始位,然后发送有效字符位,在字符结束时再发送一个停止位,起始位和停止位构成一帧。停止位和下一个起始位之间是不定长的空闲位,并且规定起始位为低电平(逻辑值为0),停止位和空闲位都是高电平(逻辑值为1),这样就保证了起始位开始处一定会有一个下跳沿,由此就可以标志一个字符传输的起始;根据起始位和停止位就很容易的实现了字符的界定和同步。

异步串行通信UART(无时钟信号)(UniverSal Asynchronous Receiver/Transmitter),即通用异步接收/发送;

UART包含TTL电平和RS232电平,TTL电平是3.3V的,RS232是负逻辑电平,它定义+3 ~ +15为低电平,而-15 ~ -3为高电平,通常PC机串口与单片机串口通信需要电平转换芯片,例如:MAX232;

显然,采用异步通信时,发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,可以互不同步。

异步通信的数据发送过程

  • 初始化后或者没有数据需要发送时,发送端输出逻辑1,可以有任意数量的空闲位;
  • 当需要发送数据时,发送端首先输出逻辑0,作为起始位;
  • 接着开始输出数据位,发送端首先输出数据的最低位D0,然后是D1,最后是数据的最高位;
  • 如果设有奇偶校验位,发送端输出校验位;
  • 最后,发送端输出逻辑1,作为停止位;
  • 如果没有信息需要发送,发送端输出逻辑1,作为空闲位,如果有信息需要发送,则转入步骤2;
  • 异步通信的数据接收过程
    在异步通信中,接收端一接收时钟和波特率因子决定每一位的时间长度;
    下面一波特率因子16(接收时钟每16个时钟周期使接收移位寄存器移位一次)为例来说明:

  • 开始通信,信号线为空闲(逻辑1),当检测到由1到0的跳变时,开始对接收时钟计数;
  • 接收端检测到起始位后,隔16个接收时钟对输入信号检测一次,把对应的值作为D0位数据;
  • 再隔16个接收时钟,对输入信号检测一次,把对应的值作为D1位数据;
  • 依此类推,直到接收到D7位数据;
  • 检验奇偶校验位;
  • 接收到规定的数据位个数个校验位后,通信接口电路希望收到停止位(逻辑1);
  • 若此时未收到逻辑1,说明出现了错误,在状态寄存器中置“帧错误”标志;
  • 若没有错误,对全部数据位进行奇偶校验,无校验错误时,把数据位从移位寄存器中取出送至数据输入寄存器;
  • 若校验错误,在状态寄存器中置“奇偶错”标志;
  • 本帧信息全部接收完,把线路上出现的高电平作为空闲位;
  • 当信号再次变为低电平(起始位)时,开始进入下一帧的检测;
  • 接收时钟和发送时钟与波特率的关系:

    f = n x B(f:发送时钟或接收时钟的频率;B:数据传输的波特率;n:波特率因子);
    设发送或接收时钟的周期为Tc,发送一个波形所需要的传输时间为Td,则:Tc = 1 / f,Td = 1 / B,得到Tc = Td / n,从而n代表发送一个波形需要几个时钟周期;
    在实际串行通信中,波特率因子可以设定;
    在异步传送时,n = 1, 16, 64,常采用n = 16,即发送或接收时钟的频率要比数据传送的波特率高n倍;
    在同步通信时,波特率因子n必须等于1;

    波特率与比特率的关系:

    波特率代表1秒钟发送波形的个数,而比特率代表1秒钟发送比特的个数;
    在采用二进制传输的情况下,发送的波形一共有2种波形,即高电平和低电平。那么一个波形代表一个比特,因此波特率和比特率相等;
    在采用四进制传输的情况下,发送的波形一共有4种波形,此处假设发送的最高电平为3C,发送00的波形为0V,发送01的波形为1V,发送10的波形为2V,发送11的波形为3V,那么一个波形代表两个比特,因此比特率是波特率的两倍;同理,在采用8进制传输的情况下,比特率是波特率的三倍,以此类推;


    三、通讯方式

    1、单工模式(Simplex Comminication)
    数据传输是单向的,通信双方中,一方固定为发送端,一方固定为接收端,信息只能炎一个方向传输,使用一根传输线;

    2、半双工模式
    通信使用同一根传输线,既可以发送数据又可以接收数据,但不能同时进行发送和接收。数据传输运行数据在两个方向上传输,但是,在任何时刻都只能由其中的一方发送数据,另一方接收数据,因此半双工模式既可以使用一条数据线,也可以使用两条数据线。半双工通信中每端需有一个收发切换电子开关,通过切换来觉得数据向哪个方向传输;因为有切换,所以会产生时间延迟,信息传输效率低些;

    3、全双工模式
    通信允许数据同时在两个方向上传输,因此,全双工通信时两个单个通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力;在全双工模式中,每一段都有发送器和接收器,有两条传输线,信息传输效率高;


    四、TTL、RS232、RS485

  • TTL电平:输出低电平要小于0.8V,高电平要大于2.4V;输入低于1.2V就认为是0,高于2.0就认为是1;
  • RS232电平:逻辑1的电平为-3 ~ -15,逻辑0的电平为+3 ~ +15,介意-3 ~ +3之间的电压无意义;
  • RS485电平:差分信号 -2500mv ~ -200mv为逻辑0,差分信号 +2500mv ~ +200mv为逻辑1,-200mv ~ +200mv为高阻态;
  • MAX232芯片:是TTL电平和RS232电平的专用双向转换芯片,可以TTL转RS232,也可以RS232转TTL;
  • TTL电平一般用于芯片与芯片之间的通信;
  • RS232采用正负逻辑电平,提高线路的抗干扰性,最远可以达到15米左右;RS232全双工只支持点对点通讯(1 : 1);
  • RS485使用两线制的差分信号传输,最远可至1200米;RS484半双工或单双工支持从小形式通讯(1 :N);
  • 物联沃分享整理
    物联沃-IOTWORD物联网 » 串口通信的基本原理:深入浅出

    发表评论