基础涨知识篇:串口通信的基本原理

玩转嵌入式

601篇原创内容
公众号
串口是单片机中非常重要的概念,单片机的通讯功能就是由串口实现的,在串口的基础上可以扩展出RS232、RS485、LIN等,因此掌握串口通信,非常重要。下面和大家分享正文。

按照数据传送方向分类

  • 单工:数据传输只支持数据在一个方向上传输
  • 半双工:允许数据在两个方向上传输。但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;它不需要独立的接收端和发送端,两者可以合并一起使用一个端口
  • 全双工:允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端
分别如下图中的a、b、c所示。
按照通信方式分类
  • 同步通信:带时钟同步信号传输。比如:SPI,IIC通信接口
  • 异步通信:不带时钟同步信号。比如:UART(通用异步收发器),单总线
在同步通讯中,收发设备上方会使用一根信号线传输信号,在时钟信号的驱动下双方进行协调,同步数据。例如,通讯中通常双方会统一规定在时钟信号的上升沿或者下降沿对数据线进行采样。
在异步通讯中不使用时钟信号进行数据同步,它们直接在数据信号中穿插一些用于同步的信号位,或者将主题数据进行打包,以数据帧的格式传输数据。通讯中还需要双方规约好数据的传输速率(也就是波特率)等,以便更好地同步。常用的波特率有4800bps、9600bps、115200bps等。
在同步通讯中,数据信号所传输的内容绝大部分是有效数据,而异步通讯中会则会包含数据帧的各种标识符,所以同步通讯效率高,但是同步通讯双方的时钟允许误差小,稍稍时钟出错就可能导致数据错乱,异步通讯双方的时钟允许误差较大。
STM32串口通信基础
STM32的串口通信接口有两种,分别是:UART(通用异步收发器)、USART(通用同步异步收发器)。而对于大容量STM32F10x系列芯片,分别有3个USART和2个UART。
UART引脚连接方法
  • RXD:数据输入引脚,数据接收
  • TXD:数据发送引脚,数据发送
对于两个芯片之间的连接,两个芯片GND共地,同时TXD和RXD交叉连接。这里的交叉连接的意思就是,芯片1的RxD连接芯片2的TXD,芯片2的RXD连接芯片1的TXD。这样,两个芯片之间就可以进行TTL电平通信了。
若是芯片与PC机(或上位机)相连,除了共地之外,就不能这样直接交叉连接了。尽管PC机和芯片都有TXD和RXD引脚,但是通常PC机(或上位机)通常使用的都是RS232接口(通常为DB9封装),因此不能直接交叉连接。RS232接口是9针(或引脚),通常是TxD和RxD经过电平转换得到的。故,要想使得芯片与PC机的RS232接口直接通信,需要也将芯片的输入输出端口也电平转换成RS232类型,再交叉连接。
经过电平转换后,芯片串口和RS232的电平标准是不一样的:
  • 单片机是TTL电平: 5V表示1,0V表示0
  • RS232是负逻辑电平,-3~-15V为1, 3~ 15V为0
RS-232通讯协议标准串口的设备间通讯结构图如下:
所以单片机串口与PC串口通信就应该遵循下面的连接方式:在单片机串口与上位机给出的RS232口之间,通过电平转换电路(如下面图中的Max232芯片) 实现TTL电平与RS232电平之间的转换。下图中的P10,也就是上文中提到的DB9。
STM32的UART特点
  • 全双工异步通信;
  • 分数波特率发生器系统,提供精确的波特率。发送和接受共用的可编程波特率,最高可达4.5Mbits/s;
  • 可编程的数据字长度(8位或者9位);
  • 可配置的停止位(支持1或者2位停止位);
  • 可配置的使用DMA多缓冲器通信;
  • 单独的发送器和接收器使能位;
  • 检测标志:① 接受缓冲器  ②发送缓冲器空 ③传输结束标志;
  • 多个带标志的中断源,触发中断;
  • 其他:校验控制,四个错误检测标志。
串口通信过程
STM32中UART参数
串口通讯的数据包由发送设备通过自身的TXD接口传输到接收设备的RXD接口,通讯双方的数据包格式要规约一致才能正常收发数据。STM32中串口异步通信需要定义的参数:起始位、数据位(8位或者9位)、奇偶校验位(第9位)、停止位(1,15,2位)、波特率设置。
UART串口通信的数据包以帧为单位,常用的帧结构为:1位起始位 8位数据位 1位奇偶校验位(可选) 1位停止位。如下图所示:
奇偶校验位分为奇校验和偶校验两种,是一种简单的数据误码校验方法。奇校验是指每帧数据中,包括数据位和奇偶校验位的全部9个位中1的个数必须为奇数;偶校验是指每帧数据中,包括数据位和奇偶校验位的全部9个位中1的个数必须为偶数。
校验方法除了奇校验(odd)、偶校验(even)之外,还可以有:0 校验(space)、1 校验(mark)以及无校验(noparity)。0/1校验:不管有效数据中的内容是什么,校验位总为0或者1。
UART框图
这个框图分成上、中、下三个部分,具体的可以看《STM32中文参考手册》中的描述。
框图的上部分,数据从RX进入到接收移位寄存器,后进入到接收数据寄存器,最终供CPU或者DMA来进行读取;数据从CPU或者DMA传递过来,进入发送数据寄存器,后进入发送移位寄存器,最终通过TX发送出去。
然而,UART的发送和接收都需要波特率来进行控制的,波特率是怎样控制的呢?
这就到了框图的下部分,在接收移位寄存器、发送移位寄存器都还有一个进入的箭头,分别连接到接收器控制、发送器控制。而这两者连接的又是接收器时钟、发送器时钟。也就是说,异步通信尽管没有时钟同步信号,但是在串口内部,是提供了时钟信号来进行控制的。而接收器时钟和发送器时钟又是由什么控制的呢?
可以看到,接收器时钟和发送器时钟又被连接到同一个控制单元,也就是说它们共用一个波特率发生器。同时也可以看到接收器时钟(发生器时钟)的计算方法、USRRTDIV的计算方法。
👉STM8单片机CAN滤波器的设置
👉一个经典的电源电路,分析的很彻底!
👉老外的嵌入式编程规范,和我们有啥不同?
👉死区是什么?上下桥臂的三极管为什么不能同时导通?
(0)

