图解通信原理与案例分析-6:基于离散字符的RS232串口数字通信--收发双方独立预设置同步时钟

前言:

RS-232标准接口是计算机常用的串行通信接口标准之一,虽然比较简单与成熟,但对于理解通信原理的基本流程和框架、核心的概念有基础性帮助作用。

本文将从通信原理的角度,解析RS232串口通信过程中的每个环节,包括硬件和软件,在信源和信宿之间,实现离散的字符串的传送。


目录

第1章  什么是RS232通信

第2章 RS232实现离散字符串通信的基本需求框架

第3章 RS232实现离散字符串通信的软硬件架构

第4章 RS232实现离散字符串通信的通信原理模型

第5章 信源对信息的发送过程

5.1. 信源

5.2 信息

5.3 数据/消息

5.4 信源编码

5.5. 数据处理

5.6. 网络编码:

5.7. 物理层信道编码

5.8. 电信号的符号/码元编码,英文为symbol

5.9. 信号的发送与接口

第6章 信道对信息的传输过程

第7章 信宿对信息的接收过程

结束语:


第1章  什么是RS232通信

RS-232标准接口是计算机常用的串行通信接口标准之一, 是现在主流的串行通信接口之一, 在两个通信实体之间实现8bit编码字符的传输。


第2章 RS232实现离散字符串通信的基本需求框架

RS232是双向通信,本文以单向的字符的发送为例,介绍RS232的通信原理。

系统需求:

A帅哥通过计算机的RS232串口给A美女发送一条求爱消息:“I Love you”


第3章 RS232实现离散字符串通信的软硬件架构

发送方:

(1)键盘:捕捉键盘的机械按键的输入,每个按键代表一个特定的字符,并把键盘的机械按键输入转换成相应的电信号

(2)键盘控制器:把键盘的电信号转换成对应的ASCII编码的二进制数。

(3)键盘驱动程序:从键盘控制器寄存器中读取ASCII编码的二进制数,并缓存到系统内存中。

(4)串口通信软件:从系统的内存获取字符串对应的ASCII编码的二进制数,并把该二进制数传递给Uart串口驱动程序。

(5)Uart串口驱动:把输入的ASCII编码的二进制数,传送给Uart控制器,并启动Uart控制器进行Uart数据的发送。

(6)Uart串口控制器:先把并行8比特的ASCII编码的二进制数转换成串行单比特的二进制比特流,即并串转换;然后按照Uart的协议规范,产生相应时序的Uart电平信号 (5V TTL电平)

9600/38400/115200等波特率就是指Uart电平信号的速率。

(7)变压器:Uart TTL电平信号 (5V电平)转换成RS232电平信号(+/-15V电平)

(8)RS232串口接口:物理接口,用于连接标准的RS232串口线。

RS232电缆的信号传输:

(1)RS232串口线把RS232电平信号传送到目的地。

(2)三根线:Tx(发送)、Rx(接收)、GND(地线)

接收方:

(1)RS232串口接口:物理接口,用于连接标准的RS232串口线。

(2)变压器:把RS232电平信号(+/-15V电平)转换成Uart TTL电平信号 (5V电平)

(3)Uart串口控制器:先按照Uart串口的时序信号标准接收Uart TTL电平信号 (5V电平), 然后把串行的单比特转换成并行的8比特的二进制数据,并缓存到控制器内部的寄存器或内存中。

(4)Uart串口驱动:从串口控制器寄存器中读取字符串对应的8比特为单位数据流,并缓存到系统内存中。

(5)串口通信软件:从系统的内存获取字符串对应的ASCII编码的二进制数,并把该8比特为单位的二进制数据传递给显示器驱动程序。

(6)显示器驱动程序:把ASCII编码的二进制数传送到显示控制器的内部的寄存器或内存中,并启动显示器显示相应的字符。

(7)显示器控制器:读取字符串对应的ASCII编码的二进制数,并转换成显示器的模拟电信号。

(8)显示器:把字符对应的模拟电信号,转换成字符相应的光信号,显示特定的字符。

上述是从计算机编程的角度讨论了这个过程,下面将从通信原理的角度,探讨整个通信过程。


第4章 RS232实现离散字符串通信的通信原理模型


第5章 信源对信息的发送过程

5.1. 信源

信息的发送方,可以是“人”或物。

这里是:帅哥A.

5.2 信息

是万事万物的本质,是蕴含在事物的运动和变化中某种具体或抽象的东西,信息必须依附于一定的物质形态,如消息/数据之上。

这里是:帅哥对美女B的爱慕之情。

5.3 数据/消息

是信息的物质载体,比如语音、图像、温度、文字、数字、符号。

