嵌入式面试-回答UART

说明:

        此文章是在阅读了一些列面试相关资料之后对于一些常见问题的整理,主要针对的是嵌入式软件面试中涉及到的问答,努力精准的抓住重点进行描述。若有不足非常欢迎指出,感谢!在总结过程中有些答案没标记参考来源,若有参考到您的回答请联系我,我会将其补上,最后希望各位都能够找到理想的工作!

通用异步收发传输器(UART)特点(为什么使用UART):

  • 只需要两根线(发送线TX和接收线RX)​ 
  • 硬件简单,成本低,不需要额外的硬件支持
  • 用户可以根据需要自定义波特率(后面会涉及波特率原理和计算)和数据格式
  • UART通信不使用时钟信号来同步,(因此主设备和从设备必须在开始通信前就协商好波特率(数据传输速率),若发送设备和接收设备没有确定好互相之间的波特率,就好似跑步频率不一致的运动员,难以传递交接棒)。

UART的TX线和RX线:

为什么使用两条线来处理:

        1.单向信号传输:UART通信是基于单向信号传输的。

        2.简化错误处理和信号完整性:分开的发送和接收线路有助于简化硬件设计和信号处理。

        3.减少干扰:使用单独的线路发送和接收数据有助于减少电磁干扰和信号串扰,提高通信的可靠性。

TX和RX的协同工作方式(即UART工作原理)

  • 初始化:通信开始前,两个设备的UART接口需要被设置为相同的波特率、数据位数、停止位和校验位,以确保双方能正确解读传输的数据。

  • 发送数据:当发送设备准备发送数据时,其UART控制器将数据放置在内部的发送缓冲区中,然后按预设的格式逐位发送出去。这包括在TX线上生成起始位、数据位、校验位(如果使用)和停止位。

  • 接收数据:接收设备的UART控制器监控其RX线,检测到起始位后开始按设定的波特率接收数据位。接收的数据存入内部的接收缓冲区,等待进一步处理

  • 错误检测和校正:如果开启了校验位,接收设备还会进行错误检测,并在检测到错误时进行相应的处理,可能包括请求重发等。

UART 数据帧结构

UART的数据传输是通过数据帧来完成的,一个典型的UART数据帧包括:

  • 起始位:数据帧的开始,通常是一个逻辑“0”。
  • 数据位:通常是5到9位,承载实际的数据内容。
  • 校验位(可选):用于错误检测。
  • 停止位:标志数据帧的结束,可以是一个或两个逻辑“1”。

波特率

波特率的原理:

        波特率是衡量数据传输速率的一个重要参数,它表示每秒钟可以传输的符号数。在串行通信中,这些符号通常是数据位,包括起始位、数据位、可选的校验位以及停止位。

波特率的计算:

        波特率定义了每秒中传输的符号数。在UART通信中,波特率的计算公式为:

        其中时钟频率由微控制器提供,分频因数是UART设置中的一个参数。选择合适的波特率需要确保通信双方都设置相同的值以避免数据错误。

  • 以115200,8n1为例:波特率115200,数据位:8,n并表示校验位位(n表示没有),1表示停止位

        那么每传输1bit所需要的时间为:t = 1/115200

        传输一个byte需要10位(start,data(8bit),stop)t = 10 /115200

        1秒钟传输:1/t = 11520个字节

电平标准:

为什么有时候我们还会对串口转换成RS232、RS485、USB呢?

  • TTL电平:逻辑“1”通常为高电平(5V或3.3V),逻辑“0”为低电平(0V)。广泛应用于微控制器和数字电路中,不适合长距离传输。
  • RS232:相对于TTL电平,RS232使用更高的电压范围(通常+/-3V至+/-25V)。逻辑“1”(-3V到-25V)和逻辑“0”(+3V到+25V)的定义与TTL相反。它适用于长距离通信。
  • USB(通用串行总线):用于计算机和外围设备之间的通信,支持更高的数据传输速率和电源传输。
  • RS485:使用差分信号传输,可以实现远距离和高可靠性通信,常用于工业环境。

        这些标准(TTL, RS232, USB, RS485)在应用和物理层面有所不同,但都是实现设备间数据传输的有效方式,选择合适的标准取决于具体应用需求,如距离、速率、成本和电气环境的要求。

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

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

相关文章

C++算法题 - 区间

目录 228. 汇总区间56. 合并区间57. 插入区间452. 用最少数量的箭引爆气球 228. 汇总区间 LeetCode_link 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所…

Maven通过flatten-maven-plugin插件实现多模块版本统一管理

正文 起因是公司开始推代码版本管理的相关制度,而开发过程中经常使用多模块构建项目,每次做版本管理时都需要对每个模块及子模块下的pom文件中parent.version和模块下依赖中的version进行修改,改的地方非常多,且非常容易漏。为此…

衣康酸(ITA)应用领域广泛 工业发酵法为其主流制备方法

衣康酸(ITA)应用领域广泛 工业发酵法为其主流制备方法 衣康酸(ITA)又称亚甲基丁二酸、甲叉琥珀酸,化学式为C5H6O4,是一种不饱和二元有机酸。衣康酸外观呈白色结晶粉末,含强烈刺激性气味&#xf…

【机器学习】小波变换在特征提取中的实践与应用

小波变换在特征提取中的实践与应用 一、小波变换的基本原理与数学表达二、基于小波变换的特征提取方法与实例三、小波变换在特征提取中的优势与展望 在信号处理与数据分析领域,小波变换作为一种强大的数学工具,其多尺度分析特性使得它在特征提取中扮演着…

浅析STM32H750启动文件

