admin 管理员组

文章数量: 888134

MCU

MCU-串口通信协议

一、 介绍

串行通信就像单车道,所有数据得一个一个通行,并行就像多车道,一次可以通行多辆车。

MCU常用到的串口通信模块主要有两种:UART和USART。

UART:全称是Universal Asynchronous Receiver/Transmitte,即通用异步收发器。
USART:全称是Universal Synchronous/Asynchronous Receiver/Transmitter,即通用同步/异步收发器。

区别:
UART只支持异步收发,USART支持同步和异步收发。

串口通讯协议可以分成两层来理解,物理层和协议层。

物理层:约定双方连接的硬件接口,电平标准。
协议层:约定双方传输数据帧的格式,怎么打包,怎么解包。

二、 物理层

比较常见的有四种电气标准:TTLRS232RS422RS485

TTLRS232RS422RS485
信号类型电平信号电平信号差分信号差分信号
电压范围03.3V或05.0V-15V~+15V-0.25V~+6V-7V~+12V
传输距离1m10m1200m1200m
传输模式全双工,点对点全双工,点对点全双工,点对点半双工,多对多
最大传输速率100Kb/s100Kb/s10Mb/s10Mb/s

单工:只允许单向通信
半双工:同一时刻只允许单向通信,也就是在发送时无法接收数据
全双工:同一时刻允许双向通信,也就是在发送时也可以接收数据

三、协议层

不管物理层用哪种标准,只要使用异步收发,通讯的数据帧格式都是相同的,由以下四部分组成:起始位、数据位、校验位和停止位。

  • 起始位

    数据帧的起始信号由1个逻辑 0 的数据位表示。

  • 数据位

    在数据帧的起始位之后紧接着的就是要传输的主体数据内容,也称为有效数据,有效数据的长度常被约定为 5、6、7 或8位长。

  • 校验位

    在有效数据之后,有一个可选的数据校验位。由于数据通信相对更容易受到外部干扰导致传输数据出现偏差,可以在传输过程加上校验位来解决这个问题。校验方法有奇校验(odd)、偶校验(even)、0校验(space)、1校验(mark)以及无校验(noparity)。

    奇校验要求有效数据和校验位中 1 的个数为奇数,比如一个8位长的有效数据为:01101001,此时总共有 4 个 1 ,为达到奇校验效果,校验位为 1 ,最后传输的数据将是8位的有效数据加上1位的校验位总共9位。

    偶校验与奇校验要求刚好相反,要求帧数据和校验位中 1 的个数为偶数,比如数据帧:11001010,此时数据帧 1 的个数为4个,所以偶校验位为 0

    0 校验是不管有效数据中的内容是什么,校验位总为 0 ,1校验是校验位总为 1

  • 停止位

    数据帧的停止信号可由 0.5、1、1.5 或2个逻辑1的数据位表示,只要双方约定一致即可。

通信耗时计算:
假设波特率为9600,8位数据位,无校验位,1位停止位。

那么传输100个字节的数据需要多长时间?
已知一个字节由8的比特组成,传输一个字节只需要一个数据帧=1个起始位+8个数据位+0个校验位+1个停止位=10bit
波特率为9600,即传输一个bit需要1/9600s
总时间 = 1/9600 * 10 * 100 = 0.10417s

本文标签: MCU