文章目录
- 前言
- 一、前提知识
- 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.补充:通信速率
-
- 比特率:Bitrate,每秒传输的二进制位数,单位为比特每秒(bit/s)。
-
- 波特率: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通信的相关知识,希望对你所以帮助。