【MCAL_Uart】-1.1-图文详解Uart串口协议

news/2024/4/25 20:11:18/文章来源:https://blog.csdn.net/qfmzhu/article/details/130349161

目录

1 什么是UART

2 UART的电平

3 UART的波特率

4 UART帧格式

4.1 start bit起始位

4.2 data bit数据位

4.3 parity bit奇偶校验位

4.4 stop bit停止位

5 什么是8-N-1

6 UART总线负载率计算

结尾


优质博文推荐阅读(单击下方链接,即可跳转):

点击返回「《Autosar从入门到精通-实战篇》总目录」

点击返回「《Autosar_BSW高阶配置》总目录」

点击返回「《Autosar_MCAL高阶配置》总目录」

点击返回《嵌入式软件开发》专栏

1 什么是UART

UARTuniversal asynchronous receiver-transmitter通用异步接发器是一种用于asynchronous serial communication异步串行通信的硬件设备/器件,该总线(BUS)有两条数据线(TX和RX),可以实现全双工的发送和接收。在嵌入式系统中,UART常用于MCU(主机)与外设芯片(从机)之间的通信。

UART通常是一个单独的ICintegrated circuit集成电路),通常一个或多个UART被集成在微控制器MCU芯片中。

注意:

关于异步,同步,并行,串行,单工,半双工,全双工的介绍,详见博文“

什么是异步,同步,并行,串行,单工,半双工,全双工通信https://blog.csdn.net/qfmzhu/article/details/130332705”。

2 UART的电平

UART的电平通常使用逻辑电平TTLTransistor-Transistor Logic。该电平的来源MCU或外设芯片的供电。如果MCU或外设芯片的供电是5V,则5V等价于逻辑1,0V等价于逻辑0;如果MCU或外设芯片的供电是3.3V,则3.3V等价于逻辑1,0V等价于逻辑0

图2-1 UART的TTL电平

注意:

如果MCU外设芯片的供电不一样(一个5V,另一个3.3V),需要在二者之间加一个电平转换芯片,来满足通信。

图2-2 示波器下,一个UART帧波形,逻辑电平为3.3V(无parity bit,data bit长度为8,data bit = 0x09)

3 UART的波特率

波特率概念,我们在博文中“图解CAN总线】-3-详述波特率(Raud Rate)和比特率(Bit Rate)二者的差异https://blog.csdn.net/qfmzhu/article/details/122805699”提到过。

波特率(Raud Rate)的定义:指单位时间内传输的码元数,单位:波特,b/s(Baud per second)

在通信领域中,常用时间间隔相同的符号来表示一个二进制数字,这样的时间间隔内的信号称为码元。而一个信号需要的间隔被称为码元长度。

每个码元需要通过几个比特(Bit)来表示,所以传输一个码元等于传输了几个比特(Bit)。例如,若使用0、1、2、3、4、5、6、7共8个状态值,则需要3个比特来表示一个信号值,所以一个码元不一定对应一个比特。

由于在UART通信中,一个码元表示01两个状态,需要一个Bit表示,既一个码元等于1 Bit

在一个UART通信网络中,会约定好使用的波特率,来确保在同一时段,能够精准/相同分割逻辑1逻辑0,到了一个连续01序列位。而一个UART Frame则由多个0和1序列位组成。

UART常用的波特率有9600bps,既一个Bit Time:1s / 9600 = 104微秒。

图3-1 示波器下,一个波特率为9600bps的UART帧波形,一个起始位的Bit Time为104微秒

4 UART帧格式

图4-1 UART帧格式

一个Uart Frame由以下几个部分组成:

  • 1位start bit起始位:表示一次通信的开始,用于同步,给到接收器时钟同步,准备开始接收数据;
  • 8位data bit数据位;表示通过UART串口发送的数据/信息;
  • 1位parity bit奇偶校验位(可选,even偶数或odd奇数);校验发送数据的正确性
  • 1/1.5/2位stop bit停止位:表示一次通信的结束。

注意:

  • 这里一次通信,可以理解为发送一个字节。如果要连续发送多个字节,重复该过程即可;
  • 波特率,是否使用parity bit,以及data bitstop bit的长度,需要事先约定好。
  • data bit先发LSB,再发MSB,如图2-2中,data bit = 0x09

4.1 start bit起始位

起始位向接收方发出信号,表示一个新的数据即将到来。

4.2 data bit数据位

起始位后,接下来的五到九位,取决于所采用的代码集。既该UART帧携带的数据/信息。

注意对比图2-2和图4-2:少了一个高位。

图4-2 示波器下,data bit长度为7bit的UART波形(无parity bit,data bit = 0x09)

4.3 parity bit奇偶校验位

