一篇文章读懂什么是串口通信及其工作原理

介绍

串行通信是在数据处理设备和外围设备之间传输信息的最广泛使用的方法。一般而言,沟通意味着通过书面文件,口头语言,音频和视频课程在个人之间交换信息。

每台设备都可能是您的个人计算机或移动设备在串行协议上运行。该协议是安全可靠的通信形式,具有由源主机(发送方)和目的地主机(接收方)寻址的一组规则。为了获得更好的洞察力,我已经解释了串行通信的概念。

在嵌入式系统中,串行通信是以串行数字二进制形式使用不同方法交换数据的方式。用于数据交换的一些众所周知的接口是RS-232,RS-485,I2C,SPI等。

什么是串口通讯?

在串行通信中,数据是二进制脉冲的形式。换句话说,我们可以说二进制1表示逻辑高电平或5伏特,零表示逻辑低电平或0伏特。串行通信可以采用多种形式,具体取决于传输模式和数据传输的类型。该传输模式被归类为单工,半双工和全双工。每种传输模式都有一个源(也称为发送器)和目的地(也称为接收器)。

该单纯形法是单向通信技术。只有一个客户端(发送方或接收方一次处于活动状态)。如果发送者发送,接收者只能接受。无线电和电视传输是单工模式的例子。

在半双工模式下,发送方和接收方都是活动的但不是一次,即如果发送方发送,接收方可以接受但不能发送,反之亦然。一个很好的例子是互联网。如果客户端(笔记本电脑)发送网页请求,则Web服务器处理该应用程序并发回该信息。

在全双工模式在世界上被广泛使用的通信。这里发送方和接收方都可以同时发送和接收。一个例子是你的智能手机。

除传输模式外,我们还必须考虑主机(发送方或接收方)的字节顺序和协议设计。字节顺序是将数据存储在特定内存地址的方式。根据数据对齐,endian被归类为

  • Little Endian和
  • Big Endian。

以此示例来理解字节序的概念。假设,我们有一个32位十六进制数据ABCD87E2。这些数据如何存储在内存中?为了清楚地了解,我已经解释了Little Endian和Big Endian之间的区别。

数据传输可以通过两种方式进行。它们是串行通信和并行通信。串行通信是一种使用双线即发送器(发送器)和接收器逐位发送数据的技术。使用类似技术的通讯产品包括串口服务器,以太网模块等产品。

例如,我想从发送器向接收器发送8位二进制数据11001110。但是,哪一点首先消失?最高有效位 - MSB(第 7 位)或最低有效位 - LSB(第 0 位)。我们不能说。在这里,我正在考虑LSB首先移动(对于小Endian)。

从上图中可以看出每个时钟脉冲; 发送器将一位数据发送到接收器。

并行通信一次移动8,16或32位数据。打印机和Xerox机器使用并行通信来加快数据传输速度。

串行和并行通信之间的区别

串行通信一次只发送一位。因此,这些需要更少的I / O(输入 - 输出)线。因此,占用更少的空间并且更能抵抗串扰。串行通信的主要优点是整个嵌入式系统的成本变得便宜并且可以长距离传输信息。串行传输用于DCE(数据通信设备)设备,如调制解调器。

在并行通信中,一次发送一块数据(8,16或32位)。因此,每个数据位都需要一个单独的物理I / O线。并行通信的优点是速度快但缺点是它使用了更多的I / O(输入 - 输出)线。并行传输用于PC(个人计算机),用于互连CPU(中央处理单元),RAM(随机存取存储器),调制解调器,音频,视频和网络硬件。

注意:如果您的集成电路或处理器支持较少量的输入/输出引脚,则最好选择串行通信

为了便于理解,这里是串行和并行通信的比较。

串行通信 并行通信
在一个时钟脉冲逐位发送数据 一次传输一大块数据
需要一根电线传输数据 发送‘n‘位需要‘n‘行数
通讯速度很慢 通讯速度快
安装成本低 安装成本很高
优选用于长途通信 用于短距离通信
示例:计算机到计算机 计算机到多功能打印机

时钟同步

为了有效地处理串行设备,时钟是主要来源。时钟故障可能导致意外结果。每个串行设备的时钟信号不同,它分为同步协议和异步协议。

