串口通信——UART详解

调试时总是会遇到各种各样的接口,串口,UART,USB,COM,TTL,通信协议,数据帧,波特率,各种各样的转换板,似懂非懂,在此对UART调试碰到的相关概念做一个梳理。

相关基础概念

串行:同一时刻只能传输一个数据位的数据,比并行通信的传输距离远,抗干扰能力强

并行:同一时刻可以传输多个数据位的数据

串口COM口UART口它是指一种物理接口(硬件实体)。它一般有9针和25针的,即DB9和DB25。以针引出来的叫公头,孔引出来的叫母头。TTLRS-232RS-485则是逻辑电平0和1的不同表示标准。在板卡调试时,可以直接使用电脑自带串口,也可利用USB经过MOXA卡(通用多串口转换器)转换成各种标准的串口进行使用,当然后者使用范围更广。

串口:串口是一个泛称,UART、TTL、RS232、RS485都遵循类似的通信时序协议,因此都被通称为串口。

UART接口:通用异步收发器(Universal Asynchronous Receiver/Transmitter),UART是串口收发的逻辑电路,这部分可以独立成芯片,也可以作为模块嵌入到其他芯片里,单片机、SOC、PC里都会有UART模块。

COM口:特指台式计算机或一些电子设备上的D-SUB外形(一种连接器结构,VGA接口的连接器也是D-SUB)的串行通信口,应用了串口通信时序和RS232的逻辑电平。

端口号:指的是COM1,COM2,COM3等,查看计算机端口属性,一个COM,包括256个端口号,你可以扩展COM增加端口号。

USB口:通用串行总线,和串口完全是两个概念。虽然也是串行方式通信,但由于USB的通信时序和信号电平都和串口完全不同,因此和串口没有任何关系。USB是高速的通信接口,用于PC连接各种外设,U盘、键鼠、移动硬盘、当然也包括“USB转串口”的模块。(USB转串口模块,就是USB接口的UART模块)

同步:带时钟线,双方按照约定好的时钟边沿进行数据的加载、移位、发送

异步:不用时钟线进行数据同步,它们直接在数据信号中穿插一些同步用的信号位,或者把主体数据进行打包,以数据帧的格式传输数据,某些通讯中还 需要双方约定数据的传输速率(波特率) ,以便更好地同步。

单工:一根线,单方向通信,代码写完后就确定了是A传给B,还是B传给A;

半双工:一根线,双向传输,但同一时刻要么A传B,要么B传A;

全双工:两根线,双向传输,可同时发送接收,A传B的同时B也可以传A

奇校验:数据流+校验位的1的个数是奇数

偶校验:数据流+校验位的1的个数是偶数

波特率:数据传送速率用波特率来表示,即每秒钟传送的二进制位数。例如数据传送速率为120字符/秒,而每一个字符为10位(1个起始位,7个数据位,1个校验位,1个结束位),则其传送的波特率为10×120=1200字符/秒=1200波特。常见的波特率9600bps、115200bps等等,如果串口波特率设置为9600bps,那么传输一个比特需要的时间是1/9600≈104.2us。

串行通信:是指利用一条传输线将数据一位位地顺序传送,也可以用两个信号线组成全双工通信。特点是通信线路简单,利用简单的线缆就可实现通信,降低成本,适用于远距离通信,对数据传输速度要求不高的场合,如嵌入式、工业控制等领域中。

异步通信:以一个字符为传输单位,通信中两个字符间的时间间隔多少是不固定的,然而在同一个字符中的两个相邻位间的时间间隔是固定的。通俗说是两个uart设备之间通信的时候不需要时钟线,这时候就需要在两个uart设备上指定相同的传输速率,以及空闲位、起始位、校验位、结束位,也就是遵循相同的协议。

单端传输:指在发送或接收过程中,用信号线对地线的电压值来表示逻辑“0”和“1”。

差分传输:使用两根信号线来传输一路信号,这两根信号线上传输的信号幅值相等,相位相差 180 度(极性相反), 信号接收端比较这两个电压的差值来判断发送端发送的逻辑状态,逻辑“0”和“1”,

常见的串行通信方式有:usart、iic、spi等,本文着重介绍UART

UART

串行通信分为两种方式:

  1. 同步串行通信USART(Universal Synchronous Asynchronous Receiver and Transmitter):需要通信双方在同一时钟的控制下,同步传输数据;
  2. 异步串行通信UART(Universal Asynchronous Receiver and Transmitter):通信双方使用各自的时钟控制数据的发送和接收过程

二者区别和联系

通用同步-异步接收发射器)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信,也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。使用多缓冲器配置的DMA方式,可以实现高速数据通信。

虽然USART既可以同步又可以异步,但是常见的最常用的就是使用功能的异步功能,如果作为异步通信就是UART(Universal Asynchronous Receiver and Transmitter),可以说,UART是USART的子集,但是同步通信相比异步通信多了一根时钟同步信号线。

