0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

串行通讯讲解与分析

嵌入式悦翔园 来源:嵌入式悦翔园 作者:嵌入式悦翔园 2022-11-21 11:53 次阅读

前言

最近在做一个通过ESP8266STM32通讯从而实现远程控制,中间需要用到串口来发送报文,通过报文来实现两者之间的通讯。

今天刚好趁着这个机会来给大家讲解一下串行通讯,希望能给大家以后的学习提供一些思路。

串行通讯介绍

串口通信线最少需要2根(GND和信号线),可以实现单工通信,也可以使用3根通信线(Tx、Rx、GND)来实现全双工。

通过串口不管发数字、文本还是命令,都要先对发送内容进行编码,编码成二进制再进行逐个位的发送。我们使用串口发送的一般都是字符,都是ASCII码编码后的字符,所以一般设置数据位都是8,方便刚好一帧发送1个字符。

那么现在我们就知道了,如果我们想要串口进行通讯,我们首先需要将我们想要发送的信息转换成为ASCII码,再通过串口线将信息以二进制的形式发送出去。

UART作为异步串口通信协议的一种,工作原理是将传输数据的每一个字符一位一位地传输,也就是我们上面说的ASCII码编码。其中每一位(bit)的意义如下:

起始位:先发出一个逻辑“0”的信号,表示传输字符开始。

数据位:紧接着起始位之后。数据位的个数可以是4、5、6、7、8等,构成一个字符。

奇偶校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),依次来校验数据传送的正确性。

停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。

空闲位:处于逻辑“1”状态,表示当前线路上没有数据传输。

其中数据位通常采用ASCII码。从最低位开始传送,靠时钟定位。

1a2ceeaa-694f-11ed-8abf-dac502259ad0.png

串行数据传输的基本模式

二进制脉冲用于串行数据传输中的数据传输。二进制数字一由五伏或高逻辑表示。相反,二进制零表示为逻辑低电平或零伏。为了实现串行通信,需要源和目标。他们也被称为发送者和接收者。可以采用各种类型的串行通信,并指定为单工、半双工和全双工。

Simplex 方法单向数据传输。在此方案中,在任何给定时间只有源或目标处于活动状态。如果源正在发送数据,接收方别无选择,只能接受传输。广播电视或无线电信号时使用单工模式。

半双工模式允许源和目标都处于活动状态,但不能同时处于活动状态。传输一次只发生在一个方向。使用互联网时可以看到一个恰当的例子。当您从计算机发出网页请求时,服务器会处理该请求。然后,当将信息返回到您的计算机(现在是接收方)时,它就成为发送方。

全双工模式是世界上使用最广泛的串行通信形式。源和目标都处于活动状态,可以同时发送和接收数据。您的智能手机是全双工模式实际应用的典型示例。

讨论串行通信时的另一个考虑因素是两台主机的协议和字节顺序。字节顺序是指使用特定的内存地址来存储数据的方法。这是将数据存储在特定内存地址的方式。关于数据对齐字节序有两种分类。

UART串口通信的工作原理

(1)发送数据过程

空闲状态,线路处于高电平;当收到发送指令后,拉低线路的一个数据位的时间T,接着数据按低位到高位依次发送,数据发送完毕后,接着发送奇偶校验位和停止位,一帧数据发送完成。

(2)数据接收过程:

空闲状态,线路处于高电平;当检测到线路的下降沿(高电平变为低电平)时说明线路有数据传输,按照约定的波特率从低位到高位接收数据,数据接收完毕后,接着接收并比较奇偶校验位是否正确,如果正确则通知后续设备接收数据或存入缓冲。

1a780c28-694f-11ed-8abf-dac502259ad0.png

串行通讯和并行通讯

在常见的通讯中有两种基本的数据传输形式,分别是并行和串行通信。串行通信是逐位进行数据传输。它基本上使用两根电线,一根用于发送器,另一根用于接收器

串行通信:计算机与I/O设备之间,同一时刻,只能传输一个bit位的信号。传输数据按顺序依次一bit位接一bit位进行传输,通常数据在一根数据线或一对差分线上传输。

比如,当传输1字节信息时,并行通讯有8根信号线实现同时传输,假如耗时为1T,而串行是在一根信号线上,把数据排成一行、一位一位传输,需要传8次,因此耗时为8T。

1a9074d4-694f-11ed-8abf-dac502259ad0.png

并行通信:计算机与I/O设备之间,通过多条传输线,可以同时传输多个bit位的信号。

并行通讯的效率高,但是成本高、对信号线路要求高,一般应用于快速设备之间近距离传输,譬如CPU 与存储设备、存储器与存储器、主机与打印机等都采用并行通讯。

