【通信协议】——串口通信

注:串口通信包括同步(UART)和异步(USART),开发中常用的为UART,所以本次也侧重介绍UART。

串口通信是一种设备非常常用的串行通信方式,因为他简单便捷,因此目前大部分电子产品都支持该通讯方式。产品开发中,工程师也常使用串口用来调试。

物理层

物理层负责数据的实际传输,即通过电缆、无线等媒介发送和接收比特流。

串口通信的物理层有很多标准及变种,通常使用RS-232、RS-485、TTL等标准。

我们拿RS-232举例

两个通讯设备的”D9接口“之间通过串口信号线建立起链接,串口信号线中使用”RS-232标准“传输数据信号。但是由于RS-232电平标准不能直接被控制器识别,所以这些信号会经过”电平转换芯片“转换成控制器能是写的”TTL标准“的电平信号。

电平标准

根据通讯使用的电平标准不同,串口通讯可以分为TTL标准及RS-232标准

通讯标准电平标准(发送端)
5V TTL逻辑1:2.4V-5V
逻辑0:0~0.5V
RS-232逻辑1:-15V~-3V
逻辑0:+3V~+15V

常见的电子电路中常使用TTL的电平标准,理想状态下,使用5V表示二进制逻辑1,0V表示逻辑0;而为了增加串口通信的远距离传输及抗干扰能力,RS-232使用-15V为逻辑0,15V为逻辑1。

因为一般的控制器常采用TTL标准,所以需要”电平转换芯片“,常见的有MA3232对TTL与RS-232的信号进行转换。

RS-232信号线

我们常把RS232标准的接口称为COM口,也称为DB9接口。

  • DCD:载波检测,用于DTE告知对方,本机是否收到对方的载波信号

  • RXD:接收数据

  • TXD:发送数据

  • DTR:数据终端(DTE)就绪,用于DTE告知对方,本机是否准备好

  • GND:地线

  • DSR:数据设备就绪,用于DCR告知对方,本设备处于就绪状态

  • RTS:请求发送,DTE请求DCR本设备向DCE端发送数据

  • CTS:允许发送,DCE回复对方的RTS请求

  • RI:响铃指示,表示DCE端与线路已连通

上述为DB9标准接法。

在目前的其它工业控制使用的串口通讯中,一般只使用RXD、TXD以及GND三条信号线,直接传输数据信号,而RTS、CTS、DSR、DTR及DCD信号都被裁剪掉了。

协议层

串口通信的数据包有发送设备通过自身的TXD接口传输到接收设备的RXD接口。在串口通讯的协议层中,规定了数据包的内容,它由起始位、数据位、校验位、停止位组成;通讯双方的数据包格式要约定一致才能正常收发数据。

波特率

以串口异步通信为例(UART),异步通信中没有时钟信号(与CAN类似)是两个设置之间约定好波特率,及每个码元的长度。常见的波特率为9600、115200、4800等。

通讯的起始和停止信号

串口通讯的一个数据包从起始信号开始,直到停止信号结束。数据包的起始信号有一个逻辑0的数据位表示,而数据包的停止信号可由0.5、1、1.5、2个逻辑1的数据为表示。

有效数据

在数据包的起始位之后紧跟着的就是传输的主体数据内容,也成为有效数据,一般为5、6、7、8位。

数据校验

在有效数据之后,有一个可选的数据校验位。由于数据通信相对更容易受到外部干扰导致传输数据出现偏差,可以在传输过程中加上校验位来解决这个问题。常见的校验位有:奇偶校验、0校验、1校验或者无校验。

虽然本文章介绍了RS-232,但是USART/UART出书的是TTL电平信号,如果需要使用RS-232标准的信号需要加MAX3232等”电平转换“芯片。

相关文章

【通信协议】——CAN

CAN的全称为“控制器局域网络”(COntroller Area Network),它主要应用于汽车电子行业,由德国的BOSCH公司(博世,欧洲家电第一,德国人的东西值得信赖)开发。 CAN物理层 与IIC和SPI不同,CAN总线没有时钟线,所以CAN通讯并不是以时钟信号来进行同步的,**是一种异步通信方式,且只有CAN\_H,CAN\_L两条线共同组成差分信号线**。 闭环总线电路...

communication-protocol

【基础通信协议】——SPI

引言 SPI同样也是一个很常用的通信接口,也可以通过SPI来连接众多的传感器。相对IIC,SPI的通信速度更快,SPI可以达到几十MHz。所以在很多要求高速通信的场景会选择使用SPI总线,所以SPI总线也是我们嵌入式学习必不可缺的一部分。 SPI简介 SPI全称为Serial Perripheral Interface,也就是串行外围设备接口。SPI是由Motorola(摩托罗拉)公司推出...

communication-protocol

【基础通信协议】——IIC

引言 IIC是产品设计中最常用的通信接口,众多的传感器都会提供IIC接口来和主控连接,如陀螺仪、加速计、触摸屏等。所以IIC是嵌入式学习必须要掌握的。 本次只是讲解理论,不做实际实验操作,因为我现在在学Linux,使用的IMX6ULL大家手里面也可能没有这个板子,所以就不做演示啦。 IIC简介 **IIC是很常见的一种总线协议**,IIC是由NXP(恩智浦)公司设计的,IIC使用两条线在...

communication-protocol