【自动驾驶汽车通讯协议】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以其低成本和可靠性,在许多领域仍然不可替代。

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

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

相关文章

MFC:文本可视化输出

文章目录 1. DrawText:2. TextOut:3. SetTextColor:4. SetBkColor:5. GetTextMetrics: 在MFC(Microsoft Foundation Classes)中,CDC(设备上下文类)提供了多种…

Barabási–Albert模型详解与Python代码示例

Barabsi–Albert模型详解与Python代码示例 模型介绍 Barabsi–Albert(BA)模型是一种用于模拟和分析复杂网络结构的数学模型,特别适用于描述那些具有“无标度”特性的网络。无标度网络是指网络中节点的连接度(度)分布…

xlive.dll丢失怎么办,xlive.dll文件的主要用途

xlive.dll丢失怎么办?目前是有很多方法可以解决这个xlive.dll丢失的问题的,只要你仔细的去了解xlive.dll这个文件,至于使用哪种方法,主要还是看你的实际情况,因为情况不同选择使用的方法也是不一样的,下面一…

底软驱动 | Linux虚拟内存

为了更有效的管理内存并且少出错,现代操作系统提供了一种对主存的抽象概念,叫做虚拟内存(VM)。虚拟内存提供了三个重要的能力: 1.它将主存(物理内存)看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保留活动区域,并且根据…

去除重复数字

1083. 【基础】去除重复数字 [ 刷题2路4线 ] 时间限制: 1000MS 空间限制: 16MB 结果评判: 文本对比 正确/提交: 29 (21) / 45 官方标签: 数组 普及- 题目描述 给你N个数(n<=100),每个数都在&am…

openEuler 安装 podman 和 podman compose

在 openEuler 22.03 LTS SP4 中,你可以使用 dnf 包管理器来安装 Podman 和 Podman Compose。openEuler 默认使用 dnf 作为包管理器,所以这是安装软件的首选方式。 关于 openEuler 22.03 LTS SP4 下载地址: https://www.openeuler.org/zh/dow…

【256 Days】我的创作纪念日

目录 🌼01 机缘 🌼02 收获 🌼03 日常 🌼04 成就 🌼05 憧憬 最近收到官方来信, 突然发现,不知不觉间,距离发布的第一篇博客已过256天,这期间我经历了春秋招、毕业答辩…

JS【详解】ES6 模块规范 vs CommonJS 模块规范

每个 js 文件都是一个模块,默认采用的 CommonJS 模块规范 新兴的 ES6 模块 pk 传统的 CommonJS 模块 特性CommonJSES6 模块化导出exports 对象export 关键字导入require()函数import 关键字加载模式同步异步执行模式单例单例依赖关系静态动态树形摇晃不支持支持 加…

板级调试小助手(3)基于PYNQ的OLED视频显示

一、前言 在之前的文章中介绍了《板级调试小助手》的系统结构和DDS自定义外设的搭建。这篇文章主要介绍一下如何在PYNQ中驱动平时长剑的OLED12864显示屏,并显示BadApple(毕竟有屏幕的地方就要有BadApple)。效果如下: BadApple 本项…

Access denied for user ‘root‘@‘localhost‘ (using password: YES)解决办法

在Spring配置数据源时,当使用Spring容器加载druid.properties数据库连接池配置文件时,容易碰到create connection SQLException, url: jdbc:mysql://127.0.0.1:3306/mydbs, errorCode 1045, state 28000 java.sql.SQLException: Access denied for user …

破解YouTube限制:保姆级教程,轻松查看博主邮箱

近期YouTube取消了博主的邮箱展示,这造成了不小的轰动,给想要联系博主的粉丝和想要寻求网红合作的品牌都带来了极大的不便。但这难不倒万能的网友!最新发现,通过一串神秘代码可以在YouTube上查看到博主的邮箱,这里Nox聚…

Java进阶----多态

多态 什么是多态 在继承父类或者实现接口的基础上,允许同一类事物出现不同的状态 多态的前提:继承或实现的关系、方法的重写、父类(接口)引用指向子类(实现类)对象 表现形式 父类 变量 子类对象(); 接…

解决方案架构师系列 - AWS - AWS Amplify 服务功能介绍

探索AWS Amplify:构建高效、安全的云原生应用 AWS Amplify 是一个开源框架,由亚马逊网络服务(AWS)提供,旨在简化Web和移动应用程序的开发。它是一套完整的开发工具集合,帮助开发者快速地实现功能如身份验证…

CycleGAN深度学习项目

远程仓库 leftthomas/CycleGAN: A PyTorch implementation of CycleGAN based on ICCV 2017 paper "Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks" (github.com) 运行准备 Anaconda 安装需要的库 指令 pip install panda…

LPRNet 车牌识别部署 rk3588(pt-onnx-rknn)包含各个步骤完整代码

虽然车牌识别技术很成熟了,但完全没有接触过。一直想搞一下、整一下、试一下、折腾一下,工作之余找了一个简单的例子入个门。本博客简单记录一下 LPRNet 车牌识别部署 rk3588流程,训练参考 LPRNet 官方代码。 1、导出onnx   导出onnx很容易…

昇思25天打卡营-mindspore-ML- Day24-基于 MindSpore 实现 BERT 对话情绪识别

学习笔记:基于MindSpore实现BERT对话情绪识别 算法原理 BERT(Bidirectional Encoder Representations from Transformers)是由Google于2018年开发的一种预训练语言表示模型。BERT的核心原理是通过在大量文本上预训练深度双向表示&#xff0…

Win7电脑修改网卡配置连接千兆网络的方法

Win7电脑修改网卡配置连接千兆网络的方法 Realtek PCIe GBE Family Controller是千兆网卡,GBE的意思就是1Gbps网卡,也就是千兆网卡,翻译成中文就是瑞昱PCI-E总线千兆网络系列控制器。 目前有很多的电脑都是使用realtek网卡的,当时奇怪的是网卡连接到h3或者d-link千兆交换机…

探索老年综合评估实训室的功能与价值

一、引言 随着人口老龄化的加剧,老年健康问题日益受到关注。老年综合评估实训室作为专门为老年人健康服务而设立的场所,具有独特的功能和重要的价值。 二、老年综合评估实训室的功能 (一)健康评估功能 1、身体功能评估 通过专业设…

【postgresql】权限(Privileges)

权限(privileges)是决定用户或角色可以对数据库对象(如表、视图、序列和函数)执行哪些操作的许可。权限对于维护安全性和控制对数据的访问至关重要。 权限分类 在 PostgreSQL 中,权限分为以下几种: SELEC…

数据库基本查询(表的增删查改)

一、增加 1、添加信息 insert 语法 insert into table_name (列名) values (列数据1,列数据2,列数据3...) 若插入时主键或唯一键冲突就无法插入。 但如果我们就是要修改一列信息也可以用insert insert into table_name (列名) values (列数据1&am…