目录

  • 一、串口通信概述
  • 1. 串口如何连接
  • 2. 如何计算波特率
  • 二、实验演示
  • 1. 实验设备
  • 2. 实际电路连接
  • 3. 通过串口传输数据
  • 三、总结
  • 参考文献


一、串口通信概述

串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节。

串行接口简称为串口,串行接口 (Serial Interface)是指数据一位一位地顺序传送。实现双向通信就需要一对传输线,即TX与RX线。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。

1. 串口如何连接

电路连接方式:

串口如果要实现双向传输,则设备1与设备2,TX与RX要交叉相连。

lua 通过串口传输二进制 利用串口传送数据_串口


起始位: 数据线TX由高电平变为低电平。

停止位: 数据线TX由低电平变为高电平。

起始位和停止位作用:
  如果接收设备检测到数据线由高电平变为低电平,就是接收到了来自发送设备的起始信号,表示开始数据的传输。如果接收设备检测到数据线由低电平变为高电平,就是接收到了来自发送设备的停止信号,表示一帧数据的结束,通过以上特点接收设备就可以将中间的8bit有效数据解析出来,这样就完成了一帧数据的传输。

2. 如何计算波特率

串口传输格式:我们通常用的串口传输格式为:1bit起始位+8bit数据位+1bit停止位(无奇偶校验位),如下图所示

lua 通过串口传输二进制 利用串口传送数据_串口_02


所以传输1Byte数据串口需要传输10bit数据。上面计算得传输1Bit需要的时间为8.68us,则传输1Byte需要时间为8.68*10=86.8us。

波特率
  由基础知识知50M系统时钟—波特率为115200条件下传输1bit需要计数个数为434。那么1Byte(串口传输格式为:1bit起始位+8bit数据位+1bit停止位)是不是循环计数10次434就可以传输完毕。

要注意的是,串口通信的两台主机之间,波特率要一致,下面两图演示了波特率一致与不一致的情况

收发波特率一致:

lua 通过串口传输二进制 利用串口传送数据_stm32_03

收发波特率不一致:

lua 通过串口传输二进制 利用串口传送数据_单片机_04


计算公式

以波特率115200为例

波特率115200 = 115200 (位/秒)。

如果没有校验位,就应该除以 10,得到的是每秒字节数:波特率115200 = 115200 (位/秒) = 11520 (字节/秒)

再除以 1024,就是每秒 KB 数:波特率115200 = 115200 (位/秒) = 11.25 (KB/秒)。如果有一位奇偶校验位,就应该除以 11,得到的是每秒字节数。

最后得出:波特率115200 = 115200 (位/秒) = 10.27 (KB/秒)



二、实验演示

1. 实验设备

  • 两个USB TO TTL
  • 两台PC机
  • 杜邦线若干
  • 串口助手软件

2. 实际电路连接

连接方法与之前的理论一致,解法见下表,电源可以不接,可以通过电脑供电。

USB TO TTL 1

USB TO TTL 2

TX

RX

RX

TX

GND

GND

3V3

3V3

lua 通过串口传输二进制 利用串口传送数据_串口


实际接线如下图

lua 通过串口传输二进制 利用串口传送数据_串口_06

3. 通过串口传输数据

按照上示连接好了之后,连接两台电脑,打开各自电脑的串口助手,并打开串口

lua 通过串口传输二进制 利用串口传送数据_物联网_07


lua 通过串口传输二进制 利用串口传送数据_串口_08


1. 选择一个文件进行传输

这里我选择传输一张2.11Mb的jpg文件

lua 通过串口传输二进制 利用串口传送数据_物联网_09


2. 计算理论传输时间

在串口助手打开了文件之后,显示文件大小为2220595字节

lua 通过串口传输二进制 利用串口传送数据_lua 通过串口传输二进制_10


根据之前给出的计算公式,理论传输时间为216秒

lua 通过串口传输二进制 利用串口传送数据_物联网_11


3. 实际传输对比开始传输后,发送端与接收端分别显示如下

lua 通过串口传输二进制 利用串口传送数据_串口_12


lua 通过串口传输二进制 利用串口传送数据_串口_13


传输完成后

lua 通过串口传输二进制 利用串口传送数据_lua 通过串口传输二进制_14


传输时,使用手机同步计时,实际的传输时间为4*60+31=271秒,比理论计算的216秒与系统给出的理论实践200秒都要长,说明实际上通过串口传输的速率没办法达到理论峰值。

lua 通过串口传输二进制 利用串口传送数据_stm32_15

三、总结

本次实验通过两个usb to ttl在两台pc机之间进行了大文件的传输,并对文件大小进行预算,根据大小估算了理论计算时间,再将理论与实际时间进行对比,实验结果表明,串口的实际传输速率是要低于理论速率的。本次实验的过程总体来说还是比较顺利,接线也比较简单,但是其实背后的一些底层原理还没有那么清晰,所以以后还需要继续接着学习、动手实践。