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

    文章

    2076

    浏览量

    67175
  • 通信
    +关注

    关注

    18

    文章

    6318

    浏览量

    139579
  • 串口
    +关注

    关注

    15

    文章

    1607

    浏览量

    81954

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Xilinx FPGA串行通信协议介绍

    Xilinx FPGA因其高性能和低延迟,常用于串行通信接口设计。本文深入分析了Aurora、PCI Express和Serial RapidIO这三种在Xilinx系统设计中关键的串行通信协议。介绍了它们的特性、优势和应用场景
    的头像 发表于 11-14 15:02 1940次阅读
    Xilinx FPGA<b class='flag-5'>串行</b>通信协议介绍

    蓝牙打印机电路怎么设计?芯片如何选型?APP和小程序的BLE通讯协议如何制定?

    与蓝牙芯片通讯的BLE协议怎么制定?蓝牙BLE芯片如何选型?一文给你讲解清楚
    的头像 发表于 09-08 10:02 804次阅读
    蓝牙打印机电路怎么设计?芯片如何选型?APP和小程序的BLE<b class='flag-5'>通讯</b>协议如何制定?

    通讯中浮点数数据的处理

    Modbus 通讯在工业现场应用非常广泛,当然也会有多技术难点,本文主要讲解基于通讯的数据处理,不讲通讯的基础知识,你过你连Modbus通讯
    的头像 发表于 08-19 13:48 1239次阅读
    <b class='flag-5'>通讯</b>中浮点数数据的处理

    PLC之间跨区域通讯!无线通讯方案全解析

    。 在这种情况下,可以给PLC配备相应的无线通讯模块来实现 PLC与PLC无线通讯。 串口无线通讯模块和以太网无线通讯模块,都可以妥善地实现PLC之间的远距离数据传递与共享。 一、串口
    的头像 发表于 07-21 16:57 558次阅读
    PLC之间跨区域<b class='flag-5'>通讯</b>!无线<b class='flag-5'>通讯</b>方案全解析

    【微五科技CF5010RBT60开发板试用体验】+串行通讯及使用

    CF5010RBT60开发板,可提供4个通讯串口,见图1所示。 图1 串口电路 其中USART1被用作ISP下载接口,当然它也可以用于常规的串行通讯,其电路如图2所示。 图2 串口电路 而在例程中
    发表于 07-19 21:03

    LXM18与M241进行MODBUS串行通讯案例

    Lexium18 系列伺服驱动器具有RS-485的串行通讯功能,使用此功能可实现控制 伺服系统、读取和写入驱动器参数以及监视伺服系统状态等功能。
    的头像 发表于 07-10 10:56 1290次阅读
    LXM18与M241进行MODBUS<b class='flag-5'>串行</b><b class='flag-5'>通讯</b>案例

    modbusRTU转profinet网关与HMLDM-UD100A激光测距仪通讯案例

    在现代工业生产与自动化控制领域,精确的距离测量以及设备间的高效通讯至关重要。今天,就为大家详细讲解一下HMLDM-UD100A型工业激光测距仪与modbusRTU转profinet网关的通讯案例。
    的头像 发表于 06-28 14:28 483次阅读
    modbusRTU转profinet网关与HMLDM-UD100A激光测距仪<b class='flag-5'>通讯</b>案例

    如何用普源DHO924示波器构建高速串行信号分析系统

    在高速数字通信领域,如USB、PCIe、以太网等协议的测试与调试中,准确分析串行信号的时序、抖动、眼图等参数是确保系统稳定性和数据传输可靠性的关键。普源DHO924示波器凭借其200MHz带宽、高
    的头像 发表于 06-23 14:15 565次阅读
    如何用普源DHO924示波器构建高速<b class='flag-5'>串行</b>信号<b class='flag-5'>分析</b>系统

    第十三章 通讯的基本概念

    本章介绍通讯基本概念,包括串行/并行、全双工/半双工/单工、同步/异步通讯,还提及通讯速率中比特率与波特率的概念。
    的头像 发表于 05-22 17:29 1752次阅读
    第十三章 <b class='flag-5'>通讯</b>的基本概念

    RS485串行通信协议介绍

    在上期我们介绍了RS232串行通讯,本期我们将进一步深入探讨另一种广泛应用于工业自动化和数据通信领域的串行通信标准——RS485。
    的头像 发表于 05-15 11:42 1158次阅读
    RS485<b class='flag-5'>串行</b>通信协议介绍

    ModbusRTU与PROFIBUS DP网关通讯技巧!

    在工业自动化领域,随着系统的不断升级和技术的发展,不同通讯协议之间的兼容性问题成为一大挑战。Modbus RTU作为一种广泛应用的串行通信协议,因其简单、可靠而被广泛使用;而PROFIBUS DP
    的头像 发表于 04-28 14:18 550次阅读
    ModbusRTU与PROFIBUS DP网关<b class='flag-5'>通讯</b>技巧!

    电容屏串行接口

    帝晶智慧屏电容屏串行接口
    的头像 发表于 03-11 17:21 1653次阅读

    一看就懂!动画图解常见串行通讯协议:SPI、I²C、UART、红外

    通过UART来调试MCU 图1.3.2:RS-232通过电平转换芯片与MCU通讯 四、红外控制 图1.4.1:红外控制信号也是一个串行通讯信号 图1.4.2:红外信号接收与放大整形电路 图1.4.3
    发表于 02-10 11:45

    一文解读MCU与电脑的通讯方式-串口

    你这个小板子和电脑通讯,做个上位机,最常用的接口是什么?我想大家闭眼说-串口! 串口是什么? 串行接口(Serial port),也称串行接口或串行端口,
    的头像 发表于 01-13 09:36 1825次阅读
    一文解读MCU与电脑的<b class='flag-5'>通讯</b>方式-串口

    通讯线和屏蔽线有什么区别

    通讯线和屏蔽线在多个方面存在明显的区别,以下是详细的对比分析
    的头像 发表于 12-14 11:28 1672次阅读