USART串口通讯

在这里插入图片描述

欢迎加入【Linux C/C++/Python社区】一起探讨和分享Linux C/C++/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。



1. UART总线与USART接口

☞UART

UART: 通用异步通信收发器/SCI串行通讯接口。用于异步通信,可以实现全双工收发,即通信双方同时收发;两个器件无需共享同一个时钟信号就能进行通讯,即异步通讯。数据收发单位是数据帧,工作模式为中断方式,DMA工作方式。

  • UART通讯双方需要设定相同的数据格式,收的格式和发的格式完全一样,一般数据帧的格式为

在这里插入图片描述

  • UART通讯双方要设定相同的数据速率,这也是异步通讯都需要设置的,接收方与发送方必须要设置一致的波特率。

  • UART规范主要定义了TTL电平的可配置通信数据格式,通信速率,异步采样机制。

☞差分传输

差分传输是一种信号传输技术,在两根线上都传输同一信号,这两个信号的振幅相同,相位相反,也叫做平衡传输方式,在这两根线上传输的信号就是差分信号,信号的接收端比较这两个电压的差值来判断发送端发送的是逻辑0还是逻辑1,设计电路时,差分走线必须是等长,等宽,紧密靠近且在同一层面的两根线。

☞USART与UART的区别

USART
通用同步异步收发器,USART在UART的基础上增加了同步机制,一种可被设置为同步、异步通信模式的全双工串行通讯接口。在同步模式下,发送器时钟引脚SCLK输出与SPI主模式相似的数据传输时钟,相位和极性可以通过寄存器来设置。

USART和UART的区别

  • 位流同步机制不同,同步与异步;
  • 可支持的协议数量不同,USART更为复杂,不但兼容UART,还可以传输多种不同协议的数据,比如LAN总线、Modbus、智能卡等等;
  • 支持的外设能力有所不同,USART常用于系统正常运行,高功耗时的串行数据通信,当系统进入休眠等低功耗模式的时候,采用UART低速通信接口。

2. 串口通讯

串口通讯: Serial Communication,一种串行通讯方式。

  • 物理层:通讯中,具有机械、电子功能部分的特性,确保原始数据在物理媒体上的传输;
  • 协议层:协议层规定了通讯的逻辑,统一了收发双方数据打包和解包的标准;

☞物理层

RS232标准:规定了信号用途、通讯接口及信号电平标准。
在这里插入图片描述
通过串口线链接两个设备的DB9接口,串口信号线使用RS-232标准传输数据信号。
电平标准

通讯标准电平标准
5V TTL逻辑1:2.4V ~ 5V, 逻辑0:0V ~ 0.5V
RS-232逻辑1:-15V ~ -3V, 逻辑0:+3V ~ +15V

RS-232增加了串口通讯的远距离传输及抗干扰能力。
RS-232信号线
RS-232串口标准常用于计算机、路由与调制解调器之间的通讯,在这种通讯系统中,设备分为数据终端设备DTE(比如计算机和路由)和数据通讯设备DCE(比如调制解调器)。
RS-232标准使用COM口,也就是DB9接口,使用串口线连接(公头+母头)。
在这里插入图片描述

  • RXD:接收数据,DCE → DTE,输入,TXDa连接RXDb;
  • TXD:发送数据,DTE → DCE,输出,TXDb连接RXDa;
  • GND:信号地,地线,两个通讯设备之间地电位可能不一样,这样会影响收发双方的电平信号,所以两个串口设备之间必须使用地线连接,也就是所谓的共地。

☞协议层

串口通讯的数据包由发送设备通过自己的TXD接口传输到接收设备的RXD接口,协议层规定了数据包的内容,包括起始位、数据位、校验位、停止位,通讯双方的数据包格式必须约定一致才能正常收发数据。
波特率
异步通讯中没有时钟信号,在上面的DB9接口中就没有时钟线,所以两个设备之间要约定好波特率,即每个码元的长度,以便于对信号解码,常见的波特率有4800、9600、115200等。
波特率是指数据信号对载波的调制速率,它用单位时间内载波调制状态改变次数来表示,单位为波特。比特率指单位时间内传输的比特数,单位是bit/s也可以写作bps。波特率越大,传输速率越快。


在这里插入图片描述
在这里插入图片描述


posted @ 2022-07-18 07:30  Mindtechnist  阅读(81)  评论(0编辑  收藏  举报  来源