这里是:“I Love you” 这些文字符号。

5.4 信源编码

编码:是信息从一种形式或格式转换为另一种形式/格式的过程。即用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信。

信源编码:把信源需要传送的语音、图像、温度、文字、数字的符号编码成通信系统所需要的格式。

这里的目标格式是:ASCII编码。

实现这种转换的硬件:机械键盘+键盘控制器。

(1)ASCII编码的基本原理

ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。

产生原因:

在计算机中,所有的数据在存储和运算时都要使用二进制数表示,像a、b、c、d这样的52个字母(包括大写)以及0、1等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。

表达方式

ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符

标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符。

详细信息参考:ASCII_百度百科

现在的问题是:如何把这些字符输入到计算机系统中?键盘和键盘控制器硬件电路就完成这样的信源编码。

(2)键盘如何实现ASCII编码

计算机的键盘技术已经非常成熟,这里借用机械式键盘来探讨信源编码的基本原理,即如何把现实世界中的离散的数据,转换成计算机能够处理的二进制信息。为后续理解更加复杂信源编码打下基础。

键盘是最常用也是最主要的输入设备,通过键盘可以将英文字母数字标点符号输入到计算机中。

如何实现,敲入键盘上的某个按键,CPU就知道对应的ASCII编码值呢?

这里分几步:

  • 给键盘上的每个键盘标识一个字母,这些字母的唯一意义,就是告诉输入者,该按键代表什么ASCII编码字符。
  • 把机械的键盘按键,转换成一定的电信号,如低电平或高电平,并连接到键盘控制器特定的芯片管脚上。

如下以4*4=16个键盘为例,展现了上述过程的硬件实现过程:

当按下某个键时,对应的行和列的信号与地线相连,对应的行和列的芯片管脚的信号线就为低电平,这样当对应特定字母的键盘按键被按下,转换成了相应的电信号。

  • 键盘控制器收到芯片管脚的低电平信号后,就把该电平信号组合转换成对应的二进制ASCII编码值。比如连续按下 “I Love You”,就有10个字符,查前面的ASCII表可以得到10个对应的二进制制编码值。
     

至此,完成了英文字符的信源编码。当任何按键被按下,都会被转换成ASCII编码表对应的二进制数值。

5.5. 数据处理

数据处理是指:对信源编码后的数据进行适当的处理,比如选择何时、何种通信链路进行数据传输。

在本案例中,数据处理包括:(1)调用从键盘驱动程序从键盘控制器中读取输入的数据,(2)然后调用Uart驱动程序,请求Uart控制器,把输入的8bits的、ASCII编码的、二进制数据,通过Uart串口发送出去。

5.6. 网络编码:

Uart串口是点对点传输,因此不需要网络编码

5.7. 物理层信道编码

物理层信道编码包括:物理层帧结构、检错、纠错和重传。

(1)检错与纠错

在信号传输过程中可能会出现差错,故对数字信号必须采用检错、纠错,以增强数据在信道中传输时抵御各种干扰的能力,提高系统的可靠性。对要在信道中传送的数字信号进行的检错编码、纠错编码就是信道编码。

所谓检错:就是能否发现二进制数据传输过程中发生了差错。

检错码是一种编码,指在传输过程中发生错误后,在接收端能自动检查并发现错误的一种编码。

所谓纠错:首先能否发现错误,其二,能够把发现错误的比特给纠正过来。

Uart串口通信中,采用了检错编码,并没有纠错编码。如果发现传输的8比特的二进制数据发生错误,则直接丢弃,防止错误数据造成的干扰。

常见的检错码的有两大类别:

奇偶校验编码循环冗余编码CRCUart串口通信采用的是低成本的奇偶校验法。

奇偶校验编码是单比特编码方式,根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。

又分为奇数校验码和偶数校验码。

采用奇数的称为奇校验,反之,称为偶校验。

采用何种校验是事先规定好的。

通常专门设置1个比特的奇偶校验位,在发送端,把该比特添加到一组二进制比特流中的末位,用来调整或控制整个二进制比特流中“1”的个数为奇数或偶数。

若用校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。

若用校验,则当接收端收到这组代码时,校验“1”的个数是否为偶数,从而确定传输代码的正确性。

(2)帧结构

上述是Uart串口通信的物理层的帧结构:

  • 空闲状态:当收到连续M(M>8)个1时,表示链路空闲。
  • 帧同步:采用1个bit的0,作为起始位,起到帧同步的作用。
  • 数据净荷:7或8个bits,取决于设置。
  • 校验位:采用1bit的奇数或偶数校验。取决于设置。
  • 停止位:采用1个bit的1,作为帧结束标志,即停止位。
  • 空闲位:采用1个bit的1,作为空闲位,表示没有有效数据,