同步串行接口

同步串行接口上的所有设备都使用单CPU总线来共享时钟和数据。由于这个事实,数据传输更快。优点是波特率不会失配。此外,接口组件需要更少的I / O(输入 - 输出)线。例如I2C,SPI等。

异步串行接口

该异步接口不具有外部时钟信号,并将其即依赖于四个参数

  1. 波特率控制
  2. 数据流控制
  3. 传输和接收控制
  4. 错误控制。

异步协议适用于稳定通信。这些用于长距离应用。异步协议的示例是RS-232,RS-422和RS-485。

串口通讯如何工作?

微控制器和微处理器等高级CPU 利用串行通信与外部世界以及芯片外围设备进行通信。为了熟悉,让我们举一个简单的例子。假如你想把一个机器的串口数据发送到电脑上呢?串口服务器假设您想将笔记本电脑中的文件发送到智能手机。你会怎么发送?可能使用蓝牙或WiFi协议,对。

因此,以下是建立串行通信的步骤

  1. 添加连接。

在第一步中,您的笔记本电脑将搜索100米附近的设备,并列出找到的设备。此过程通常称为漫游。

  1. 选择要通信的设备。

要连接到您的手机,必须完成配对。软件中已存在默认配置。因此无需手动配置波特率。除此之外,还有四个未知规则。它们是波特率,数据位选择(成帧),起止位和奇偶校验。

#1什么是波特率?

波特率是以每秒比特数的形式从发送器向接收器传输数据的速度。一些标准波特率是1200,2400,4800,9600,57600。

您必须在两侧设置相同的波特率(移动和笔记本电脑)。

注意:波特率越高,可以在更短的时间内传输更多数据。

但是,由于接收器端的采样频率不匹配,我建议使用最多115200作为安全限制。

#2框架

成帧显示您要从主机设备(笔记本电脑)发送到移动设备(接收器)的数据位数。是5,6,7或8位吗?大多数设备,8位是优选的。在选择8位数据块之后,必须由发送方和接收方同意字节顺序。

#3同步

发送器将同步位( 1个起始位和1或2个停止位)附加到原始数据帧。同步位有助于接收器识别数据传输的开始和结束。此过程称为异步数据传输。

#4错误控制

由于接收器端的外部噪声可能会发生数据损坏。获得稳定输出的唯一解决方案是检查奇偶校验。

如果二进制数据包含偶数个1,则称为偶校验,奇偶校验位设置为‘ 1 ‘。如果二进制数据包括奇数1,则称为奇校验,现在奇偶校验位设置为‘ 0 ‘。

异步串行协议

开始使用嵌入式系统时,最常见的问题是使用异步协议的原因?

  • 在更远的距离移动信息
  • 用于更可靠的数据传输。

一些异步通信协议是:

RS-232协议

  • RS232是第一个用于连接电话调制解调器的串行协议。RS代表推荐标准,现在它已改为EIA(电子工业联盟)/ TIA(电信工业协会)。
  • 它还用于调制解调器,鼠标和CNC(计算数字计算)机器。您只能将单个发射器连接到单个接收器。
  • 它支持全双工通信,允许波特率高达1Mbps。
  • 电缆长度限制在50英尺。

如您所知,存储在内存中的数据采用字节形式。您可能会怀疑字节数据如何转换为二进制位?答案是串口。

串口有一个名为UART的内部芯片。UART是通用异步接收器发送器的首字母缩写,它将并行数据(字节)转换为按位串行形式。

RS-232接口

该RS232串口有九个脚,男或女款型。RS 232C串行通信接口是RS232的后续版本。

RS232中的所有功能都存在于RS232C型号中,但它有25个引脚。在25或9个引脚中,我们仅使用三个引脚来连接终端设备。

RS422接口

我们可以使用RS232仅传输高达1Mpbs的数据。为了克服这个问题,RS422进入了图片。RS422是一款多点串行接口。我们可以使用单总线一次将10个发射器连接到10个接收器。它使用两根双绞线电缆(差分配置)发送数据。电缆长度为4000英尺,波特率为10Mbps。

RS485接口

