[CANN训练营]UART通信笔记

文章目录

  • 前言
  • 一、前提知识
    • 1.串行通信
    • 2.并行通信
    • 3.单工、半双工、全双工通信
      • 3.1单工通信
      • 3.2半双工通信
      • 3.3全双工通信
    • 4.补充:通信速率
  • 二、UART通信
    • 1.UART通信
    • 2.UART工作原理
  • 总结


前言

在ROS学习中,我们在入门基础除了ROS的小乌龟外,在通信层次我们也需要了解一些串口通信,在Atlas 200I DK A2开发板中,下图是Atlas 200I DK A2开发板的系统框图。

在这里插入图片描述

而在图中,我们也能看到一些串口通信规则,比如UART通信,这些通信也都和树莓派通过GPIO进行连接,下图就是树莓派接口图详细介绍。

在这里插入图片描述

接下来让我们开始了解UART通信吧


一、前提知识

在学习UART通信之前,我们要先了解一下什么是串行通信和并行通信。

1.串行通信

串行通信(Serial communication)是指在计算机总线或其他数据通道上,每次传输一个位元数据,并连续进行以上单次过程的通信方式。

特点:传输线少,长距离传输成本,但是传输控制比并行要相对复杂。

2.并行通信

并行通信是指多比特数据同时通过并行线进行传送,这样数据传送速度大大提高,但并行传送的线路长度受到限制,因为长度增加,干扰就会增加,数据也就容易出错。

特点:传输速率快,接口电路简单。

3.单工、半双工、全双工通信

根据数据通信的方向,通信分为全双工、半双工、及单工通信。

3.1单工通信

只支持数据在一个方向上传输,信号单向传输。

3.2半双工通信

允许数据在两个方向上传输,但不能同时进行,在某一时刻只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信。比较典型的例子是对讲机。像乡间小道,同一时刻只能让一辆小车通过,另一方向来的车只能等待道路空出来时才能通过;

3.3全双工通信

允许数据同时在两个方向上传输,因此全双工通信时两个单工通信的结合,它要求发送设备和接收设备都有独立的接收和发送能力。比较典型的例子就是打电话。

4.补充:通信速率

    1. 比特率:Bitrate,每秒传输的二进制位数,单位为比特每秒(bit/s)。
    1. 波特率:baudrate,每秒传输的码元数。

USART 的发送器和接收器使用相同的波特率。有以下的计算公式
在这里插入图片描述
其中,fck为 USART 时钟, USARTDIV 是一个存放在波特率寄存器(USART_BRR)的一个无符号定点数。其中 DIV_Mantissa[11:0]位定义 USARTDIV 的整数部分,DIV_Fraction[3:0]位定义 USARTDIV 的小数部分。

二、UART通信

1.UART通信

UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输

起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。

数据位:紧接着起始位之后。数据位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码。从最低位开始传送,靠时钟定位。

奇偶校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性

停止位:为了表示数据包结束,发送UART将数据传输线从低电压驱动到高电压并保持1到2位时间。

空闲位:处于逻辑“1”状态,表示当前线路上没有数据传送。
在这里插入图片描述

2.UART工作原理

  • 发送数据过程:空闲状态,线路处于高电位;当收到发送数据指令后,拉低线路一个数据位的时间T,接着数据按低位到高位依次发送,数据发送完毕后,接着发送奇偶校验位和停止位(停止位为高电位),一帧数据发送结束。

  • 接收数据过程:空闲状态,线路处于高电位;当检测到线路的下降沿(线路电位由高电位变为低电位)时说明线路有数据传输,按照约定的波特率从低位到高位接收数据,数据接收完毕后,接着接收并比较奇偶校验位是否正确,如果正确则通知后续设备准备接收数据或存入缓存。

  • UART波特率发生器:波特率是衡量数据传输速率的指标,表示每秒传送数据的字符数,单位为Baud。UART的接收和发送是按照相同的波特率进行收发的。波特率发生器产生的时钟频率不是波特率时钟频率,而是波特率时钟频率的16倍,目的是为在接收时进行精确地采样,以提取出异步的串行数据。根据给定的晶振时钟和要求的波特率,可以算出波特率分频计数值。