物理层编码:7个bits被编码成1+7+1+1 = 10bits

此处采用二进制“1”表示链路正常,但没有有效数据传输,而不是“0”,来维持串口链路。

如果用“0”,就无法区分,此时是没有数据呢?还是链路断开了呢?因为链路断开,读到的数据就是0电平。

再说“0”,已经用于数据的起始,用于帧同步。

(3)物理层时钟同步

在数字通信中,信号的收发双方必须进行时钟同步,以确保按照相同的时钟周期和频率来发送和接收采样二进制数据。

然而,Uart通信是双向的、对等通信,不分主从角色,因此不需要从对方同步数字信号接收采样时钟

时钟的同步是人为、手工设置的(当然是通过软件的程序来完成的),而不是硬件自动协商的,收发双方必须独立预设值同步时钟,以确保收发双发以相同的时钟周期和频率来发送和接收采样二进制数据。

这就是为什么串口通信必须预先设置波特率的原因。

如果双方的波特率设置不一致,也就是接收时钟与发送时钟不一致,是无法通信的。

这种通过手工设置时钟的方式是不灵活的,在后续的案例中,可以看到其他的时钟同步的方式。

  • 如在I2C通信案例中,可以通过独立的时钟信号线来传递时钟。
  • 如在以太网通信案例中,可以通过物理层编码的方式,在传递数据的同时,可以传递时钟信号。

(4)帧同步

帧同步是硬件自动完成的,通过“起始位”和“停止位”协作,共同完成二进制比特的帧同步。

由于数据帧中没有长度域,因此帧中二进制比特的数据净荷的长度,也是双方预先设置的,通常是7或8个bit。

之所以没有长度域,是因为Uart本身就是用于字符传输的,每个字符的比特长度原本就是有限,无需动态变化。

当然,在大多数数字通信中,都需要预留长度域,表明数据净荷的长度。

(5)确认与重传

Uart串口通信不支持物理层帧的确认与重传机制。

5.8. 电信号的符号/码元编码,英文为symbol

(1)符号(symbol)的定义

这里的符号,与信源编码提到的符号不是一个概念。信源编码的符号是信息的最小载体,如文字符号、图像符号、声音符号等。

这里的符号是底层的电子通信层面的一个概念,是一个具有一定时间长度的、一定形状的电信号就是符号

或者说具备某种特征量(幅度、频率、相位)的电信号就是符号,

从示波器上看,就是电信号的波形,是二进制比特数据的最小载体最小单位。

虽然,该概念,在uart和RS232串口通信中没有很显现的作用,但这个概念非常非常的重要,在无线通信中会反复使用该概念。

(2)基本电信号波形的分类

而在电信号通信的系统中,常用两种基本的电信号波形承载数据。

符号可以是数字波形的矩形波,也可以是模拟波形的正弦波,也可以是基本模拟波形的复合体。

  • 有线通信:用矩形波或方波

通过控制矩形波的电信号参数来承载数据。

常见的参数有:

a) 幅度:通过控制电信号的幅度来承载信息,如

在正逻辑中,如TTL电平中,采用的就是用高电平(如5V)表示二进制的“1”;用低电平(如<0.2V)表示二进制“0”。

Uart串口通信采用的是这种正逻辑。

在负逻辑中,采用高电平信号,代表逻辑1;采用高电平信号,代表逻辑1。

RS232串口通信采用的是这种负逻辑,又叫反逻辑,为何叫负逻辑?

+3~+15V 是正电压,代表是 0

-3V~-15V 是负电压,代表是 1

所以称之为负逻辑。

为什么不用0电平表示0呢?

主要原因是串口通信是设备间通信,链路连接是不可靠的,0电平表示没有信号,表示表示链路断开。

b) 周期或频率:通过控制电信号符号的发送周期或频率,来传送不同速率的数据。

这时候的电信的传输速率,称之为符号速率或波特率

  • 无线通信正弦波或余弦波

通过控制正弦波的电信号参数来承载数据。

常见的参数有:

幅度:通过控制正弦波的幅度来承载二进制数据,称为ASK.

相位:通过控制正弦波的相位来承载二进制数据,称为PSK.

频率:通过控制正弦波的频率来承载二进制数据,称为FSK.

在介绍无线通信案例时,再深入探讨这个主题。

(3)码元(symbol)的定义

英文也是symbol,是符号在数字电子通信的别名,即如果电信号的符号数字电信号时,给它取个别名:码元。

(4)码元编码

一个码元可以承载一个比特的二进制数据,也可以由多个码元承载1个二进制比特,也可以由多个码元承载多个二进制比特。