RS485是业界首选的协议。与RS422不同,您可以在差分配置中连接32个线路驱动器和32个接收器。发射器也称为线路驱动器。但是,一次只有一个发送器处于活动状态。

注意:对于RS232和RS485,您必须手动终止连接。

Wire协议

一根线类似于I2c协议。但是,不同之处在于一条线协议使用单条数据线和地线。它不需要时钟信号,从机使用内部晶体振荡器进行时钟控制。它提供半双工通信。

一根线使用64位寻址方案。单线接口的优点是,它支持低成本的长距离通信。但是,缺点是它的速度较慢。

异步有线协议非常适合长距离通信。但是,给同步串行接口提供范围有一个缺点。

缺点是,如果需要连接更多的发射器和接收器,则安装成本会很高。

同步串行协议

同步通信协议是板载外设的最佳资源。优点是您可以在同一总线上连接更多设备。一些同步协议是I 2 C,SPI,CAN和LIN。

I2C协议

I2c(内部集成电路)是一种双线双向协议,用于在同一总线上的不同设备之间交换数据。I2c使用7位或10位地址,允许最多连接1024个设备。但是,它需要时钟信号来产生启动和停止条件。其优点是它提供400 kbps的数据传输。它适用于车载通信。

SPI协议

SPI(串行外设接口)协议以连续的流方式发送和接收数据,不会中断。建议该协议用于高速数据通信。它可以提供的最大速度是10 Mbps。

与i2c不同,SPI有4条线。它们是MOSI(主输出从机),MISO(主机输出),时钟和从机选择信号。从理论上讲,我们可以连接无限数量的从设备,实际上它取决于总线的负载电容。

CAN协议

该协议专用于车辆系统或汽车。它是一种面向消息的协议,用于多路电线以节省铜。它是一种多主多串行总线,用于车辆自动启动/停止,防撞系统等应用。

USB

USB接口是串行或并行端口的最佳替代方案。与USB端口相关的数据传输比串行和并行接口快得多。USB支持从1.5 Mbps(USB 1.0)到4.8 Gbps(USB 3.0)的速度。今天,大多数嵌入式设备使用USB OTG(On the Go编程)技术将hex文件转储到微控制器。

Microwire

Microwire是一种三线串行通信协议。它在微控制器上有一个串行I / O端口,用于连接外围芯片。它支持高达3Mbps的速度。它比i2c和SPI协议的子集更快。

结论

串行通信是电子和嵌入式系统领域的重要组成部分。如果两个设备想要在同一总线上交换信息,则数据传输速率至关重要。因此,有必要为任何应用选择有效的串行协议

更多物联网通信领域技术文章欢迎访问:http://shop.usr.cn/

原文地址:https://www.cnblogs.com/mokuai/p/11772491.html

时间: 2024-11-10 10:33:49

一篇文章读懂什么是串口通信及其工作原理的相关文章

一篇文章读懂Java类加载器

Java类加载器算是一个老生常谈的问题,大多Java工程师也都对其中的知识点倒背如流,最近在看源码的时候发现有一些细节的地方理解还是比较模糊,正好写一篇文章梳理一下. 关于Java类加载器的知识,网上一搜一大片,我自己也看过很多文档,博客.资料虽然很多,但还是希望通过本文尽量写出一些自己的理解,自己的东西.如果只是重复别人写的内容那就失去写作的意义了. 类加载器结构 名称解释: 根类加载器,也叫引导类加载器.启动类加载器.由于它不属于Java类库,这里就不说它对应的类名了,很多人喜欢称Boots

趣味学习:一篇文章读懂三层交换机【新任帮主】

为什么我们说三层交换机的三层转发性能要比路由器的效率要高的多?有的时候在很多书上面会提及到现在路由器的软件的做的也非常强大,几乎也能够达到限速转发的能力: 软件能够和硬件比吗,不太可能:交换机之所以转发速度快是因为交换机使用的专门的ASIC硬件转发卡,而路由器是software-based 的转发: 我们习惯说,在二层网络环境中相同vlan之间可以通信,不同vlan之间不可以通信,如果想通信必须借助三层设备,所以说三层交换机必须要做的事情是路由转发,但是具体的工作原理是什么样的呢 ,接着看吧!

