通讯协议--UART异步串行通信

文章目录

  • 一、串口通讯协议简介
  • 二、物理层
    • [   1、串口通讯结构图](#   1、串口通讯结构图)
    • [   2、电平标准](#   2、电平标准)
    • [   3、RS-232信号线](#   3、RS-232信号线)
  • 三、协议层
    • [   1、波特率](#   1、波特率)
    • [   2、起始和停止信号](#   2、起始和停止信号)
    • [   3、有效数据](#   3、有效数据)
    • [   4、数据校验](#   4、数据校验)

一、串口通讯协议简介

   串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式。

   也经常使用该通讯方式输出调试信息。

   通讯协议,以分层的方式来理解,最基本的是把它分为物理层和协议层。

   物理层规定通讯系统中具有机械、电子功能部分的特性, 确保原始数据在物理媒体的传输。

   协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。

二、物理层

   1、串口通讯结构图

     

      两个通讯设备的"DB9接口"之间通过串口信号线建立起连接,串口信号线中使用"RS-232标准"传输数据信号。

   2、电平标准

      电平标准:

         常见的电子电路中常使用TTL的电平标准,理想状态下,使用5V表示二进制逻辑1,使用0V表示逻辑0;

         而为了增加串口通讯的远距离传输及抗干扰能力,它使用-15V表示逻辑1,+15V表示逻辑0。

        

      电压对比图:

        

      因为控制器一般使用TTL电平标准,所以常常会使用MAX3232芯片对TTL及RS-232电平的信号进行互相转换。

   3、RS-232信号线

      RS-232标准的COM口(也称DB9接口):

        

     DB9公头及母头引脚标准:

        

        

      连接方式:

        

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

三、协议层

   串口数据包的基本组成:

      起始信号,主体数据,效验位,停止位组成。

     

   1、波特率

      异步通讯中由于没有时钟信号(如前面讲解的DB9接口中是没有时钟信号的), 所以两个通讯设备之间需要约定好波特率,即每个码元的长度,以便对信号进行解码。

      上图中用虚线分开的每一格就是代表一个码元。

      常见的波特率为4800、9600、115200等。

      即为每秒能传输几个码元。

   2、起始和停止信号

      串口通讯的一个数据包从起始信号开始,直到停止信号结束。

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

   3、有效数据

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

   4、数据校验

      在有效数据之后,有一个可选的数据校验位。

      校验位:可选,为的是数据的抗干扰性。

      校验方法分为:

         1-奇校验(odd)、 2-偶校验(even)

         3-0 校验(space)、 4-1校验(mark)

         5-无校验(noparity)

      奇校验:

         要求有效数据和校验位中"1"的个数为奇数。

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

      偶校验:

         与奇校验要求刚好相反,要求帧数据和校验位中"1"的个数为偶数。

         比如数据帧:11001010,此时数据帧"1"的个数为4个,所以偶校验位为"0"。

      0校验、1校验:

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

      无校验:

         没有校验位。

相关推荐
炸膛坦客7 小时前
单片机/C/C++八股:(二十六)IIC 专题(I²C)---- 上集
c语言·c++·单片机
GeekArch14 小时前
第24讲:Vibe模式代码风格控制——适配Keil/STM32工程规范
人工智能·stm32·单片机·嵌入式硬件·mcu·决策树·ai编程
Freedom_my15 小时前
STM32项目3
stm32·单片机·嵌入式硬件
国科安芯16 小时前
星间光链路:AS32S601型抗辐射MCU在空间激光通信终端控制中的技术实现
服务器·网络·单片机·嵌入式硬件·物联网·安全·信息与通信
小李不困还能学17 小时前
基于 51 单片机的8 路抢答器设计教程
单片机·嵌入式硬件·mongodb·抢答器
萌动的小火苗18 小时前
嵌入式开发中的栈与队列:任务调度为什么依赖数据结构
数据结构·c++·单片机·嵌入式硬件
振浩微433射频芯片18 小时前
工业遥控器总在关键时刻“掉链子”?——433MHz芯片方案如何破局
网络·单片机·嵌入式硬件·物联网·工业遥控
blevoice19 小时前
抖抖燃脂机单 AC6966B 主控调试踩坑:Type-C 整机供电喇叭无声排障
c语言·开发语言·单片机
三易串口屏20 小时前
三易串口屏开发教程:如何使用键盘控件输入参数并发送给单片机
单片机·嵌入式硬件·串口屏·三易串口屏·键盘控件
2CM_Embed21 小时前
F28379D 下载后 VOFA+ 无数据、Reset 后恢复:一次 TZ 中断误触发排查记录
笔记·单片机·sci·c2000·f28379d·vofa·tz