在同步通讯中,收发设备双方会使用一根信号线表示时钟信号,在时钟信号的驱动下双方进行协调,同步数据,见下图。通讯中通常双方会统一规定在时钟信号的上升沿或下降沿对数据线进行采样。

在异步通讯中不使用时钟信号进行数据同步,它们直接在数据信号中穿插一些同步用的信号位,或者把主体数据进行打包,以数据帧的格式传输数据,见下图,某些通讯中还需要双方约定数据的传输速率,以便更好地同步。

在同步通讯中,数据信号所传输的内容绝大部分就是有效数据,而异步通讯中会包含有帧的各种标识符,所以同步通讯的效率更高,但是同步通讯双方的时钟允许误差较小,而异步通讯双方的时钟允许误差较大。USART以同步方式通信需要时钟同步信号,但不需要额外的起始、停止位,可以实现更快的传输速度。但USART控制起来更复杂。

当我们使用USART在异步通信的时候,它与UART没有什么区别,但是用在同步通信的时候,区别就很明显了:大家都知道同步通信需要时钟来触发数据传输,也就是说USART相对UART的区别之一就是能提供主动时钟。如GD32的USART可以提供时钟支持ISO7816的智能卡接口。

UART通信协议

UART协议帧

在 UART中,传输模式为数据包形式。UART 在发送 / 接收过程中的一帧数据由 4 部分组成:

  1. 起始位:标志着一帧数据的开始
  2. 数据位:一帧数据中的有效数据
  3. 停止位:标志着一帧数据的结束
  4. 奇偶检验位:校验位分为奇校验和偶校验,用于检验数据在传输过程中是否出错;

①奇校验时,发送方应使数据位中 1 的个数与校验位中 1 的个数之和为奇数;接收方在接收数据时,对 1 的个数进行检查,若不为奇数,则说明数据在传输过程中出了差错。

②偶校验则检查 1 的个数是否为偶数。

空闲位:UART协议规定,当总线处于空闲状态时信号线的状态为‘1’即高电平,表示当前线路上没有数据传输。

串口外设的架构图看起来十分复杂,实际上对于软件开发人员来说,我们只需要大概了解串口发送的过程即可。从下至上,我们看到串口外设主要由三个部分组成,分别是波特率控制、收发控制和数据存储转移。

UART 通信过程中的数据格式及传输速率是可设置的,为了正确的通信,收发双方应约定并遵循同样的设置。数据位可选择为 5、6、7、8 位,其中 8 位数据位是最常用的,在实际应用中一般都选择 8 位数据位。校验位可选择奇校验、偶校验或者无校验位;停止位可选择 1 位(默认),1.5 或 2 位。

串口通信的速率用波特率表示,它表示每秒传输二进制数据的位数,单位是 bps(位/秒),常用的波特率有 9600、19200、38400、57600 以及 115200 等。

串口通信接口标准

在设置好数据格式及传输速率之后,UART 负责完成数据的串并转换,而信号的传输则由外部驱动电路实现。

串口通信接口标准,是一种用来进行串行通信的物理接口标准,它只表征电气特性,而不涉及到接插件,电缆和协议等。我们平常见到的RS232,RS422,RS485就属于物理接口标准。

通信接口的作用:

  1. 实现数据格式化,异步通信方式下,自动生成起止式的帧数据格式。在同步方式下,接口要在待传送的数据块前加上同步字符。
  2. 实现串并转化。计算机处理数据是并行数据。
  3. 控制传输速率
  4. 错误检测
  5. 电平转换

不同的接口标准用不同的电平表示,首先介绍最常见的两种电平,TTL电平和CMOS电平。

TTL电平:晶体管晶体管逻辑电平。一般0对应0V,1对应3.3V或者5V。与单片机、SOC的IO电平兼容。进行串口通信的时候 从单片机直接出来的基本是都 是 TTL 电平。

电气特性

输出:高电平>=2.4V,低电平<=0.4V;

输入:高电平>=2.0V,低电平<=0.8V。

TTL用于两个MCU间通信方式如下

CMOS电平:mos电平,现在大部分数字逻辑都是CMOS工艺做的,沿用了TTL的说法

电气特性

输出:高电平=Vcc,低电平=GND(Vcc为电源电压);

输入:高电平>=0.7Vcc,低电平<=0.2Vcc。

CMOS电路可直接驱动TTL电路,TTL不可以直接驱动CMOS,一般得接上拉电阻。

为了远距离传输,在以上两种电平基础上衍生出了RS232电平,因为其电平电压高,所以相比之下,受干扰小,可传输的更远。尽管如此还不能满足人们对远距离传输的要求,所以进一步衍生出RS422,RS485.

RS-232

RS-232 接口标准出现较早,信号采用负逻辑电平、单端传输方式工作。通过一根信号线发送,一根信号线接收,加上一根地线,RS-232 可实现全双工通信。由于单端传输方式抗干扰能力差,导致 RS-232 标准通信距离短(小于 15 米),数据传输速率低等问题。另外 RS-232 仅支持一对一通信,存在无法实现多个设备互联的缺点。