串行通讯效率较低,但是对信号线路要求低,抗干扰能力强,同时成本也相对较低,一般用于计算机与计算机、计算机与外设之间远距离通讯。

1aa343ca-694f-11ed-8abf-dac502259ad0.png

单片机中的串口通讯

大家需要注意这里的串口通讯和我们上面谈到的串行通讯不是一个东西,串口通讯是串行通讯中的一种,在单片机调试中非常常见,也是学习单片机必须进行学习的知识,这里我们以单片机中常用的RS-232串口来进行讲解。

1ab9c1ea-694f-11ed-8abf-dac502259ad0.png

在上面的通讯方式中,两个通讯设备之间通过串口信号线建立起连接,串口信号线中使用"RS-232标准"传输数据信号。由于RS-232电平标准的信号不能直接被控制器直接识别,所以这些信号会经过一个"电平转换芯片"转换成控制器能识别的"TTL校准"的电平信号,才能实现通讯。

我们知道常见的电子电路中常使用TTL的电平标准,理想状态下,使用5V表示二进制逻辑1,使用0V表示逻辑0;而为了增加串口通讯的远距离传输及抗干扰能力,它使用-15V表示逻辑1,+15V表示逻辑0。

1ad61804-694f-11ed-8abf-dac502259ad0.png

因为控制器一般使用TTL电平标准,所以常常会使用CH340芯片对TTL及RS-232电平的信号进行互相转换。

1af5a91c-694f-11ed-8abf-dac502259ad0.png

分析串口通讯波形

在分析波形之前我们先来看一些基础概念,这样有利于我们对波形的分析:

起始位:先发出一个逻辑”0”的信号,表示传输数据的开始。

校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性。就比如传输“A”(01000001)为例。(字符‘A’的二进制是 0100 0001)此位还可以去除,即不需要奇偶校验位。

当为奇数校验:”A”字符的8个bit位中有两个1,那么奇偶校验位为1才能满足1的个数为奇数(奇校验)。

当为偶数校验:”A”字符的8个bit位中有两个1,那么奇偶校验位为0才能满足1的个数为偶数(偶校验)。

停止位:它是一帧数据的结束标志。可以是1bit、1.5bit、2bit的空闲电平。

空闲位:没有数据传输时线路上的电平状态,为逻辑1。

传输方向:即数据是从高位(MSB)开始传输还是从低位(LSB)开始传输。

uart数据传输格式:刚开始传输一个起始位——传输数据位——校验位(可不需要此位)——停止位。这样一帧的数据就传输完了。接下来接着像这样一直传送。

波形1

用串口工具发送0XD6,即二级制 1101 0110 ,在示波器上如此显示。

串口设置:波特率9600,停止位1位,无奇偶校验位。

波形如图所示:

1b10cdb4-694f-11ed-8abf-dac502259ad0.png

由示波器可以看出,最左边一个低电平表示0,起始位;然后依次是0110 1011,正好和发送的数据最高位和最低位反过来,至于为什么会反过来我们上面也介绍过了,相比大家也能够理解。

波形2

用串口发送0x75,就是二进制 0111 0101,如下图所示。

串口设置:波特率9600,停止位1位,无奇偶校验位。

1b73c950-694f-11ed-8abf-dac502259ad0.png

同理,最左侧的为起始位,低电平0, 然后LSB传输。1010 1110依次传输到示波器。

波形3

用串口发送0x75,就是二进制 0111 0101,

串口设置:波特率9600,停止位1位,奇校验。

1bf66f0e-694f-11ed-8abf-dac502259ad0.png

奇校验就是要保证这一帧里的所有BIT 有1的数为奇数,0x75已经有5个1了,所以奇偶校验位为0即可。

如果为偶校验,那么最后一位应该是高电平1,就会有6个1,以此保证所有的1的数量为偶数。

波形4

连发发送两个16进制数据0x75(0111 0101) 0x6B (0110 1011)

串口设置:波特率9600,停止位1位,无奇偶校验位。

1c6ac3a4-694f-11ed-8abf-dac502259ad0.png

结语

当然串行通讯不仅这一种,还是很多其他的例如I2C、SPI、CAN等,大家可以多了解一下,每个通讯方法都有着自己的通讯协议,我们如果想要使用的话需要根据自己实际需求,选择合适的通讯方式。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据传输
    +关注

    关注

    9

    文章

    1809

    浏览量

    64426
  • 通信
    +关注

    关注

    18

    文章

    5953

    浏览量

    135803
  • 串口
    +关注

    关注

    14

    文章

    1540

    浏览量

    76101

原文标题:串行通讯讲解与分析,看了就明白了!

