【自动驾驶汽车通讯协议】UART通信详解:理解串行数据传输的基石

文章目录

      • 0. 前言
      • 1. 同步通讯与异步通讯
        • 1.1 同步通信
        • 1.2 异步通信
      • 2. UART的数据格式
      • 3. 工作原理
        • 3.1 波特率和比特率
        • 3.2 UART的关键特性
      • 4. UART在自动驾驶汽车中的典型应用
        • 4.1 UART特性
        • 4.2应用示例
      • 5. 结语

0. 前言

按照国际惯例,首先声明:本文只是我自己学习的理解,虽然参考了他人的宝贵见解及成果,但是内容可能存在不准确的地方。如果发现文中错误,希望批评指正,共同进步。

在嵌入式系统和计算机硬件设计中,通信接口是连接不同设备、实现信息交换的关键组成部分。其中,UART(Universal Asynchronous Receiver/Transmitter)是一种常用的短距离低速数据传输串行通信协议,具备全双工通信能力,使用TX和RX两线进行数据的发送和接收;被广泛应用于微控制器、计算机与外设之间的数据传输。

本文将深入探讨UART的工作原理、数据格式、关键特性以及应用场景。

在这里插入图片描述在这里插入图片描述

1. 同步通讯与异步通讯

同步通信与异步通信是数据通信中两种基本的通信模式,它们在数据传输方式、系统设计复杂度、数据传输效率等方面存在显著差异。下面分别对这两种通信方式进行详细的说明:

1.1 同步通信

同步通信是一种数据传输方式,其中发送方和接收方的时钟信号是同步的,也就是说,双方的时钟频率必须相同或成整数倍关系,这样可以确保数据在正确的时间点被接收和解读。

特征:

  • 时钟同步:通信双方需要保持时间上的同步,通常通过一个公共的时钟信号来实现。
  • 数据传输效率:由于不需要额外的起始位和停止位,同步通信的数据传输效率通常比异步通信高。
  • 数据格式:数据通常以连续的比特流形式传输,不需要每个数据块前后的特殊标记。
  • 适用场景:适用于大数据量、高速传输的场合,如高速网络通信、存储设备的读写操作等。

优点:

  • 高数据传输速率。
  • 减少了数据传输的开销,提高了信道利用率。

缺点:

  • 实现较为复杂,需要精确的时钟同步。
  • 受到时钟信号质量的影响较大。
1.2 异步通信

异步通信是一种不需要通信双方时钟完全同步的数据传输方式。在异步通信中,数据通常以字符或字节为单位进行传输,每个字符或字节前后都有特殊的起始位和停止位来标识数据的开始和结束。

特征:

  • 独立时钟:发送方和接收方可以使用各自的时钟信号,不需要严格的时间同步。
  • 数据格式:数据传输是以字符帧的形式,每个字符帧包含起始位、数据位、可能的奇偶校验位和停止位。
  • 适用场景:适用于低速或中速的数据传输,如串行通信接口(如RS-232)、简单的点对点通信等。

优点:

  • 设计简单,易于实现。
  • 对时钟信号的精度要求不高。

缺点:

  • 相对于同步通信,数据传输效率较低。
  • 每个字符的额外开销导致信道利用率下降。

2. UART的数据格式

UART通信的数据包结构如下:

  • 起始位:逻辑低电平,持续时间等于一位时间,用于标识数据帧的开始。
  • 数据位:5到8位可配置,表示实际要传输的数据。最低有效位(LSB)或最高有效位(MSB)先发送。
  • 奇偶校验位:可选,用于错误检测。可以是无校验、奇校验或偶校验。
  • 停止位:1到2位可配置,逻辑高电平,用于标识数据帧的结束。
  • 空闲位:逻辑高电平,位于停止位之后,直到下一个起始位出现。
    在这里插入图片描述

3. 工作原理

在UART通信中,数据以串行方式发送,即一次一位。发送端将并行数据转换为串行数据,并按照上述数据格式进行编码,然后通过单根信号线发送出去。接收端则将接收到的串行数据转换回并行数据。UART内部通常包含移位寄存器、波特率发生器和控制逻辑等组件,以保证数据的准确收发。
在这里插入图片描述

3.1 波特率和比特率

波特率(Baud rate)定义了每秒传输的信号变化数,而比特率(Bit rate)则是每秒传输的比特数。在UART中,这两个值通常是相同的,因为每次信号变化只代表一个比特。例如,9600波特意味着每秒传输9600比特。

3.2 UART的关键特性
  • 异步性:不需要外部时钟信号,通过数据格式内的起始位和停止位来同步。
    在这里插入图片描述

  • 全双工通信:支持同时发送和接收数据。
    在这里插入图片描述

  • 简单的硬件接口:通常只需要三根线(TX、RX、GND)即可完成基本的通信功能。
    在这里插入图片描述

  • 可配置性:数据位、停止位和波特率等参数可以根据需要进行调整。

