串行通信的艺术:深入解析UART与奇偶校验

在这里插入图片描述

发送数据位是电流传输吗?

在UART(Universal Asynchronous Receiver/Transmitter)通信中,发送数据位不直接以电流的形式传输。而是通过改变电压水平或者光信号(在光纤通信中)来表示不同的数据位(0或1)。这种变化通常是相对于共同的地线(GND)来测量的。在电气接口中,比如RS-232,一个特定的电压范围代表一个逻辑“0”(通常是正电压),而另一个范围代表逻辑“1”(通常是负电压)。

电压表示数据位

在大多数MCU的UART通信中,数据位的传输是通过电压的变化来实现的:

  • 逻辑“0”(空闲状态):通常表示较高的电压水平。
  • 逻辑“1”:通常表示较低的电压水平,或者在某些标准中,如TTL逻辑,逻辑“1”是高电压,而逻辑“0”是低电压。

电流传输

尽管在标准UART通信中数据位的表示是基于电压变化的,但在某些特殊应用或标准中,如电流环(Current Loop)通信,数据确实是通过电流的变化来传输的。在这样的系统中,逻辑状态由电流的有无或电流的不同级别来表示,而不是电压的变化。

结论

所以,虽然标准的UART通信主要依靠电压变化来传输数据位,但理论上数据传输可以通过电流、电压、光或其他物理媒介的变化来实现,具体取决于所使用的物理层协议和硬件接口的设计。在大多数情况下,当我们讨论MCU和UART时,我们是在讨论基于电压变化的数据传输。

电压变化就是发送方电压变化,一根线上的接收方测量到电压变化吗?

是的,您的理解是正确的。在UART通信中,电压变化确实是由发送方(transmitter)产生的,而接收方(receiver)则通过测量一根线上的电压变化来检测数据。这种电压变化代表了不同的数据位——逻辑“0”和逻辑“1”。

如何工作:

  • 发送方:在UART通信协议中,发送方通过改变其输出引脚上的电压来发送数据。例如,在逻辑“1”的情况下,发送方可能会将电压保持在高电平(例如+5V或+3.3V,取决于系统的电压标准),而在逻辑“0”的情况下,它会将电压降到低电平(例如0V)。

  • 接收方:接收方的任务是监测这条连接两者的线(TX到RX)上的电压变化,并根据电压的高低来判断发送方传输的是逻辑“1”还是逻辑“0”。接收方的电路设计使其能够灵敏地检测这些变化,并将它们转换回数字信号(数据位)。

通信过程:

  1. 起始位:每次数据传输开始时,发送方首先将线路电压从空闲状态(通常是高电压)拉低到低电压,标志着起始位的开始。

  2. 数据位:随后,发送方按照设定的波特率依次发送数据位,每个位持续相同的时间间隔。接收方同步地采样这个线上的电压,以确定每个时间点的电压级别是高是低,从而得知是逻辑“1”还是逻辑“0”。

  3. 停止位和可选的奇偶校验位:数据位之后,发送方会发送停止位,通常将电压恢复到高电平,标志着一帧数据的结束。有时还会加入奇偶校验位来检测数据传输过程中的错误。

通过这种方式,UART通信允许两个设备在没有共享时钟信号的情况下,通过电压变化在一根线上可靠地传输数据。这种简单但有效的机制使得UART成为了微控制器、计算机和许多其他电子设备之间通信的一种流行方式。

奇偶校验如何发送

在UART(通用异步接收/发送)通信中,奇偶校验是一种错误检测机制,用来检查数据在传输过程中是否发生了变化或错误。奇偶校验位会添加到数据帧的末尾(在数据位之后、停止位之前),用以表示数据位中“1”的总数是奇数还是偶数,具体取决于是使用奇校验还是偶校验。

