当前位置: 首页 > news >正文

2.STM32之通信接口《精讲》之USART通信

有关通信详解进我主页观看其他文章!
【免费】SPIIICUARTRS232/485-详细版_UART、IIC、SPI资源-CSDN文库

通过以上可以看出。根据电频标准,可以分为TTL电平,RS232电平,RS485电平,这些本质上都属于串口通信。有区别的仅是电平标准不一样,TTL电平3.3V代表逻辑1,0V代表逻辑0

你所提到的电平标准(TTL、RS232、RS485)确实是串口通信中常见的电压标准,它们本质上都涉及到数据传输中的电平定义,但它们在具体实现上有一些关键的差异。下面是每种电平标准的详细说明:

1. TTL电平(Transistor-Transistor Logic)

  • 电压范围
    • 逻辑1:+3.3V 或 +5V(通常为+5V)
    • 逻辑0:0V
  • 特点
    • TTL电平广泛用于微控制器、单片机等系统中,因其高电压(+5V)和较低的功耗而成为常见的通信方式。
    • TTL信号通常只能通过两根线传输,且电压变化速度较快。
    • 易于实现与逻辑电路直接兼容,但传输距离有限。

2. RS232电平(Recommended Standard 232)

  • 电压范围
    • 逻辑1(标识):-3V 到 -15V
    • 逻辑0(空间):+3V 到 +15V
    • (0V表示空闲状态)
  • 特点
    • RS232常用于点对点的串行通信,较长的传输距离和较高的抗干扰能力。
    • 电压较高,适用于较长的传输距离(几十米),并且常见于计算机与外设的连接(如调制解调器、串口打印机等)。
    • RS232信号传输是单端的,因此更容易受到噪声的干扰,尤其在长距离传输时。

3. RS485电平(Recommended Standard 485)

  • 电压范围
    • 逻辑1:+2V 到 +6V(差分信号)
    • 逻辑0:-2V 到 -6V(差分信号)
    • (0V表示空闲状态)
  • 特点
    • RS485使用差分信号,这意味着它使用两条信号线,并通过两线间的电压差来传输数据。相比单端信号传输,差分信号对噪声具有更强的抗干扰能力。
    • RS485支持更长的传输距离(最大可达1200米),并且能够实现多点通信,适用于多台设备的串行通信(如工业自动化、远程监控系统等)。
    • 需要注意的是,RS485的电平变化是差分的,即信号线之间的电压差决定逻辑1和逻辑0。

总结:

  • TTL:用于短距离、高速通信,适合微控制器和简单设备之间的通信,电平标准是+5V(或+3.3V)。
  • RS232:常见于计算机和外设之间的通信,适合中等距离传输,电平标准在±3V到±15V之间。
  • RS485:适合长距离、多点通信,电平通过差分信号来传输,电压范围为±2V到±6V。

这三种电平标准都属于串口通信(Serial Communication),而它们之间的主要区别就在于电压范围、传输距离、抗干扰能力以及是否支持多点通信等方面

在串口通信中,数据帧(Data Frame)是数据传输的基本单位,通常由起始位、数据位、校验位停止位组成。每个部分在数据传输中都有特定的功能。下面是各个部分的详细解释,并附上几个示例:

1. 波特率(Baud Rate)

  • 定义:波特率表示串口通信的速率,单位是波特(baud),即每秒钟传输的符号(或比特)数量。波特率越高,传输速度越快。
  • 常见波特率值:9600, 19200, 38400, 57600, 115200(bps)。
  • 例子:波特率为9600,意味着每秒钟最多可以传输9600个比特。

2. 起始位(Start Bit)

  • 定义:每个数据帧的开始通常由一个起始位来标识。起始位的电平通常固定为低电平(0),这有助于接收设备判断数据帧的开始。
  • 作用:起始位是用来告诉接收方数据帧的开始位置。通常为1个比特。
  • 例子:假设有一个数据帧,起始位就是数据帧的第一个信号,通常为低电平(0),如:0

3. 数据位(Data Bits)

  • 定义:数据位是实际传输的数据部分,通常包括5、6、7或8个比特(最常见的是8位)。它们按照顺序表示待传输的信息。
  • 作用:数据位传输的是实际的信息,每一位为一个比特(0或1),并且通常低位先行,即数据的低位(LSB,Least Significant Bit)在前。
  • 例子:假设我们传输的8位数据为10101010,那么数据位的内容就是10101010