目录 概述 1 启动文件介绍 1.1 启动文件功能 1.2 汇编语言指令 2 启动代码细节 2.1 分配栈空间 2.2 分配堆空间 2.3 中断向量表 2.4 复位程序 2.5 中断服务程序 2.5.1 CPU内部中断程序 2.5.2 CPU内部扩展中断程序 2.6 用户堆栈初始化 3 总结 概述 本文以startup_stm3…

基于springboot实现城镇保障性住房管理系统项目【项目源码+论文说明】

基于springboot实现城镇保障性住房管理系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了城镇保障性住房管理系统的开发全过程。通过分析城镇保障性住房管理系统管理的不足,创建了一个计算机…

Intewell-Win_V2.1.2_release版本正式发布-鸿道Intewell操作系统

Intewell-Win_V2.1.2_release版本 版本号:V2.1.2 版本发布类型:release正式版本 版本特点 修复此前版本中的授权问题 特殊说明 版本或修改说明 修改: 1.已授权设备用户ID直接从授权文件获取; 2.授权设备硬件指纹采集系统硬盘…

Odoo|手把手教你Odoo集成drools,完成物料规则配置与报价单自动审核!

一、背景介绍 在实际业务中,售前根据客户需求选择相应的产品和对应的物料来生成报价单。然而,在填写报价单的过程中,可能会出现物料漏选或数量不准确的情况,这会对后续备货和生产效率造成重大影响。此外,由于产品和物料…

ctfhub-ssrf(2)

1.URL Bypass 题目提示:请求的URL中必须包含http://notfound.ctfhub.com,来尝试利用URL的一些特殊地方绕过这个限制吧 打开环境发现URL中必须包含http://notfound.ctfhub.com,先按照之前的经验查看127.0.0.1/flag.php,发现没什么反应,按照题…

Java入门(JDK安装)

安装 JDK 下载 Java Downloads | Oracle 安装 下一步直接安装安装过程中,需要确定自己的安装位置 参考:D:\Java\jdk1.8.0_281_x64 演示位置 校验 终端输入 java -version 配置 1)删除默认 javapath 默认情况下,可以在cm…

04 JavaScript学习:输出

JavaScript 没有任何打印或者输出的函数。 JavaScript 显示数据 JavaScript 可以通过不同的方式来输出数据: 使用 window.alert() 弹出警告框。使用 document.write() 方法将内容写到 HTML 文档中。使用 innerHTML 写入到 HTML 元素。使用 console.log() 写入到浏…

【GoWeb框架初探————Gin篇】

1. Gin 1.1 下载相应依赖 创建go项目,在项目下建立go.mod文件(若有则跳过) 命令行运行 go get github.com/gin-gonic/gin1.2 启动一个简单Web服务 package mainimport ("github.com/gin-gonic/gin""github.com/thinkerou/…

新手入门:大语言模型训练指南

在这个信息爆炸的时代,人工智能技术正以前所未有的速度渗透到我们生活的方方面面。从智能手机上的语音助手到自动驾驶汽车,AI的应用无处不在。而在这些令人惊叹的技术背后,大语言模型(LLM)扮演着至关重要的角色。它们不…

国外问卷调查如何做?需要借助海外住宅IP吗?

在数字化时代,国外问卷调查不仅是了解市场需求的重要手段,还成为了一项能够赚取额外收入的方式。随着全球范围内消费者行为的多样化,各类企业和机构越来越需要了解不同地区的用户观点和偏好,以优化产品和服务。 一、国外问卷调查…

我与C++的爱恋:日期计算器

​ ​ 🔥个人主页:guoguoqiang. 🔥专栏:我与C的爱恋 朋友们大家好啊,在我们学习了默认成员函数后,我们通过上述内容,来实现一个简易的日期计算器。 ​ ​ 头文件的声明 #pragma once #incl…

签约棒球自由球员算法设计

签约棒球自由球员算法设计 1. 问题描述2. 算法设计2.1 动态规划2.2 状态转移方程2.3 初始化2.4 最终结果 3. 算法实现3.1 伪代码3.2 C代码示例 1. 问题描述 假设你是一支棒球大联盟球队的总经理。在赛季休季期间,你需要签入一些自由球员。球队老板给你的预算为 X美…

攻防世界fileclude题解

攻防世界fileclude题解 ​​ 题目要求file1和file2参数不能为空 且file2这个文件内容值为hello ctf,用php://input 然后POST体内输入hello ctf即可满足这个if条件 满足这个条件后就会包含file1变量所指定的那个文件。用php伪协议来跨目录包含一下flag.php文件就可以…

Redis系列1:深刻理解高性能Redis的本质

1 背景 分布式系统绕不开的核心之一的就是数据缓存,有了缓存的支撑,系统的整体吞吐量会有很大的提升。通过使用缓存,我们把频繁查询的数据由磁盘调度到缓存中,保证数据的高效率读写。 当然,除了在内存内运行还远远不够…

linux 云计算平台基本环境(知识准备篇)

为了更多的了解云计算平台,结合云计算和linux的知识写了一篇云计算的介绍和汇总。 文章目录 前言1. centos的软件管理1.1 yum软件包管理1.1.1 yum命令语法:1.1.2 安装软件包的步骤1.1.3 yum源 2. 主机名管理与域名解析3. centos的防火墙管理4. openstack…

java锁介绍

乐观锁 乐观地认为并发访问不会造成数据冲突,只在更新时检查是否有冲突。乐观锁和CAS的关系可以用“乐观锁是一种思想,CAS是一种具体的实现”来理解。 当使用CAS操作修改数据时,如果版本号不匹配或者其他线程已经修改了要操作的数据&#x…