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

news2024/12/26 10:41:00

文章目录

      • 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.coloradmin.cn/o/1925835.html

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

相关文章

html5——列表、表格

目录 列表 无序列表 有序列表 自定义列表 表格 基本结构 示例 表格的跨列 表格的跨行 列表 无序列表 <ul>【声明无序列表】 <li>河间驴肉火烧</li>【声明列表项】 <li>唐山棋子烧饼</li> <li>邯郸豆沫</li> <l…

pyinstaller教程(二)-快速使用(打包python程序为exe)

1.介绍 PyInstaller 是一个强大的 Python 打包工具&#xff0c;可以将 Python 程序打包成独立的可执行文件。以下会基于如何在win系统上将python程序打包为exe可执行程序为例&#xff0c;介绍安装方式、快速使用、注意事项以及特别用法。 2.安装方式 通过 pip 安装 PyInstal…

随笔-不是来养老的吗

来了有一个多月了&#xff0c;日子过得飞快。都以为我来养老的&#xff0c;一开始我也这么认为&#xff0c;结果6月份的日均工时&#xff0c;排在了部门第一。一个月做的需求比之前的三个月都多。 来之前&#xff0c;老徐让我多承担点&#xff0c;想着能有多少活嘛&#xff0c…

QT TCP多线程网络通信

学习目标&#xff1a; TCP网络通信编程 学习前置环境 运行环境:qt creator 4.12 QT TCP网络通信编程-CSDN博客 Qt 线程 QThread类详解-CSDN博客 学习内容 使用多线程技术实现服务端计数器 核心代码 客户端 客户端&#xff1a;负责连接服务端&#xff0c;每次连接次数1。…

sklearn之神经网络学习算法

文章目录 什么是神经网络人工神经网络的结构输入层输出层隐含层神经元的链接 近几年深度学习还是比较火的&#xff0c;尤其是在大语言模型之后&#xff0c;在本质上深度学习网络就是层数比较多的神经网络。sklearn并不支持深度学习&#xff0c;但是支持多层感知机&#xff08;浅…

安全测试理论

安全测试理论 什么是安全测试&#xff1f; 安全测试&#xff1a;发现系统安全隐患的过程安全测试与传统测试区别 传统测试&#xff1a;发现bug为目的 安全测试&#xff1a;发现系统安全隐患什么是渗透测试 渗透测试&#xff1a;已成功入侵系统为目标的的攻击过程渗透测试与安全…

自动驾驶事故频发,安全痛点在哪里?

大数据产业创新服务媒体 ——聚焦数据 改变商业 近日&#xff0c;武汉城市留言板上出现了多条关于萝卜快跑的投诉&#xff0c;多名市民反映萝卜快跑出现无故停在马路中间、高架上占最左道低速行驶、转弯卡着不动等情况&#xff0c;导致早晚高峰时段出现拥堵。萝卜快跑是百度 A…

配置与管理Samba服务器(详细教程)

目录 一、基础理论 二、samba工作流程 三、项目实训 3.1目的 3.2准备工作 3.2.1服务器安装samba服务软件包 3.2.2客户端安装软件包 3.3配置Samba服务 3.3.1开启Samba服务&#xff0c;并设置开启自启动 3.3.2创建共享文件夹 3.3.3创建群组 3.3.4修改文件用户权限 3.3.5修改…

LabVIEW人工模拟肺控制系统开发

开发了一种创新的主被动一体式人工模拟肺模型&#xff0c;通过LabVIEW开发的上位机软件&#xff0c;实现了步进电机驱动系统的精确控制和多种呼吸模式的模拟。该系统不仅能够在主动呼吸模式下精确模拟快速呼吸、平静呼吸和深度呼吸&#xff0c;还能在被动模式下通过PID控制实现…

训练CDN基础代码

文章目录 时间整体流程训练细节小结 时间 从开始在平台上搭建到现在可以在平台上训练已经4天了 有GPU平台一般是autoDL平台&#xff0c;白嫖200元平台是&#xff1a;https://cloud.lanyun.net/ 整体流程 1.注册平台&#xff0c;以蓝耘为例子 卡从好变坏依次是&#xff1a;…