奇偶校验位的发送方式:

  1. 偶校验(Even Parity):在偶校验模式下,奇偶校验位的设置是使得包含校验位在内的整个数据帧中“1”的总数为偶数。如果数据位中“1”的数量已经是偶数,则校验位设置为0;如果“1”的数量是奇数,则校验位设置为1,以确保整个帧中“1”的总数为偶数。

  2. 奇校验(Odd Parity):在奇校验模式下,奇偶校验位的设置是使得包含校验位在内的整个数据帧中“1”的总数为奇数。如果数据位中“1”的数量已经是奇数,则校验位设置为0;如果“1”的数量是偶数,则校验位设置为1,以确保整个帧中“1”的总数为奇数。

发送过程:

  • 发送方根据设置的校验模式(奇校验或偶校验)计算数据位中“1”的数量。
  • 然后,根据“1”的总数是奇数还是偶数,确定奇偶校验位的值。
  • 接下来,发送方在发送数据位后发送这个校验位。
  • 最后,发送方发送停止位,标记数据帧的结束。

接收过程:

  • 接收方接收数据帧,包括数据位和校验位。
  • 接收方重新计算接收到的数据位中“1”的总数,并考虑校验位,以验证数据帧是否符合预期的奇偶性。
  • 如果接收到的数据帧的奇偶性与预期不符,接收方可以判断在传输过程中可能发生了错误。

使用奇偶校验可以提高通信的可靠性,尤其是在错误更可能发生的环境中。然而,需要注意的是,奇偶校验只能检测到奇数位的错误(例如,一个位错误或三个位错误),对于偶数位的错误(如两个位或四个位错误)则无法检测。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/387678.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C#利用接口实现选择不同的语种

目录 一、涉及到的知识点 1.接口定义 2.接口具有的特征 3.接口通过类继承来实现 4.有效使用接口进行组件编程 5.Encoding.GetBytes(String)方法 (1)检查给定字符串中是否包含中文字符 (2)编码和还原前后 6.Encoding.GetS…

[计算机网络]---网络编程套接字

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、基础知识…

数仓建模—数据网格

数据网格 随着数字化时代的到来,近几年数据领域的新技术概念不断涌现,无论是数据湖、湖仓一体、流批一体、存算一体、数据编织抑或数据网格,很多还爬上了Gartner曲线,其中数据网格备受关注,数据网格从字面意思来看挺抽象的,会劝退很多人,但当你深入去理解这个概念时,才…

数据存储以及内存

数据在内存中的存储是因不同的类型而不同的。 但首先我们需要知道的是,在C语言中,数据在内存中的存储是以变量的形式存储的。每个变量都有一个地址,指向内存中的特定位置。变量的值存储在这个地址对应的内存单元中。不同类型的变量在内存中占…

react【三】受控组件/高阶组件/portals/fragment/严格模式/动画

文章目录 1、受控组件1.1 认识受控组件1.2 checkout1.3 selected1.4 非受控组件 2、高阶组件2.1 认识高阶组件2.2 应用1-props增强的基本使用2.3 对象增强的应用场景-context共享2.4 应用2-鉴权2.5 应用3 – 生命周期劫持2.6、高阶组件的意义 3、Portals4、fragment5、StrictMo…

【无标题】Matlab之annotation函数——创建图形注释(箭头、椭圆、矩形)

应用1:创建文本箭头注释 创建一个简单线图并向图窗添加文本箭头。用归一化的图窗坐标指定文本箭头位置,起点为 (0.3,0.6),终点为 (0.5,0.5)。通过设置 String 属性指定文本说明。 figure plot(1:10) x [0.3 0.5]; y [0.6 0.5]; annotation…

Linux网络基础1

目录 计算机网络背景协议OSI七层模型TCP/IP五层(四层)模型网络传输基本流程以太网通信原理IP地址理解 计算机网络背景 到目前为止,我们之前所有的编程都是单机的,不是多机互联。以前计算机被发明的时候是为了军事用途&#xff0…

【C语言】常见字符串函数的功能与模拟实现

目录 1.strlen() 模拟实现strlen() 2.strcpy() 模拟实现strcpy() 3.strcat() 模拟实现strcat() 4.strcmp() 模拟实现strcmp() 5.strncpy() 模拟实现strncpy() 6.strncat() 模拟实现strncat() 7.strncmp() 模拟实现strncmp() 8.strstr() 模拟实现strstr() 9.str…

