【STM32F4】四、串口通信1——硬件部分

一、单片机中各种通信方式的分类

根据发送方式的不同,通信方式可分为串行通信并行通信两种,单片几种常用的串行通信SPI、单总线(1-wire)、I2C、UART(常说的串口) 等。

其中,串行通信又可有几种不同的分类:

  • 根据数据传送方向,可将串行通信分为单工、半双工、全双工三类;
  • 根据数据分段方式的不同,可将串行通信分为同步、异步两类。

1. 串行通信中的单工、半双工、全双工

对于单工、半双工、全双工的概念解释,网上有很多,也很好理解,本文不再赘述。读者可参考CSDN博主【Ruo_Xiao】的博客:单工、半双工和全双工的区别

本文在这里只放出三张图,以粗略解释其概念:
在这里插入图片描述

  • 左图:单工
  • 中图:半双工
  • 右图:全双工

在单片机常用的SPI、单总线(1-wire)、I2C、UART(常说的串口)中,单总线和I2C是半双工,SPI和UART是全双工

2.串行通信中的同步和异步

  • 同步传输:接发双方一定有一个共用的同步时钟,它规定着每个信号持续多久后就进入下一个信号。就像两个人的手表,以秒为单位在行进,若说话者一秒说一个字,倾听者一秒听一个字,就不会出错;如果说话者一秒说一个字,倾听者两秒才听一个字,那么后者就会对信号解析错误。

  • 异步传输:异步传输的接发双方没有同步时钟,但要规定相同的波特率,也就是规定一个信号持续的时长,这样接收方就能按时长来拆分信号,实际上与同步时钟的原理差不多。另外,异步传输的双方也会商量好相同的起始位、终止位、校验位等。

3. 单片机中的串行通信方式分类表

根据以上串行通信的两种不同分类方式(单工/半双工/全双工、同步/异步),我们把单片机中的SPI、单总线(1-wire)、I2C、UART**总结如下:

通信方式 所需线束 单/半/全 同/异
UART TXD、RXD、GND 全双工 异步
单总线(1-wire) DQ:发送/接收端 半双工 异步
SPI SCK:同步时钟、MISO:主机输入/从机输出、MOSI:主机输出/从机输入 全双工 同步
I2C SCL:同步时钟、SDA:数据输入/输出 半双工 同步

根据上表可以看出,半双工的通讯方式往往只有一根线,既用来发送、也用来接收;全双工有两根线,一根用来发送,另一根用来接收;

同步的通讯方式往往有一根同步时钟线;异步却没有。

二、RS232转换器

在串行通讯时,要求通讯双方都采用一个标准接口,RS232的作用就是使不同的设备可以方便地连接起来进行通讯。

RS232是一种通讯协议,根据这种协议设计的连接头叫做DB9,DB9共有9个针头,如下图所示:
在这里插入图片描述
虽然它也有负责发送、接收的针头,但不能直接把串口的发送、接收针头接上来,而也要通过DB9母口来进行对接,否则会因电压不同导致不可预测的后果。

三、 UART串口内部结构示意图

UART串口的内部结构并不复杂,但要细究起来,东西也很多,博主在这里根据正点原子的课程,把其内部结构大致分为几块,标在下图:
在这里插入图片描述
串口内部在发送端和接收端都有发送/接收缓冲器发送/接收寄存器
且有一个公共的控制波特率的时钟信号发送器;
以及一些控制中断、标志位等的寄存器。

猜你喜欢

转载自blog.csdn.net/qq_39642978/article/details/112008605