文章出处:【微信号:嵌入式悦翔园,微信公众号:嵌入式悦翔园】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    TI电量计通讯异常的分析经验

    电子发烧友网站提供《TI电量计通讯异常的分析经验.pdf》资料免费下载
    发表于 08-23 10:12 0次下载
    TI电量计<b class='flag-5'>通讯</b>异常的<b class='flag-5'>分析</b>经验

    第14章-蓝牙遥控小车 蓝牙串口通讯讲解蓝牙APP遥控小车 蓝牙串口通讯讲解

    第14章-蓝牙遥控小车 手把手做蓝牙APP遥控小车 蓝牙串口通讯讲解
    的头像 发表于 08-21 16:24 534次阅读
    第14章-蓝牙遥控小车 蓝牙串口<b class='flag-5'>通讯</b><b class='flag-5'>讲解</b>蓝牙APP遥控小车 蓝牙串口<b class='flag-5'>通讯</b><b class='flag-5'>讲解</b>

    CAN不通讯导致CE电流法测试超标整改分析案例

    CAN不通讯导致CE电流法测试超标整改分析案例
    的头像 发表于 07-05 08:17 664次阅读
    CAN不<b class='flag-5'>通讯</b>导致CE电流法测试超标整改<b class='flag-5'>分析</b>案例

    plc通讯有哪些类型和特点

    控制信号来实现对生产过程的控制。PLC通讯是PLC与外部设备之间进行数据交换的过程,是实现工业自动化的关键技术之一。本文将详细介绍PLC通讯的类型和特点。 一、PLC通讯的类型 串行
    的头像 发表于 07-01 10:10 941次阅读

    频谱仪测量功能之占用带宽、时域功率、谐波分析讲解

    频谱仪测量功能之占用带宽、时域功率、谐波分析讲解
    的头像 发表于 06-26 14:34 1180次阅读
    频谱仪测量功能之占用带宽、时域功率、谐波<b class='flag-5'>分析</b><b class='flag-5'>讲解</b>

    深度解析高速串行信号的误码测试|线上讲堂

    2024年6月25日周二19:00-20:30中星联华科技将举办《深度解析高速串行信号的误码测试》“码”上行动系列线上讲堂。将深入讲解当前高速信号的发展趋势、挑战及难点,分析高速串行
    的头像 发表于 06-17 08:32 348次阅读
    深度解析高速<b class='flag-5'>串行</b>信号的误码测试|线上讲堂

    欧姆龙plc之间怎么通讯

    。本文将详细介绍欧姆龙PLC之间的通讯方式、通讯协议、硬件连接以及编程实现等方面的内容。 欧姆龙PLC通讯方式 欧姆龙PLC支持多种通讯方式,包括但不限于以下几种: 1.1
    的头像 发表于 06-11 16:27 3669次阅读

    按照RS232通讯协议采用ARMSWD软件进行串行下载,下载过程一直显示received waiting for correct ID string的原因?

    进行串行下载的时候,按照RS232的通讯协议,采用ARMSWD软件进行下载,但是下载过程一直显示received waiting for correct ID string。请问是什么原因导致的。
    发表于 01-11 07:05

    各类通讯协议及区别汇总

    串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。
    的头像 发表于 12-27 16:17 1464次阅读
    各类<b class='flag-5'>通讯</b>协议及区别汇总

    无线通讯干扰源分析及解决办法

    “无线通讯设备稳定不稳定?”这个问题若是被工厂的技术人员提出的话,99%的人都希望得到一个关于无线产品可靠性的答案。如果单从技术层面来说明,由实验室出具的产品可靠性数据分析报告就可回答这个问题。但
    的头像 发表于 12-27 09:07 610次阅读
    无线<b class='flag-5'>通讯</b>干扰源<b class='flag-5'>分析</b>及解决办法

    串行通信和以太网通信,该怎么选才好?

    )的数据传输方式。什么是串行通信?串行通信是通过信道或计算机总线将数据按照顺序一位一位的发送数据的通信。串行通信协议通过串行数据线缆在两个设备之间传输信息。
    的头像 发表于 12-22 08:20 1041次阅读
    <b class='flag-5'>串行</b>通信和以太网通信,该怎么选才好?

    请问AD2S1210串行通讯的最大波特率是多少?

    请问AD2S1210串行通讯的最大波特率是多少?
    发表于 12-18 08:10

    常见eSPI通讯数据包的分析

    eSPI 通讯一般来说无需特别关注,因为通讯都是 PCH(eSPI_Master)和 EC(eSPI_Slave)硬件完成的,软件不参与。
    的头像 发表于 11-18 15:35 2363次阅读
    常见eSPI<b class='flag-5'>通讯</b>数据包的<b class='flag-5'>分析</b>