C语言:指针详解(5)

目录 一、sizeof()函数和strlen()函数的对比 1.sizeof()函数 2.strlen()函数 3.sizeof()函数和strlen()函数的对比 二、数组和指针笔试试题解析 1.一维数组 2.字符数组 &#xff08;1&#xff09;代码1 &#xff08;2&#xff09;代码2 &#xff08;3&#xff09;代码…

【数组、特殊矩阵的压缩存储】

目录 一、数组1.1、一维数组1.1.1 、一维数组的定义方式1.1.2、一维数组的数组名 1.2、二维数组1.2.1、二维数组的定义方式1.2.2、二维数组的数组名 二、对称矩阵的压缩存储三、三角矩阵的压缩存储四、三对角矩阵的压缩存储五、稀疏矩阵的压缩存储 一、数组 概述&#xff1a;数…

香橙派AIpro:体验强劲算力,运行ROS系统

文章目录 前言一、香橙派AIpro开箱及功能介绍1.1香橙派AIpro开箱1.2香橙派AIpro功能介绍 二、香橙派AIpro资料下载及环境搭建2.1资料下载2.2环境搭建2.3使用串口启动进入开发板2.4使用HDMI线接入屏幕启动 三、部署ROS系统四、香橙派AIpro的使用和体验感受 前言 本篇文章将带体…

sip协议栈简介

SIP协议栈简介 SIP协议栈流程 数据链路层&#xff1a;当SIP消息从网络中传输到达TCP/IP协议栈时&#xff0c;首先被接收到的是数据链路层的数据帧。数据链路层会对数据帧进行解封装&#xff0c;得到网络层的IP数据报。 网络层&#xff1a;网络层会对IP数据报进行解析&#xf…

js实现 JSON数据格式化的两种方法

本次方法不使用JS库直接采用原生JS 完整HTML代码如下&#xff0c;您可以复制代码然后&#xff0c;新建一个.html的网页进行保存即可体验 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><b…

Xcode 16 beta3 真机调试找不到 Apple Watch 的尝试解决

很多小伙伴们想用 Xcode 在 Apple Watch 真机上调试运行 App 时却发现&#xff1a;在 Xcode 设备管理器中压根找不到对应的 Apple Watch 设备。 大家是否已将 Apple Watch 和 Mac 都重启一万多遍了&#xff0c;还是束手无策。 Apple Watch not showing in XCodeApple Watch wo…

android13 文件管理器无法安装apk 奔溃问题

总纲 android13 rom 开发总纲说明 目录 1.前言 2.我们简单写个apk测试下 3.排查客户apk 4.frameworks源码排查 5.编译验证 6.彩蛋 1.前言 客户提供的文件管理apk不能安装apk文件,一点击就奔溃。 2.我们简单写个apk测试下 private void installApk(File apkFile) {i…

从0开始学习informer

目录 informer特点informer原理attention计算KL散度 backbone网络部分encoder输入输出部分embadding这里就不讲了 和transfomer一样EncoderStack decoder部分接下来就是最关键的结构 关于如何将输入经过注意力得到结果 结束&#xff0c;代码会放到下一篇讲 这里是原理 informer…

[Vulnhub] Sedna BuilderEngine-CMS+Kernel权限提升

信息收集 IP AddressOpening Ports192.168.8.104TCP:22, 53, 80, 110, 111, 139, 143, 445, 993, 995, 8080, 55679 $ nmap -p- 192.168.8.104 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2 …

PTX入门教程与实战

PTX入门教程 官方文档的目录结构 1 PTX指令 官方文档链接 1.1 指令形式 指令的操作数个数从0-4不等&#xff0c;其中d代表的是目的操作数&#xff0c;a,b,c是源操作数 p opcode;p opcode a;p opcode d, a;p opcode d, a, b;p opcode d, a, b, c;2 编程模型 2.…