【朝花夕拾】一篇文章搞懂Android跨进程通信

前言 只要是面试中高级工程师岗位,Android跨进程通信就是最受面试官青睐的知识点.Android系统的运行由大量相互独立的进程相互协助来完成的,所以Android进程间通信问题,是做好Android开发高级工程师必须要跨过的一道坎.如果您还对这方面的知识还做不到如数家珍,那就和我一起来攻克它吧! 本文主要包含了如下内容: 其行文脉络大致如下,希望能加深读者对这方面内容的记忆:(1)Android基于Linux系统,所以先说系统进程相关知识和Linux IPC.(2)总结Android的IPC

一篇文章读懂volatile

前提 计算机在执行程序代码的时候,实际上执行的是一条条指令,而这些指令,肯定会涉及到数据的读取和写入操作. 在我们的程序中,所定义的变量等临时数据,计算机会放在内存中,也称为主存. 那么问题来了,CPU执行指令的速度是很快的,但是从内存中读取数据和写入数据的过程,相比CPU执行指令的速度来说是比较慢的.如果每个程序都是直接从内存中读取数据,那么由于CPU执行指令的速度和数据的读取写入操作的速度不一致,那么肯定会大大降低了执行的效率,所以在CPU里面引入了高速缓存. 当程序在运行过程中,会将运算需

【转】一篇文章读懂人力资源三支柱体系(COE?BP?SSC)

通过人力资源转型,提升效率和效能   作者:Sharon Li,翰威特大中华区咨询总监. 杰克韦尔奇曾说过“人力资源负责人在任何企业中都应该是第二号人物”,但在中国,99%的企业都做不到.原因很简单,人力资源部没创造这么大的价值——业务增长很快,但HR总在拖后腿.有些人说人力资源部是“秘书”,有人说人力资源是“警察”,在中国,真正认为人力资源部是“业务伙伴”的,真是凤毛麟角. 研究证明,人力资源部可以成为业务驱动力,关键是HR自身要转型. 1. 重新定位人力资源部门 人力资源部成为业务的驱动力,

(好文推荐)一篇文章看懂JavaScript作用域链

闭包和作用域链是JavaScript中比较重要的概念,首先,看看几段简单的代码. 代码1: 1 var name = "stephenchan"; 2 var age = 23; 3 function myFunc() { 4 alert(name); 5 var name = "endlesscode"; 6 alert(name); 7 alert(age); 8 alert(weight); 9 } 10 myFunc(); 11 myFunc(); 上述代码

一篇文章看懂Android学习最佳路线

为什么中高级Android程序员不多呢?这是一个问题,我不好回答,但是我想写一篇文章来描述下Android的学习路线,期望可以帮助更多的Android程序员提升自己. 作者:来源:Android开发中文站|2015-11-12 10:40 收藏 分享 前言 看到一篇文章中提到"最近几年国内的初级Android程序员已经很多了,但是中高级的Android技术人才仍然稀缺",这的确不假,从我在百度所进行的一些面试来看,找一个适合的高级Android工程师的确不容易,一般需要进行大量的面试才

一篇文章看懂spark 1.3+各版本特性

Spark 1.6.x的新特性Spark-1.6是Spark-2.0之前的最后一个版本.主要是三个大方面的改进:性能提升,新的 Dataset API 和数据科学功能的扩展.这是社区开发非常重要的一个里程碑.1. 性能提升根据 Apache Spark 官方 2015 年 Spark Survey,有 91% 的用户想要提升 Spark 的性能.Parquet 性能自动化内存管理流状态管理速度提升 10X 2. Dataset APISpark 团队引入了 DataFrames,新型Datase

angularjs 一篇文章看懂自定义指令directive

 壹 ? 引 在angularjs开发中,指令的使用是无处无在的,我们习惯使用指令来拓展HTML:那么如何理解指令呢,你可以把它理解成在DOM元素上运行的函数,它可以帮助我们拓展DOM元素的功能.比如最常用ng-click可以让一个元素能监听click事件,这里你可能就有疑问了,同样都是监听为什么不直接使用click事件呢,angular提供的事件指令与传统指令有什么区别?我们来看一个例子: <body ng-controller="myCtrl as vm"> <d