【通信协议】——串口通信
注:串口通信包括同步(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两条线共同组成差分信号线**。 闭环总线电路...
【基础通信协议】——SPI
引言 SPI同样也是一个很常用的通信接口,也可以通过SPI来连接众多的传感器。相对IIC,SPI的通信速度更快,SPI可以达到几十MHz。所以在很多要求高速通信的场景会选择使用SPI总线,所以SPI总线也是我们嵌入式学习必不可缺的一部分。 SPI简介 SPI全称为Serial Perripheral Interface,也就是串行外围设备接口。SPI是由Motorola(摩托罗拉)公司推出...
【基础通信协议】——IIC
引言 IIC是产品设计中最常用的通信接口,众多的传感器都会提供IIC接口来和主控连接,如陀螺仪、加速计、触摸屏等。所以IIC是嵌入式学习必须要掌握的。 本次只是讲解理论,不做实际实验操作,因为我现在在学Linux,使用的IMX6ULL大家手里面也可能没有这个板子,所以就不做演示啦。 IIC简介 **IIC是很常见的一种总线协议**,IIC是由NXP(恩智浦)公司设计的,IIC使用两条线在...