UART中的校验位(Parity Bit是一种用于检测和纠正传输错误的简单错误检测和校正方法。校验位是在UART通信中的数据位之后添加的一位,用于检测数据传输过程中的错误。

Parity Bit校验位可以有三种不同的类型:

奇校验(Odd Parity:如果数据位中的1的个数为奇数,校验位就被设置为0;如果数据位中的1的个数为偶数,校验位就被设置为1,见图4-3和图4-4;

偶校验(Even Parity:如果数据位中的1的个数为偶数,校验位就被设置为0;如果数据位中的1的个数为奇数,校验位就被设置为1,见图4-5和图4-6;

无校验(No Parity:表示不使用校验位。

图4-3 示波器下,data bit数据=0x09的UART波形(奇校验)

图4-4 示波器下,data bit数据=0x0B的UART波形(奇校验)

图4-5 示波器下,data bit数据=0x09的UART波形(偶校验)

图4-6 示波器下,data bit数据=0x0B的UART波形(偶校验)

4.4 stop bit停止位

接下来的1个或2个位总是处于逻辑1状态,称为停止位(s)。它们向接收方发出信号,表示字节已经发送完成。由于起始位是逻辑低电平0,停止位是逻辑高电平1,所以在字节之间总是至少有两个保证信号变化。

图4-7和图4-8分别连续发了两个数据(0x09和0x0B),stop bit长度分别为1bit和2bit

图4-7 示波器下,stop bit长度为1bit的UART波形(无parity bit)

图4-8 示波器下,stop bit长度为2bit的UART波形(无parity bit)

5 什么是8-N-1

8-N-1Asynchronous mode异步模式下,serial port串行端口参数设置或配置的常用速记符号,其表示:1start bit起始位8data bit数据位parity bit奇偶校验位1stop bit停止位

该缩写通常与通信链路速度一起给出,单位为bps(bits per second,其是波特率Baud单位),如9600-8-N-1该速度描述了通信链路的最大带宽:其用于成Frame的Bit总数需要低于bit transmission rate比特传输率。对于8-N-1编码,一Frame只有80%的Bit可用于数据(对于每8个bit的数据,在串行链路上发送10个bit:1个起始位、8个数据位和1个停止位)。

6 UART总线负载率计算

因为UART是全双工通信,分别有一个TX链路和RX链路,所以需要分开考虑各通信链路的负载率。

假设UART串口参数设置为9600-8-N-1,既一个UART帧为10Bit。此时你可以通过统计1秒内,串口工具或者嵌入式软件接收到的UART帧数n(这里也可以理解为接收到字节数),来计算负载率:((n * 10) / 9600) * 100%

结尾

获取更多“汽车电子资讯”和“工具链使用”,

请关注CSDN博客“汽车电子助手”,做您的好助手。

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

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

相关文章

Linux驱动之在Ubuntu下编译驱动模块——学习笔记(12)

为了方便驱动开发学习,了解一下在Ubuntu上进行驱动编译的流程。 一、下载对应的内核源码 首先要通过 uname -a查询一下自己的内核版本。 我这里下载的是 https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.tar.gz 二、编译内核 (1&a…

功能安全ISO26262 道路车辆 功能安全审核及评估方法第3部分:软件层面

道路车辆 功能安全审核及评估方法 第3部分:软件层面 Road vehicles - Functional Safety Audit and Assessment Method - Part 3: Software Level (工作组草案) 2022.4.15 前  言 本文件按照GB/T 1.1—2020《标准化工作导则 第1部分…

Pytorch深度学习笔记(十)多分类问题

课程推荐:09.多分类问题_哔哩哔哩_bilibili 目录 1. 多分类模型 2. softmax函数模型 3. Loss损失函数 4.实战MNIST Dataset 之前,在逻辑斯蒂回归中我们提到了二分类任务,现在我们讨论多分类问题。 1. 多分类模型 与二分类不同的是多分…

Hive基础和使用详解

文章目录 一、启动hive1. hive启动的前置条件2. 启动方式一: hive命令3. 方式二:使用jdbc连接hive 二、Hive常用交互命令1. hive -help 命令2. hive -e 命令3. hive -f 命令4. 退出hive窗口5. 在hive窗口中执行dfs -ls /; 三、Hive语法1.DDL语句1.1 创建数据库1.2 两…

Redis 数据存储原理

核心模块如图 1-10。 图1-10 图 1-10 Client 客户端,官方提供了 C 语言开发的客户端,可以发送命令,性能分析和测试等。 网络层事件驱动模型,基于 I/O 多路复用,封装了一个短小精悍的高性能 ae 库,全称是 …

【人工智能】遗传算法

人工智能算法---遗传算法(基础篇) 知识导图:遗传算法(概念)1.初始化种群二进制编码与解码 2.选择操作3.交叉操作4.评估操作5.终止操作 知识导图: 遗传算法(概念) 可以把遗传算法类比…

Docker 快速入门

1、Docker 简介 Docker是一个开源的容器引擎,它可以帮助我们更快地交付应用。Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用Docker,可更快地打包、测试以及部署应用程序,并可减少从编写到部署…

python的智能换行函数(一堆烦乱的判断)

def zntxt(txt):line30 #设置单行长度js,e,s,rs,aa,nm,x,y{},[],txt,[],,[],0,0n 1 if ord(s[0]) > 127 else 0for i in range(len(s)):m1 if ord(s[i]) > 127 else 0if m!n:rs.append(aa)aas[i]elif ilen(s)-1:aas[i]rs.append(aa)else:aas[i]nmfor i in rs: for j in…

搜索引擎找外贸客户

说起搜索引擎,我们每个人都不陌生,也许第一时间就能想到平日经常使用的“百度一下”和凭借强大算法及丰富功能占据近85%市场份额的谷歌搜索(Statista 2023年1月数据)这些耳熟能详的搜索引擎。对于外贸人而言搜索引擎也是非常实用的…

一文谈谈文心一言对比ChatGPT4.0的差距

对于想体验文心一言的朋友,可以进行申请尝试,快速入口 如果想体验ChatGPT的朋友,可以自行fq注册;但是由于现在限制注册并且不稳定,对于不会用梯子不想注册的朋友可以使用这个进行访问,快速入口 关于ChatG…

PMP证书备考攻略+PMP知识点汇总

一,考PMP好处多 1.能力提升 大型项目,领导专业团队 2.升职加薪 晋升管理岗,优先升职加薪 3.招投标加分 具有PMP证书,企业招标有加分 4.转型利器 助力转型,拓宽职业发展 5.公司支持 企业鼓励学习,报销费用 6…

C++模板使用

感谢你的阅读!!! 目录 感谢你的阅读!!! 举个例子: template 有什么意义为什么要用模板 与typedef的区别 使用方法 模板:隐式实例化与显示实例化 和非模板函数以及多个模板类…

气传导耳机和骨传导耳机的区别是啥?气传导耳机有哪些优缺点?

本文主要讲解一下气传导耳机和骨传导耳机的区别、气传导耳机的优缺点,并推荐一些目前主流的气传导耳机款式,大家可以根据自身需求,选择自己感兴趣的部分观看。 气传导耳机和骨传导耳机不同点: 气传导耳机和骨传导耳机最大且最根…

什么是 MVVM?MVVM和 MVC 有什么区别?什么又是 MVP ?

目录标题 一、什么是MVVM?二、MVC是什么?三、MVVM和MVC的区别?四、什么是MVP? 一、什么是MVVM? MVVM是 Model-View-ViewModel的缩写,即模型-视图-视图模型。MVVM 是一种设计思想。 模型(Model…

windows安装sqli-labs靶场,两种方式

1、安装phpstudy 官网打不开了,下载地址在这儿https://download.csdn.net/download/weixin_59679023/87711536 双击安装 点自定义安装,选择安装目录,注意目录不要有空格和中文 安装完成启动红框内的两个服务 2、安装sqli靶场 这个包支持ph…

信息收集(三)端口和目录信息收集

信息收集(一)域名信息收集 信息收集(二)IP信息收集 端口是什么 "端口"是英文port的意译,可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机…

关于package.json中版本锁定的方法和问题解决

前置知识:先了解一下package.json和package-lock.json的关系和区别,请看这篇文章 然后我们来说一下改怎么锁定版本? 首先肯定是要把package.json中的 ^ 这个符号去掉,但是如果你只去掉package.json中的 ^那就太天真了&#xff0…

必应,百度,神马头条,搜狗专用站长seo推送工具大全

软件介绍: 百度开始打击滥用api问题,针对这个问题已经开发了拟人推送系列功能,放心使用。 五合一高效推送软件,目前支持百度,神马,必应,搜狗,头条,谷歌六大搜索引擎同步…

优秀简历的HR视角:怎样打造一份称心如意的简历?

简历的排版应该简洁工整,注重细节。需要注意对齐和标点符号的使用,因为在排版上的细节需要下很大功夫。除此之外,下面重点讲述几点简历内容需要注意的地方。 要点1:不相关的不要写。 尤其是与应聘岗位毫不相关的实习经历&#x…

服务提供者 Eureka + 服务消费者(Rest + Ribbon)实战

1、Ribbon背景介绍 Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单来说,就是在配置文件中列出Load B…