4. UART在自动驾驶汽车中的典型应用

NVIDIA Orin系列模块内建了多个UART接口,这些接口提供了灵活的串行通信能力,用于与其他设备或系统的数据交换。以下是NVIDIA Orin产品中UART通讯的具体应用概述:
在这里插入图片描述

4.1 UART特性
  • Jetson AGX Orin SOM(系统级模块)配备了4个通用UART端口,这允许用户同时连接多个UART设备或传感器。
  • UART控制器支持数据的同步,通过添加起始和停止位形成数据字符,保证了串行数据流的完整性。
  • 支持16450和16550兼容模式,默认模式为16450,这提供了与不同设备的兼容性。
  • UART的设备时钟最高可达200MHz,支持最大12.5Mbps的波特率。
  • UART支持5至8位的字长,可选的奇偶校验位,以及1或2个停止位,增强了数据传输的灵活性和可靠性。
4.2应用示例
  • 传感器通信:UART接口可用于连接各种传感器,如温度、湿度、压力传感器,以及GPS模块,实现实时数据采集和传输。
  • 调试与控制:UART常用于嵌入式系统的调试,通过串口输出日志信息或接收命令进行设备控制。
  • 设备配置:UART可用于配置和更新其他设备的参数,如无线模块的设置。
  • 人机交互:通过UART连接终端或串口转USB适配器,实现用户界面的输入输出。
  • 扩展通信:UART还可以用于与其他嵌入式系统或微控制器之间的通信,作为系统间数据交换的桥梁。

5. 结语

UART作为一种成熟的通信协议,因其简单性和灵活性,在多种应用场景中发挥着重要作用。了解其工作原理和技术细节对于从事硬件设计和嵌入式开发的专业人士来说至关重要。随着技术的发展,虽然高速通信协议(如USB、Ethernet)日益普及,但UART以其低成本和可靠性,在许多领域仍然不可替代。

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

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

相关文章

STM32MP135裸机编程:BOOT跳转到APP前关闭所有中断、清除所有中断挂起标志操作方法

0 前言 一般来说,MCU/SOC的BOOT在跳转到APP前都需要进行环境清理的操作,其中必须进行的一项操作便是关闭所有中断、清除所有中断挂起标志。本文介绍基于STM32MP135裸机编程下关闭所有中断、清除所有中断挂起标志的操作方法。 1 操作方法 STM32MP135裸…

关于Kafka Topic分区和Replication分配的策略

文章目录 1. Topic多分区2. 理想的策略3. 实际的策略4. 如何自定义策略 1. Topic多分区 如图,是一个多分区Topic在Kafka集群中可能得分配情况。 P0-RL代表分区0,Leader副本。 这个Topic是3分区2副本的配置。分区尽量均匀分在不同的Broker上&#xff0c…

怎么减少pdf的MB,怎么减少pdf的大小

在数字化时代,pdf文件因其格式稳定、跨平台兼容性强等特点而广受欢迎。然而,随着内容的丰富,pdf文件的大小也日益增大,给文件传输和存储带来了不少困扰。本文将为你介绍多种减小pdf文件大小的方法,帮助你轻松应对这一问…

【ChatGPT】深入解析Prompt提示词及如何高效使用ChatGPT

一、Prompt提示词是什么? 1.1 Prompt的定义 Prompt是人工智能领域中的一个关键概念,尤其在自然语言处理(NLP)和生成型AI模型中。简而言之,prompt是一段文本或指令,用于引导或启动AI模型的特定响应或操作。…

成为CMake砖家(2): macOS创建CMake本地文档的app

大家好,我是白鱼。 使用 CMake 的小伙伴, 有的是在 Windows 上, 还有的是在 macOS 上。之前咱们讲了 windows 上查看 cmake 本地 html 文档的方式, 这篇讲讲 macOS 上查看 cmake 本地 html 文档的方法。 1. 问题描述 当使用 CMa…

C1W1.LAB.Preprocessing+Word frequencies+Logistic_regression_model

理论课:C1W1.Sentiment Analysis with Logistic Regression 文章目录 预处理导入包Twitter dataset简介查看原始文本处理原始文本处理超链接、Twitter 标记和样式分词去除标点和停用词词干处理 process_tweet() 词频构建与可视化导入包加载数据集字典字典实例添加或…

什么是im即时通讯?WorkPlus im即时通讯私有化部署安全可控

IM即时通讯是Instant Messaging的缩写,指的是一种实时的、即时的电子信息交流方式,也被称为即时通讯。它通过互联网和移动通信网络,使用户能够及时交换文本消息、语音通话、视频通话、文件共享等信息。而WorkPlus im即时通讯私有化部署则提供…

PostgreSQL日志文件配置,记录所有操作记录