电气特性

逻辑1:-3V~-15V

逻辑0:+3~+15V

特点:

  1. 接口的信号电平值较高,易损坏接口电路的芯片
  2. 与TTL电平不兼容,故需使用电平转换电路方可与TTL电路连接。
  3. 传输速率较低,在异步传输时,波特率为20Kbps左右。
  4. 接口使用两根线共地传输,易产生共模干扰,故抗噪声干扰差。
  5. 传输距离有限,最大传输距离15米左右。

下图是个USB转TTL串口的小板,可以用USB扩展出一个串口。可以连接电脑给单片机下载程序。

RS-422

RS-422 由 RS-232 发展而来,它是为弥补 RS-232 之不足而提出的。RS-422 采用差分传输(又称平衡传输)方式,将最大传输速率提高到 10Mbps;当传输速率在 100kbps 以下时,传输距离可达 1200 米。由于采用差分传输方式,RS-422 需要 4 根信号线来实现全双工通信,两根用于发送、两根用于接收,一般会再加上一根地线,电平低,可与TTL兼容。RS-422 允许在一条传输总线上连接最多 10 个接收器,从而实现单个设备发送,多个设备接收的功能。

电气特性

发送端:

逻辑1:AB电压差为+2V~+6V

逻辑0:AB电压差为-2~-6V

接收端:

逻辑1:A-B>200mV

逻辑0:A-B<-200mV

RS-485

为扩展应用范围,在 RS-422 基础上又制定了 RS-485 标准。RS-485 同样采用差分传输方式,但是 RS-485 只有 2 根信号线,由发送和接收共用,因此发送和接收不能同时进行,只能实现半双工通信。RS-485 增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,各设备通过使能信号控制发送和接收过程。

电气特性

发送端:

逻辑1:AB间电压差+2V~+6V

逻辑0:AB间电压差-2~-6V

接收端:

逻辑1:A-B>200mV

逻辑0:A-B<-200mV

三种通信协议的区别

在传输距离较短时(不超过 15m),RS232 是串行通信最常用的接口标准。

嵌入式里面说的串口,一般是指UART口,UART有4个pin(VCC, GND, RX, TX), 用的TTL电平, 低电平为0(0V),高电平为1(3.3V或以上)。

UART通信步骤

  1. 数据从数据总线到UART发送器。

2.发送 UART 将起始位、奇偶校验位和停止位添加到数据帧。

3.从起始位到结束位,整个数据包以串行方式从发送器送至接收器 。接收 UART 以预配置的波特率对数据线进行采样。

4.接收器丢弃数据帧中的起始位,奇偶校验位和停止位。

5.接收器将串行数据转换回并行数据,并将其传输到接收端的数据总线。

  • 14
    点赞
  • 157
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
UART(Universal Asynchronous Receiver-Transmitter)是一种常见的串口通信协议,常用于将数据从一个设备传输到另一个设备,如将数据从计算机发送到外部设备,或者在嵌入式系统中进行设备之间的通信。下面是UART串口通信协议的详解: 1. 物理连接:UART通信使用两根信号线,一根用于传输数据(TX线),一根用于接收数据(RX线)。这两根线连接在两个设备之间,其中TX线与对方的RX线相连,RX线与对方的TX线相连。 2. 数据传输:UART是一种异步通信协议,数据通过一个字节一个字节地传输。每个字节由起始位(Start bit)、数据位(Data bits)、可选的校验位(Parity bit)和停止位(Stop bit)组成。 - 起始位:起始位用于标识一个数据传输的开始,它是一个低电平信号。 - 数据位:数据位用于传输实际的数据,通常有8位或9位数据位可供选择。 - 校验位:校验位用于检测数据传输过程中的错误。常见的校验方式有奇偶校验、偶校验和无校验。 - 停止位:停止位用于标识一个数据传输的结束,它是一个高电平信号。通常有1位或2位停止位可供选择。 3. 波特率:UART通信中的波特率(Baud rate)表示单位时间内传输的比特数。常见的波特率有9600、115200等,波特率越高,传输速率越快。 4. 通信模式:UART通信可以在全双工或半双工模式下进行。在全双工模式下,两个设备可以同时发送和接收数据;在半双工模式下,两个设备交替发送和接收数据。 5. 数据流控制:UART通信中可以使用硬件流控制或软件流控制来控制数据的传输。硬件流控制通过额外的信号线实现,如RTS(Request to Send)和CTS(Clear to Send)信号线;软件流控制通过特定的数据字节来实现,如XON和XOFF字符。 总结起来,UART串口通信协议是一种常见的异步串口通信协议,通过起始位、数据位、校验位和停止位来传输数据。它可以使用不同的波特率和通信模式,并支持硬件或软件流控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值