这就是码元编码:(1)采用什么样的码元信号,或码元符号表示逻辑的0或1;(2)采用多少码元,表示二进制的逻辑的0和1。

不同的通信方式,又不同的码元编码方式。

码元形状与二进制比特的关系来看:

Uart串口通信采用的是:+5V表示二进制逻辑“1”; 低电平表示+5V表示二进制逻辑“0”

RS232串口通信采用的是:-3V~-15V表示二进制逻辑“1”; 低电平表示+3V~+15V表示二进制逻辑“0”;

从码元数量与二进制比特的比例关系来看:

Uart串口通信和RS232串口通信,均采用的是1:1的关系,即一个码元,代表一个比特的二进制数:0或1.

LTE子载波通信中,使用N个周期表示一个符号,一个符号代表M个bit

其他更加复杂的映射关系,在后续的其他通信方式中再进行深入的探讨。

(5)比特率、码片率、波特率、符号速率

在计算机通信中,经常会听到这三个代表数据传输速率的词。这三个词,既有关联,又有所不同,这跟底层的码元编码方式有很大的关系

下图展现了不同速率之间的层次关系:

  • 比特率:表示每秒钟传送的二进制比特的个数。
  • 码片率:表示每秒钟传送的二进制码元的个数。
  • 波特率:表示每秒钟传送的数字符号的个数。
  • 符号率:表示每秒钟传送的模拟符号的个数。

在RS232串口通信中个,二进制比特与电信号波形之间编码采用的是1对1的关系,因此这几个速率是完全等同的。

5.9. 信号的发送与接口

(1)信号的发送

在无线通信中,电信号的发送是通过功率放大器+“天线”完成的, 在这里信号的发送是通过变压器来完成的。

如下的变压器Max232,完成5V TTL电平与+/-15V RS232电平的转换,并把RS232信号发送到链路中。

(2)物理接口标准::DB9

物理接口标准主要用于规范物理接口的信号,便于通过有线电缆,连接不同的通信设备。

如下是RS232 Uart串口通信是常见的信号:

最低要求是TX, RX, GND这三根信号。


第6章 信道对信息的传输过程

(1)通信线路/信道

RS232串口,采用如下的电缆,连接通信的两端。

(2)信道上传输的电信号


第7章 信宿对信息的接收过程

接收过程是一个解码过程,正好与发送过程相反。

1. 信号的接收与接口

从RS232串口电缆上接收RS232 +/-15V电平信号.

变压器把+/-15V的RS232 负逻辑电平信号,转换成5V的TTL 正逻辑的电平信号。

2. 电气信号符号解码

把5V高电平电信号解码成二进制数字“1”。

把0V低电平电信号解码成二进制数字“0”。

3. 物理层信道解码

(1)检测帧结构:把有效二进制数据bit从物理层的帧中提取出来

(2)奇偶校验检错:如果出错,直接丢弃,请求无重传机制。

4. 网络层解码:

无网络层解码

5. 应用层数据处理

主要包括:

(1)串口驱动程序从串口控制器中读取ASCII编码后的二进制数据。

(2)串口应用程序通过串口驱动程序中获取收到的ASCII编码后的二进制数据,然后把二进制数据传递给显示器的驱动程序

(3)显示器驱动程序:把需要显示的ASCII编码后的二进制数据传递给显示器控制器(或显卡)

6. 信宿解码

显卡把ASCII编码后的二进制数据,转换成显示屏显示特定字符所需要的电信号。

备注:

关于如何把ASCII编码后的二进制数据,转换成字符所需要电信号,可以参阅相关的文档,这里不再叙述。

7.  离散的数字数据

显示屏收到显卡的电信号,以模拟的方式,显示相应的字符串: “I Love you”

8. 信息

是万事万物的本质,是蕴含在事物的运动和变化中某种具体或抽象的东西,信息必须依附于一定的物质形式。

这里是:美女B感受到的帅哥A对自己的爱慕之情的信息,就是承载在 “I Love you”的字符中的。

9. 信宿

信宿:信息的接受者, 可以是人或物。

这里是指美女B.

至此,美女B通过Uart串口收到了帅哥A发送过来的示爱信息。


结束语:

Uart串口通信虽然简单,但它展现了通信的基本过程,这个过程在其他复杂的通信中依然可以复用。

这里涉及到通信过程中各个环节的核心概念,在复杂的通信中依然有效。

特别是符号编码的概念,对后续无线通信中的symbol的理解有很大的帮助作用!


参考:

RS232与UART串口通信 https://blog.csdn.net/kyokusanagl/article/details/50833989?locationNum=9&fps=1

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文火冰糖的硅基工坊

你的鼓励是我前进的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值