为了更详细的记录PostgreSQL 的运行日志,我们一般需要修改PostgreSQL 默认的配置文件,这里整理了一些常用的配置 修改配置文件 打开 PostgreSQL 配置文件 postgresql.conf。该文件通常位于 PostgreSQL 安装目录下的 data 文件夹中。 找到并修改以下配…

Zabbix6.0使用自带模板(Redis by Zabbix agent 2)监控Redis数据库

注意:Zabbix6.0使用Redis by Zabbix agent 2 模板可直接监控Redis数据。 1、添加Redis账号密码信息(如果Redis没有设置密码可省略此步骤) vim zabbix_agent2.confPlugins.Redis.Sessions.redis.Uritcp://redis.huayunworld.com:6379 Plugins.Redis.Sessions.redis…

机器学习和人工智能对金融行业的影响——案例分析

作者主页: 知孤云出岫 目录 引言机器学习和人工智能在金融行业的应用1. 风险管理信用评分风险预测 2. 交易高频交易量化交易 3. 客户服务聊天机器人个性化推荐 4. 反欺诈检测 机器学习和人工智能带来的变革1. 提高效率2. 降低成本3. 提升客户体验 未来发展趋势1. 更智能的风控系…

2-34 小波神经网络采用传统 BP 算法

小波神经网络采用传统 BP 算法,存在收敛速度慢和易陷入局部极小值两个突出弱点。建立了基于遗传算法的小波神经网络股票预测模型 GA-WNN。该模型结合了遗传算法的全局优化搜索能力以及小波神经网络良好的时频局部特性。运用 MATLAB 对拟合和预测过程进行仿真。结果表…

Flutter应用开发:掌握StatefulWidget的实用技巧

前言 随着移动应用的日益复杂,状态管理成为了 Flutter 应用开发中的一项重要挑战。 状态,即应用中的可变数据,它驱动着用户界面的渲染和交互。 在 Flutter 这样的声明式 UI 框架中,如何高效、可维护地管理状态,对于…

【2024】VsCode + Latex + Linux(Ubuntu) + wsl环境下配置教程 | 包含 中文配置,和 格式化处理

前言 本篇教程是针对WSL下的Ubuntu操作系统的配置教程,它和一般的Linux环境下的配置有所不同,并且和Windows环境下的也有所不同。 本篇博客编写参考了 官方文档(Tex) 和 插件官方(Texlive Workshop) 文档…

一篇文章教你如何快速上手Spring MVC框架【万字详解|包含常用注解分析讲解】

目录 一.什么是Spring Web MVC 二.Spring MVC的使用 ▐ 建立连接 RestController RequestMapping ▐ 传递参数 1.简单类型传参 2.类对象传参(RequestParam) 3.数组&集合传参 4.JSON传参(RequestBody) 5.URL中的参数…

7.13实训日志

上午 学习网络安全的过程中,我们深入了解了网络的不同层面和技术,从表层网络到深网再到暗网,以及涉及的产业分类和技术工具。这些知识不仅帮助我们理解网络的复杂性,还揭示了如何应对和防范各种网络威胁。 首先,我们…

查找PPT中某种字体的全部对应文字

本文章的目的是找到某种字体的文字,而不是替换某种字体的文字,也不是将某种字体全部替换为另外一种文字。 第一步:在PPT中按下ALTF11 出现以下窗口 第二步:点击插入->模块 第三步:将以下代码输入到窗体中 Sub F…

Java HashMap红黑树学习

Java HashMap红黑树学习 一、红黑树介绍二、红黑树的基本操作2.1 旋转2.1.1 左旋2.1.2 右旋 2.2 添加2.3 删除 一、红黑树介绍 (1)红黑树(Red-Black Tree,简称R-B Tree),是一种特殊的平衡二叉查找树。 (2)节…

关于正点原子imx6ull串口实验,打开串口软件后无反应

我在某多多买了俩读卡器才1.3,不得不说真便宜。买的是2.0给我发的是3.0.具体是真假我也不太清楚。 反正连上之后发现烧写程序后一直串口没反应,但是串口显示的是绿标,也就代表硬件没问题。 然后我跟着按了几下依旧没啥反应,突然…

自学鸿蒙HarmonyOS的ArkTS语言<九>自定义弹窗组件CustomDialog及二次封装自定义弹窗

一、自定义弹窗 CustomDialog struct CustomDialogBuilder {controller: CustomDialogController new CustomDialogController({ // 注意写法builder: CustomDialogBuilder({})})// controller: CustomDialogController // 这种预览会报错cancel?: () > voidconfirm?: (…

用API实现商品sku抓取字段展示-淘宝sku区间价展示逻辑和规则分析

有卖家问我:我的链接里面有5个sku,都是不同的价格,为什么消费者看到的不是最低价呢? 这是因为淘宝平台商品价格的展示规则发生了变化,存在SKU区间价的产品,现在在搜索结果页面的曝光已经不是默认显示最低s…