总结

以上就是UART通信的相关知识,希望对你所以帮助。

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

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

相关文章

【云栖2023】林伟:大数据AI一体化的解读

本文根据2023云栖大会演讲实录整理而成,演讲信息如下: 演讲人:林伟 | 阿里云研究员,阿里云计算平台事业部首席架构师,阿里云人工智能平台PAI和大数据开发治理平台DataWorks负责人 演讲主题:大数据AI一体化…

UMI4 AntDesignProV5 如何修改favicon 及放置的位置(AntDesignProV5 V4对比)

项目场景&#xff1a; 修改系统的favicon.ico AntDesignProV4 修改方式 因为在V4版本中&#xff0c;有根目录文件&#xff0c;可在文件中直接指定&#xff1a; <!-- document.ejs --><head><link rel"icon" type"image/x-icon" href&quo…

一篇揭秘Linux高性能服务epoll 的本质

导语 epoll接口是为解决Linux内核处理大量文件描述符而提出的方案。该接口属于Linux下多路I/O复用接口中select/poll的增强。其经常应用于Linux下高并发服务型程序&#xff0c;特别是在大量并发连接中只有少部分连接处于活跃下的情况 (通常是这种情况)&#xff0c;在该情况下能…

卫星位置解算

武大GPS原理及应用 1.广播星历&#xff08;预报星历&#xff09; 预报星历所得的轨道精度有限&#xff0c;精度在2m左右。 2.精密星历 P 、卫星PRN、卫星在地心地固坐标系坐标&#xff08;与wgs84有点差别&#xff09;、卫星钟差。 通过内插或者拟合来获取任意时刻的卫星位…

python---数据库操作

python的错误和异常 异常&#xff1a; 运行期检测到的错误被称为异常。 try语句按照如下方式工作&#xff1a; 首先&#xff0c;执行try子句&#xff08;在关键字try和关键字except之间的语句&#xff09; 如果没有异常发生&#xff0c;忽略except子句&#xff0c;try子句执…

Federated Social Recommendation with Graph Neural Network

基于图神经网络的联合社交推荐 ACM-TIST CCF_B类 论文链接 代码地址 模型中梯度和embedding的聚合 在FeSog中&#xff0c;Server端维护一个整体的model&#xff0c;由于这里的model层网络和GraphAttentionLayer层网络中一共有10个要更新参数&#xff0c;所以当每次server端将…

对测试职业发展的思考

虽然在测试行业摸爬滚打了很年&#xff0c;随着年龄的增长&#xff0c;职位的升迁&#xff0c;似乎已经走到了尽头&#xff0c;因而还是时不时觉得自己的职业发展目标很模糊&#xff0c;这是最近对自己职业发展的一些思考&#xff0c;希望与大家进行分享和探讨&#xff1a; 1、…

3、Linux库的生成和使用(核心代码是程序员不可公开的小秘密)

目录 Linux库的概念 Linux 静态库 Linux 静态库作用 Linux 静态库的创建 1. 将.c文件生成.o文件 ​编辑 2. 将所有的.o文件归档为一个静态库.a文件 Linux 静态库的使用 Linux 动态库&#xff1a; Linux 动态库作用 Linux 动态库的创建 生成.so动态库文件 ​编辑 …

curl(八)时间和环境变量以及配置

一 时间 ① --connect-timeout 连接超时时间 ② -m | --max-time 数据最大传输时间 -m&#xff1a; 限制curl 完成时间(overall time limit)-m,--max-time <seconds> 整个交互完成的超时时间场景&#xff1a; 通过设置-m参数,可以避免请求时间过长而导致的超时错误…

jstack java堆栈跟踪工具

jstack java堆栈跟踪工具 1、jstack介绍 jstack&#xff08;stack trace for java&#xff09;是java虚拟机自带的一种堆栈跟踪工具。 jstack主要用于生成java虚拟机当前时刻的线程快照&#xff0c;线程快照是当前java虚拟机内每一条线程正在执行的方法 堆栈的集合&#xf…

