STM32-串口通信

串口通信

串口通信基本常识

在计算机设备与设备之间或与集成电路之间常常需要进行数据传输,这也是在单片机学习中重要的一环,基本控制各种各样的外设都是通过不同的通信协议进行控制。开始学习吧⭐

一.串口与并行通信

串行通讯:是指设备之间通过少 量数据信号线(一般是 8 根以下),地线以及控制信号线,按数据位形式一位一位地传输数据 的通讯方式。

并行通讯:一般是指使用 8、16、32 及 64 根或更多的数据线进行传输的通讯 方式,它们的通讯传输对比:并行通讯就像多个车道的公路,可以同时传输 多个数据位的数据,而串行通讯,而串行通讯就像单个车道的公路,同一时刻只能传输一 个数据位的数据。

图解:并行与串行之间的区别

图解

常用的串口通信:usart通信,I2C通信,SPI通信

并行通信:SDIO,ESMC,W5100

串行与并行通信的特性对比

特性 串行通讯 并行通讯
通讯距离 较远 较近
抗干扰能力 较强 较弱
传输速率 较慢 较高
成本 较低 较高

不过由于并行传输对同步要求较高,且随着通讯速率的提高,信号干扰的问题会显著 影响通讯性能,现在随着技术的发展,越来越多的应用场合采用高速率的串行差分传输。

二.全双工、半双工与单工

根据数据通信方向可将通讯分为:为全双工、半双工及单工通讯

通讯方式 说明
全双工 在同一时刻,两个设备之间可以同时手法数据
半双工 两个设备之间可以收发数据,但不能在同一时刻进行
单工 在任何时刻都只能进行一个方向的通讯

图解:

通信方向

三.同步与异步

根据数据的同步方式又可分为:同步与异步

区分:可以根据通讯过程中是否有使用 到时钟信号进行简单的区分

同步通讯:

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

同步通讯

在这种通讯情况下对时钟的要求较高,穿线时钟信号不稳定时,就会出现数据收发丢失。

异步通讯:

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

异步通讯

对比

在同步通讯中,数据信号所传输的内容绝大部分就是有效数据,而异步通讯中会包含 有帧的各种标识符,所以同步通讯的效率更高,但是同步通讯双方的时钟允许误差较小, 而异步通讯双方不需要时钟。

四.通信的速率

比特率

衡量通讯性能的一个非常重要的参数就是通讯速率,通常以比特率(Bitrate)来表示,即 每秒钟传输的二进制位数,单位为比特每秒(bit/s)。

波特率

它表示每秒钟传输了多少个码元。而码元是通讯信号调制的概念,通讯中常用 时间间隔相同的符号来表示一个二进制数字,这样的信号称为码元。

列如:

常见的通讯传输中, 用 0V 表示数字 0,5V 表示数字 1,那么一个码元可以表示两种状态 0 和 1,所以一个码元 等于一个二进制比特位,此时波特率的大小与比特率一致;如果在通讯传输中,有 0V、 2V、4V 以及 6V 分别表示二进制数 00、01、10、11,那么每个码元可以表示四种状态,即 两个二进制比特位,所以码元数是二进制比特位数的一半,这个时候的波特率为比特率的 一半。因为很多常见的通讯中一个码元都是表示两种状态,

一般直接以波特率来表示比特率,虽然严格来说没什么错误,但两者之间还是存在区别的。

串口通信协议

协议简介

物理层

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

  • RS232标准

  • USB转串口

  • 原生的串口到串口

RS-232与TTL电平的区别

RS232标准串口通讯结构图

RS232

用于:工业设备进行直接通信,-15v:0 +15v:1 容错率大

电平转换芯片:MAX3232,SP3232

  • TTL电平:从单片机或芯片中出来

没有外接RS-232接口 需要自己买模块进行拓展┮﹏┭

  • USB转串口主要用于设备与电脑通信
  • 电平转芯片一般有CH340、PL2303、CP2102、FT232
  • 使用的时候需要电脑端安装驱动

原生的串口到串口

  • 原生的串口通信主要是控制器跟串口的设备或者传感器通信,不需要经过电平转换芯片来转换电平,直接就用ttl电平通信
  • 使用原生串口通信的模块:GPS模块,GSM模块,串口转WIFI模块,HC04蓝牙模块

协议层

规定通讯逻辑, 统一收发双方的数据打包、解包标准。(即为软件层)

简单来说物理层规定我们用嘴巴还是用肢体来交流, 协议层则规定我们用中文还是英文来交流。

串口数据包的基本组成

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

数据包

起始位:由1个逻辑0的数据位表示

结束位:由1.5,1,1.5或2个逻辑1的数据位表示

有效数据:在起始位后紧接着的就是有效数据,有效数据的长度常被约定位5,6,7,或8位长

校验位:可选,增强数据的抗干扰性

校验方法分为:

1:奇校验 2:偶校验 3:0校验

4:1校验 5:无校验

奇校验(odd):要求有效数据和校验位中“1”的个数为奇数

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

偶校验(even):要求帧数据和校验位中“1”的个数为偶数

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

0校验:不管有效数据中的内容是说明,校验位总为 "0"

1校验:校验位总为1

无校验:数据包中不包含校验位

原文地址:https://www.cnblogs.com/Serendipitychen/p/13906907.html