[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通信的相关知识,希望对你所以帮助。

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

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

相关文章

YOLOV5中parser参数配置

源码下载链接:ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite (github.com) 需要配置的参数:--data parser.add_argument(--data, ...):添加一个用于数据配置文件的路径的参数。 可以直接修改&am…

【算法|动态规划 | 区间dp No.1】AcWing 282. 石子合并

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【AcWing算法提高学习专栏】【手撕算法系列专栏】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程&a…

视频封装格式

FLV(Flash Video) FLV封装格式 Tag Data分为Audio,Video,Script三种 TS(Transport Stream)传输流 TS文件分为三层,(倒叙更好理解) TS层:在PES层基础上加入…

易点易动固定资产管理系统助您轻松应对复杂的固定资产管理挑战

在现代企业运营中,固定资产是企业的重要财产,对于企业的发展和运营至关重要。然而,随着企业规模的扩大和业务的复杂化,固定资产管理面临着越来越多的挑战。传统的手工管理方法已经无法满足企业的需求,因此,…

蒙特卡洛树搜索(Monte Carlo Tree Search)揭秘

一. 什么是蒙特卡洛树搜索 蒙特卡洛树搜索(MCTS)是一种启发式搜索算法,一般用在棋牌游戏中,如围棋、西洋棋、象棋、黑白棋、德州扑克等。MCTS与人工神经网络结合,可发挥巨大的作用,典型的例子是2016年的AlphaGo,以4:1…

viple模拟器使用(一):线控模拟

(1)unity模拟器 通过viple程序,将viple编写逻辑运行在unity模拟器中。 首先编写viple程序,逻辑:设置一个机器人主机,并且,按↑、↓、←、→方向键的时候,能分别控制模拟机器人在unity模拟器中运行。 主机…

【软考篇】中级软件设计师 第二部分(一)

中级软件设计师 第二部分(一) 八. 层次化结构8.1 局部性原理8.2 体系8.3 分类8.3.1 存取方式8.3.2 工作方式 8.4 Cache8.4.1 例题 8.5 地址映像 九. 主存编址9.1 例题一 十. 可靠性10.1 串联系统和并联系统 十一. 网络安全11.1 保密性11.2 完整性&#x…

蓝桥杯每日一题2023.11.13

题目描述 蓝桥杯大赛历届真题 - C 语言 B 组 - 蓝桥云课 (lanqiao.cn) 题目分析 由于每次吹灭的蜡烛与年龄相同故我们想到使用前缀和可以让我们求出各个区间的和,我们将每个区间都枚举一遍,如果符合要求就输出区间开始的位置(答案&#xff…

linux之IPC

linux之IPC 什么是IPC共享内存(shm)ftokshmgetshmatshmdtshmctl 消息队列msggetmsgrcvmsgsndmsgctl 旗语(信号量)semgetsemctlsemopsem三级标题三级标题 ipc命令守护进程查看守护进程 什么是IPC IPC: Inter(内核) Process(进程) Communicton(通信) 共享内…

问AI经历网是什么

为AI生成的文案点赞 👍

java实现插入排序

图解 以下是Java实现插入排序的代码: public class InsertionSort {public static void main(String[] args) {int[] arr {5, 2, 4, 6, 1, 3};insertionSort(arr);System.out.println(Arrays.toString(arr)); // output: [1, 2, 3, 4, 5, 6]}public static void i…

dolphinscheduler

架构说明 MasterServer MasterServer采用分布式无中心设计理念,MasterServer主要负责 DAG 任务切分、任务提交监控,并同时监听其它MasterServer和WorkerServer的健康状态。 MasterServer服务启动时向Zookeeper注册临时节点,通过监听Zookeep…