MacOS Ventura 13 优化配置(ARM架构新手向导)

一、系统配置 1、About My MacBook Pro 2、在当前标签打开新窗口 桌面上创建目录的文件夹&#xff0c;每次新打开一个目录&#xff0c;就会创建一个窗口&#xff0c;这就造成窗口太多&#xff0c;不太好查看和管理&#xff0c;我们可以改成在新标签处打开新目录。需要在&…

数字滤波器设计---IIR 滤波器设计

数字滤波器设计---IIR 滤波器设计 IIR 与 FIR 滤波器的比较 与 FIR 滤波器相比&#xff0c;IIR 滤波器的主要优点是&#xff0c;要满足同一组设定&#xff0c;它的滤波器阶数通常远远低于 FIR 滤波器。虽然 IIR 滤波器具有非线性相位&#xff0c;但 MATLAB 软件中的数据处理通…

【数据分享】我国雏鹰企业数据(excel格式\shp格式)

企业是经济活动的参与主体。一个城市的企业数量决定了这个城市的经济发展水平&#xff01;比如一个城市的金融企业较多&#xff0c;那这个城市的金融产业肯定比较发达&#xff1b;一个城市的制造业企业较多&#xff0c;那这个城市的制造业肯定比较发达。 本次我们为大家带来的…

jumpserver任意密码重置漏洞-CVE-2023-42820

目录 jumpserver 环境搭建 这里用的是vulhub靶场 进入 jumpserver 的目录 修改配置文件 config.env 里面的 DOMAINS 参数为kali的地址 运行环境&#xff0c;第一次运行的话会拉取文件&#xff0c;要耐心等待。 命令&#xff1a; 查看docker容器 命令&#xff1a; 用浏…

【分享】Excel“只读方式”的两种模式

查阅Excel表格的时候&#xff0c;担心不小心修改了内容&#xff0c;可以给Excel设置以“只读方式”打开&#xff0c;这样就算修改了内容也不能直接保存表格。Excel表格可以设置两种“只读方式”&#xff0c;一起来看看吧&#xff01; “只读方式” 1&#xff1a; 打开Excel表…

找工作什么平台最可靠

吉鹿力招聘网是最可靠的找工作平台。可以直接和HR沟通岗位情况&#xff0c;方便快捷。同时&#xff0c;吉鹿力招聘网还有一些其他功能&#xff0c;比如可以找到更精准的人才&#xff0c;以及专业的招聘网站&#xff0c;可以帮助求职者找到合适的职位。吉鹿力招聘网还有一个特点…

【Linux进程】进程控制

目录 一、进程创建 1.2 fork函数初识 1.2 fork函数返回值 1.3 写时拷贝 1.4 fork常规用法 1.5 fork调用失败的原因 二、进程终止 2.1 进程退出场景 2.2 进程退出码 2.2.1 用strerror打印错误信息 2.2.2 errno全局变量 2.3 进程常见退出方法 2.3.1 进程正常退出 2…

Python高级语法----Python的元编程

文章目录 装饰器元类反射使用 `__getattr__`, `__setattr__`, 和 `__delattr__`元编程是一种编程技术,它允许程序员在运行时修改、增加或操作程序的结构。在Python中,元编程通常涉及到对类和函数的动态创建和修改,这是通过使用诸如装饰器、元类和反射等高级功能来实现的。 …

Java整合Redis实现坐标附近查询

目录 一、GEO用法引入 二、引入依赖 三、实体类 四、添加位置信息 五、查询位置信息 一、GEO用法引入 GEO&#xff0c;全称Geolocation&#xff0c;代表地理坐标。可以在其中存储地理坐标信息&#xff0c;帮助我们根据经纬度来检索数据。常见的命令有&#xff1a;GEOADD&…

数列计算

题目描述 有一列数是 : 请找出这个数列的规律&#xff0c;编写程序计算并输出这个数列的第项&#xff0c;要求是分数形式&#xff0c;并计算这个数列的前项和 ( 结果四舍五入保留两位小数 ) 输入格式 第一行仅有一个正整数 &#xff08;) 。 输出格式 共有 行&#xff0c;第一…