Midjourney绘图欣赏系列(一)

Midjourney介绍 Midjourney 是生成式人工智能的一个很好的例子,它根据文本提示创建图像。它与 Dall-E 和 Stable Diffusion 一起成为最流行的 AI 艺术创作工具之一。与竞争对手不同,Midjourney 是自筹资金且闭源的,因此确切了解其幕后内容尚不…

Vulhub kali 环境安装教程

进入 root 权限 sudo su 更新软件 apt-get update 安装 HTTPS 协议和 CA 证书 apt-get install -y apt-transport-https ca-certificates 安装 docker apt install docker.io 查看 docker 是否安装完成 docker -v 安装 pip apt-get install python3-pip 安装 docker-compose do…

【python之美】减少人工成本之批量去除首行_3

批量去除首行内容 怎么创建多个文本并写入多行数据呢 上特产: import ospath "C:\\Users\\Administrator\\Desktop\\text_1\\" numb int(input("需要创建几个文件:")) a 1 for i in range(numb):f open(path text _ str(a)…

jmeter-问题四:json断言时,预期结果那里如何不写成固定值?

文章目录 json断言时,预期结果那里如何不写成固定值?定义用户参数,然后在json断言的expected value处引用使用csv数据,然后在json断言的expected value处引用 json断言时,预期结果那里如何不写成固定值? 定…

测试开发-2-概念篇

文章目录 衡量软件测试结果的依据—需求1.需求的概念2.从软件测试人员角度看需求3.为什么需求对软件测试人员如此重要4.如何才可以深入理解被测试软件的需求5.测试用例的概念6.软件错误(BUG)的概念7.开发模型和测试模型8.软件的生命周期9.瀑布模型&#…

Spring 用法学习总结(三)之 AOP

Spring学习 7 bean的生命周期8 AOP面向切面编程8.1 AOP相关术语8.2 AOP使用 7 bean的生命周期 bean的生命周期主要为bean实例化、bean属性赋值、bean初始化、销毁bean,其中在实例化和初始化前后都使用后置处理器方法,而InstantiationAwareBeanPostProce…

Linux之多线程

目录 一、进程与线程 1.1 进程的概念 1.2 线程的概念 1.3 线程的优点 1.4 线程的缺点 1.5 线程异常 1.6 线程用途 二、线程控制 2.1 POSIX线程库 2.2 创建一个新的线程 2.3 线程ID及进程地址空间布局 2.4 线程终止 2.5 线程等待 2.6 线程分离 一、进程与线程 在…

HDFS的超级用户

一. 解释原因 HDFS(Hadoop Distributed File System)和linux文件系统管理一样,也是存在权限控制的。 但是很不一样的是, 在Linux文件系统中,超级用户Superuser是root而在HDFS中,超级用户Superuser是启动了namenode的用户&#x…

4核16g配置咋样?还不错,阿里云4核16G服务器26元1个月

4核16g配置咋样?还不错,阿里云4核16G服务器26元1个月,阿里云4核16G服务器配置优惠价格ECS云服务器经济型e实例26元1个月、149元半年、79元3个月,4核16G通用算力u1服务器、通用型g7、通用型g8i、AMD通用型g8a、性能增强通用型g8ae、…

html从零开始6:关系选择器、css盒子模型、弹性盒子模型【搬代码】

关系选择器 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width,…

Linux日志管理服务 rsyslogd

文章目录 1. 基本介绍2. 系统常用的日志3. 日志管理服务 rsyslogd 1. 基本介绍 日志文件是重要的系统信息文件&#xff0c;其中记录了许多重要的系统事件&#xff0c;包括用户的登录信息、系统的启动信息、系统的安全信息、邮件相关信息、各种服务相关信息等。日志对于安全来说…

QQ群微信群强制加群/随机小姐姐视频分享打赏裂变PHP源码

很多人再找qq群或者微信分享小姐姐视频打赏的裂变源码&#xff0c;这次就分享出来&#xff01; 下载地址QQ群微信群强制加群.zip官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