4. 校验位(Parity Bit)

  • 定义:校验位是用于数据验证的一位,它根据数据位的值来决定。其目的是检查数据在传输过程中是否出现错误。常见的校验方式有奇偶校验(Even Parity、Odd Parity)和无校验(None)。
    • 无校验(None):不使用校验位。
    • 奇校验(Odd Parity):使得数据位和校验位的1的个数为奇数。
    • 偶校验(Even Parity):使得数据位和校验位的1的个数为偶数。
  • 作用:校验位能够帮助接收方验证接收到的数据是否正确。若检测到错误,则可以请求重新传输。
  • 例子:如果数据位为10101010,并且使用偶校验(Even Parity),由于数据中1的个数是4个(偶数),因此校验位为0;若是奇校验(Odd Parity),校验位将是1,以使得1的个数为奇数。

5. 停止位(Stop Bit)

  • 定义:停止位用于标识数据帧的结束,通常为高电平(1),它的作用是为接收方提供数据帧之间的间隔,确保数据的正确分割。
  • 作用:停止位确保接收方能够正确地识别每个数据帧的结束位置,并准备接收下一个数据帧。停止位的长度通常是1、1.5或2个比特。
  • 例子:在一个数据帧的最后,停止位是1个或2个比特的高电平(1)。例如,如果使用1个停止位,则数据帧的结束就是1

数据帧的组成

假设我们使用8个数据位,1个校验位,1个停止位的配置,波特率为9600,下面是一个具体的例子:

示例1:无校验位

假设我们要发送的数据是10101010,以下是一个数据帧的组成:

  • 起始位0(低电平,标识数据的开始)
  • 数据位10101010
  • 校验位(不使用校验位)
  • 停止位1(高电平,标识数据的结束)

因此,整个数据帧是:

 

复制代码

0 10101010 1

表示:起始位(0) + 数据位(10101010) + 停止位(1)

示例2:奇校验

假设我们要发送的数据是1100101,并且使用奇校验,则数据帧如下:

  • 起始位0
  • 数据位1100101
  • 校验位:因为数据中1的个数是3个(奇数),为了使总数保持奇数,所以校验位为0
  • 停止位1

因此,整个数据帧是:

 

复制代码

0 1100101 0 1

表示:起始位(0) + 数据位(1100101) + 校验位(0) + 停止位(1)

示例3:偶校验

假设我们要发送的数据是1010110,并且使用偶校验,则数据帧如下:

  • 起始位0
  • 数据位1010110
  • 校验位:因为数据中1的个数是4个(偶数),为了保持偶数,校验位应为0
  • 停止位1

因此,整个数据帧是:

 

复制代码

0 1010110 0 1

表示:起始位(0) + 数据位(1010110) + 校验位(0) + 停止位(1)

总结

  • 波特率:定义串口通信速率(如9600bps、115200bps等)。
  • 起始位:表示数据帧的开始,通常为低电平(0)。
  • 数据位:传输的实际数据,常见为5到8位,低位先行。
  • 校验位:用于验证数据的正确性,可以是奇校验、偶校验或无校验。
  • 停止位:标识数据帧的结束,通常为1或2个比特的高电平(1)。

通过这些组成部分,串口通信能够确保数据的可靠传输。



精彩继续----------------------------------------------32.STM32之通信接口《精讲》之USART通信,实战教程

http://www.lryc.cn/news/486601.html

相关文章:

  • Bootstrap和jQuery开发案例
  • Qt 之 qwt和QCustomplot对比
  • 【STM32】MPU6050简介
  • Oracle 单机及 RAC 环境 归档模式及路径修改
  • 抽象java入门1.5.3.1——类的进阶
  • python——模块 迭代器 正则
  • QT仿QQ聊天项目,第三节,实现聊天界面
  • Linux-何为CentOS
  • C++中的 std::optional
  • 猫狗识别之BUG汇总
  • 【论文复现】自动化细胞核分割与特征分析
  • 排序算法 -快速排序
  • K8S 查看pod节点的磁盘和内存使用情况
  • 华为HCIP——MSTP/RSTP与STP的兼容性
  • AI 大模型如何重塑软件开发流程:现状与未来展望
  • 3步实现贪吃蛇
  • 华东师范大学数学分析第五版PDF习题答案上册及下册
  • MySQL之联合查询
  • [C/C++] 定位新表达式 placement new
  • 【MySQL】MySQL的笛卡尔积现象是什么?简单说说
  • 《InsCode AI IDE:编程新时代的引领者》
  • 微搭低代码私有化部署搭建教程
  • 【在Linux世界中追寻伟大的One Piece】多路转接epoll(续)
  • 【不写for循环】玩玩行列
  • 【Nginx】反向代理Https时相关参数:
  • 第 17 章 - Go语言 上下文( Context )
  • Android Framework AMS(16)进程管理
  • STM32设计防丢防摔智能行李箱
  • 【异常解决】Linux shell报错:-bash: [: ==: 期待一元表达式 解决方法
  • ML 系列: 第 23 节 — 离散概率分布 (多项式分布)