相关推荐

  • 一天一个设计实例-3万字讲解UART和实例

    用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART.它将要传输的资料在串行通信与并行通信之间加以转换.作为把并行输入信号转成串 ...

  • 凔海笔记之FPGA(八):Verilog描述RS232 UART

    在我看来,有些代码会用,但未必理解,有些代码理解,但未必会写,有些代码会写,但未必能用自己的话说出来.当能够以自己的想法深入浅出的讲解所学知识,那也就可以说自己掌握了,所以,我还是来发帖吧. 记得刚用 ...

  • 【精品博文】基于FPGA的串口通信时序设计

    这篇博文主要总结一下串口通信的收发时序.上周基于IIC,SPI,RS232串口写了几个简单的小实验,感觉对于这种常用协议的写法大体上都差不多,主要是读懂时序图,然后根据时序图,用HDL语言描述出来就可 ...

  • UART波形详解

    UART(Universal Asynchronous Receiver/Transmitter)是一种异步全双工串行通信协议,由Tx和Rx两根数据线组成,因为没有参考时钟信号,所以通信的双方必须约定 ...

  • 接口IIC

    接口IIC

  • UART通信简介

    UART通信简介

  • 带你快速对比SPI、UART、I2C通信的区别与应用!

    电子设备之间的通信就像人类之间的交流,双方都需要说相同的语言.在电子产品中,这些语言称为通信协议. 之前有单独地分享了SPI.UART.I2C通信的文章,这篇对它们做一些对比. 串行 VS 并行 电子 ...

  • 为什么UART串口通信要16倍过采样数据

    增强抗干扰是原因之一 标准UART可以选16倍采样,也可以选64倍采样,个人觉得应该是方便分频设计. 标准UART的RXD前端有一个"1到0跳变检测器",当其连续接受到8个RXD上 ...

  • 串行通信(UART)

    串行通信(UART)admin  17/07/10 说明 嵌入式电子产品都是由一些电路(处理器或其他集成电路)互连形成的. 为了在这些电路之间交换信息,他们必须遵循一个共同的通信协议.目前已经有数百种 ...

  • 五一涨知识:手机通信真的是无线传输吗?原来这才是它的基本原理

    #科技# #科普# 对于大部分人来说,手机是生活中不可缺少的一部分. 你可能会感到好奇,手机通信是如何实现的?传输过程真是无线的吗? 接下来,让我们一起探索手机通信背后的原理. 当我们在使用手机讲话时 ...

  • 涨知识篇 : II 官窑器瓶型的规矩

    官窑的器型由宫廷有时甚至是皇帝钦定.在烧制中,不讲成本,唯精.唯奇.唯美,官窑制度将中国的瓷器水平推向了世界的顶峰. 当然,作为一件瓷器,能做到"美而无用",则是最大的褒扬.有些官 ...

  • 氩弧焊工应该知道,直流脉冲氩弧焊和普通氩弧焊的区别,涨知识篇

    氩弧焊工应该知道,直流脉冲氩弧焊和普通氩弧焊的区别,涨知识篇

  • 串口通信的基本原理

    干货福利,第一时间送达! 串口是单片机中非常重要的概念,单片机的通讯功能就是由串口实现的,在串口的基础上可以扩展出RS232.RS485.LIN等,因此掌握串口通信,非常重要.下面和大家分享正文. 按 ...

  • 涨知识啦!关于汽车的50个基础常识,做一个懂车的老司机

    涨知识啦!关于汽车的50个基础常识,做一个懂车的老司机 公差帮APP2020-12-28 08:49:43 1.汽车的基本结构包括哪些部分? 答:一般常用汽车基本结构都是由四部分组成的,这四部分是:发 ...

  • Java基础知识篇(2020最新版) 准备放进收藏夹吃灰的勿进

    Java基础知识篇(2020最新版) 准备放进收藏夹吃灰的勿进

  • 一篇了解不锈钢快速接头,干货!涨知识

    液压面授课时间地点: 5月18-22日 上海(液压设计) 5月25-28日 成都 6月22-25日 上海(液压系统比例/伺服控制技术与智能原件应用) 微信:18001326538. 来源:今日头条张工 ...

  • 涨知识啦!最全的污水处理基础知识汇总​

     污水水质  SS:固体悬浮物,一般单位mg/L.一般指:应滤纸过滤水样,将滤后截留物在105℃温度中干燥恒重后的固体质量. COD:化学需氧量,一般单位mg/L.COD的测定原理是:用强氧化剂(我国 ...

  • 涨知识!这是一篇很“贵”的科普

    守护安全畅通消费 常见的宝玉石及选购指南 你了解钻石.红/蓝宝石.祖母绿 这些宝石么? 你知道和田玉.翡翠 这些玉石么? 如何选购宝玉石呢? 1 钻 石 钻石也称金刚石,被誉为宝石之王,是世界上公认的 ...