串行通信中的同步方式(Synchronous)与异步方式(Asynchronous)stty -F设置波特率

文章目录

  • 串行通信中的同步方式与异步方式
    • 概述
    • 同步串行通信
      • 基本原理
        • 数据帧结构
      • 技术挑战
        • 1. 时钟同步:确保发送方和接收方时钟的同步是同步通信中的一个关键技术挑战。
          • 1. 共享的时钟信号
            • a. 独立的时钟线
            • b. 无线时钟同步
          • 2. 编码方式
          • 3. 帧同步
          • 4. PLL(相位锁环)
          • 5. 时钟恢复算法
          • 6. 参考时钟源
          • 总结
        • 2. 错误检测:在连续的数据流中,发现和纠正错误比异步通信更复杂。
        • 3. 长距离通信问题:在长距离通信中,同步信号可能会因为信号衰减而失真。
      • 应用实例
    • 异步串行通信
      • 基本原理
        • 数据帧结构
      • 技术挑战
        • 1. 波特率匹配:发送方和接收方必须设置相同的波特率才能正确传输数据。
        • 2. 字符间间隔:数据传输不是连续的,每个字符的传输之间可能有不确定的时间间隔。
        • 3. 噪声敏感性:由于起始和停止位的存在,异步通信对噪声更敏感,容易出错。
      • 应用实例
    • 总结

串行通信中的同步方式与异步方式

概述

串行通信是计算机世界中的一种基本数据传输方式,它按位序列传输数据。在串行通信中,有两种主要的数据同步方法:同步(Synchronous)和异步(Asynchronous)。这两种方式有各自独特的特点、应用场景以及优缺点。

同步串行通信

基本原理

同步串行通信依靠一个共享的时钟信号来同步发送端和接收端。在此过程中,数据以连续的流形式传输,不需要开始和停止位。发送和接收设备必须事先协商好传输速率,并实时同步它们的时钟。

数据帧结构

在同步通信中,数据通常被组织成帧。每个帧可以包含多个字节,并由一个特定的标志序列(如8位模式01111110)来标识帧的开始和结束。这些帧之间没有间隔,因此效率较高。

技术挑战

1. 时钟同步:确保发送方和接收方时钟的同步是同步通信中的一个关键技术挑战。

为了确保发送方和接收方时钟的同步,有以下解决办法:

1. 共享的时钟信号

共享的时钟信号指的是发送方和接收方都依赖同一个时钟信号来控制数据的发送和接收时机。这个共享时钟可以通过多种方式实现:

a. 独立的时钟线

在某些接口标准(如SPI)中,除了数据线之外,还有一条专门的时钟线(SCLK),用于传输时钟信号。接收方根据这个时钟信号来确定何时读取数据线上的数据。

b. 无线时钟同步

在无线通信系统中,例如GPS或者某些无线网络技术,可以通过特殊的信号或协议来同步不同设备间的时钟。

2. 编码方式

在没有单独时钟线的情况下,可以使用特殊的编码方式将时钟信息编码到数据中。例如,曼彻斯特编码会在每个比特的中间点引入一个电平变化,这个变化可以被用作时钟同步的信号。

3. 帧同步

在某些协议中,每个数据包的开始会有一个特定的帧同步序列(例如,在HDLC协议中使用特定的标志字节0x7E)。接收方通过识别这个序列来实现对整个数据帧的同步。

4. PLL(相位锁环)

接收方使用PLL技术来调整本地振荡器,以匹配发送方的时钟信号。这样,即使没有直接的时钟线,接收方也可以从数据流中恢复出时钟信号,并与发送方保持同步。

5. 时钟恢复算法

一些高级的串行通信系统使用复杂的时钟恢复算法来动态调整本地时钟,使其与接收到的数据流同步。这些算法通常基于统计分析和信号处理技术。

6. 参考时钟源

在一些设计中,发送方和接收方可能都有访问到一个共同的、精确的参考时钟源,如原子钟或GPS时钟。他们各自根据这个参考时钟来校准自己的本地时钟,从而达成同步。

总结

共享的时钟信号是确保同步串行通信成功的一个重要组成部分,它可以大幅度降低数据误码率,并提高通信效率。然而,共享时钟信号的实现可能会增加系统的复杂性和成本,因此需要在设计时权衡利弊。

2. 错误检测:在连续的数据流中,发现和纠正错误比异步通信更复杂。
3. 长距离通信问题:在长距离通信中,同步信号可能会因为信号衰减而失真。

应用实例

同步串行通信常用于高速、大容量的数据传输场合,如光纤通信、高速局域网等。

// 伪代码表示同步通信的时钟同步过程
initialize PLL()
while (communication is active) {sample incoming data streamadjust PLL based on data patternsynchronize clock signal with PLL output
}

异步串行通信

基本原理

与同步通信不同,异步通信不依赖于共享的时钟信号。每个字符或数据单元以独立的格式传输,通常前面有一个起始位,后面跟着一个或多个停止位。

数据帧结构

异步通信中的数据帧结构相对简单。一个典型的数据帧包括:

  • 起始位(通常为0)
  • 数据位(5到9位)
  • 可选的奇偶校验位
  • 停止位(一个或多个,通常为1)

技术挑战

1. 波特率匹配:发送方和接收方必须设置相同的波特率才能正确传输数据。

波特率的配置通常在设备初始化时完成,下面是一个配置串口波特率的示例命令(Linux环境下):

stty -F /dev/ttyS0 9600

该命令使用了stty程序,这是一个用于改变和打印终端行设置的常用工具。

以下是命令各个部分的详细说明:

  • stty: 是“set terminal type”的缩写,它用于更改和显示终端接口的各种设置。

  • -F /dev/ttyS0: 这部分指定了要操作的设备文件。-F选项后面跟着的是设备文件路径,其中/dev/ttyS0通常代表系统中的第一个物理串行端口。如果你的系统有多个串行端口,它们可能会被表示为/dev/ttyS1, /dev/ttyS2等。

  • 9600: 这是波特率设置,表示每秒传输的符号数(即比特率)。在这个例子中,9600意味着串行端口被配置为以9600波特的速率进行通信。

因此,整个命令stty -F /dev/ttyS0 9600的含义是将名为/dev/ttyS0的串行端口配置为9600波特的传输速率。这个设置对于连接到该串行端口的设备来说非常重要,因为发送和接收设备必须在相同的波特率下操作才能正确地通信。如果波特率不匹配,数据可能会被错误地解释,导致通信错误。

值得注意的是,除了波特率外,stty命令还可以用来设置奇偶校验、数据位数、停止位数以及流控等多种串行通信相关参数。

2. 字符间间隔:数据传输不是连续的,每个字符的传输之间可能有不确定的时间间隔。
3. 噪声敏感性:由于起始和停止位的存在,异步通信对噪声更敏感,容易出错。

应用实例

异步串行通信广泛应用于低速设备的通信,如鼠标、键盘和其他串行外设。

// 伪代码表示异步通信的数据接收过程
initialize serial port with baud rate
while (data is available) {wait for start bitread data bitsif (parity bit is present) {check parity}verify stop bitif (data frame is valid) {process data}
}

总结

同步和异步串行通信各有其优势和应用场景。同步通信适用于需要高速、连续数据流的场合,而异步通信则更适用于低速、不连续数据传输的场景。了解它们的工作原理和技术挑战对于设计有效和可靠的通信系统至关重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/150328.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

excel-gen.js 导出excel 功能

目录 概要 整体架构流程 html部分: js部分: json部分: 小结 概要 功能会使用到如下插件: jszip.min.js FileSaver.js jquery.min.js excel-gen.js highcharts.js exporting.js export_data.js 主要是highcharts图表…

小迪安全笔记(3)——基础入门3、基础入门4

文章目录 一、抓包&封包&协议&APP&小程序&PC应用&web应用二、30余种加密编码进制&web&数据库&系统&代理 一、抓包&封包&协议&APP&小程序&PC应用&web应用 APP&小程序&PC抓包HTTP/S数据——Charles、F…

提高视频性能的 5 种方法

摆脱共享托管计划 如果您的网站每月收到数千名访问者,那么现在是时候放弃许多企业家和小型企业开始使用的共享托管计划了。在启动网站时选择廉价的托管计划是可以理解的,因为此类计划通常足以使用一年或更长时间,而不会影响性能。 在共享托…

Docker 笔记(三)--容器

Docker 笔记(三)–容器 记录Docker 安装操作记录,便于查询。 参考 链接: Docker 入门到实战教程(三)镜像和容器链接: docker run中的-itd参数正确使用链接: docker官方文档链接: 阿里云Debian 镜像链接: Debian 全球镜像站链接: Debian/Ub…

游戏服务器怎么挑选细节与技巧深度解析

随着数字娱乐的迅速崛起,游戏不仅成为了全球数亿人的休闲爱好,同时也催生了一系列关于游戏体验优化的需求。游戏服务器作为游戏体验的核心支柱,其性能好坏直接影响到玩家的游戏体验。本文章旨在详细探讨游戏服务器的挑选技巧与注意事项&#…

Stable Diffusion进阶玩法说明

之前章节介绍了Stable Diffusion的入门,介绍了文生图的魅力,可以生成很多漂亮的照片,非常棒 传送门: Stable Diffusion新手村-我们一起完成AI绘画-CSDN博客 那我们今天就进一步讲讲这个Stable Diffusion还能做些什么, …

笔记55:长短期记忆网络 LSTM

本地笔记地址:D:\work_file\DeepLearning_Learning\03_个人笔记\3.循环神经网络\第9章:动手学深度学习~现代循环神经网络 a a a a a a a a a

【数据结构】链表的八种形态

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 链表的三大"性状" 一.带头链表和不带头链表 头指针与头结点的异同 头指针 头结点 二.循环链表和非循环链表 三.双向链表和单向链表 链表的八大形态 结语…

Linux之进程概念(一)

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、冯诺依曼体系结构二、操作系统(Operator System)1、概念2、设计OS的目的3、定位4、如何理…

二百零五、Flume——数据流监控工具Ganglia单机版安装以及使用Ganglia监控Flume任务的数据流(附流程截图)

一、目的 Flume采集Kafka的数据流需要实时监控,这时就需要用到监控工具Ganglia 二、Ganglia简介 Ganglia 由 gmond、gmetad 和 gweb 三部分组成。 (一)第一部分:gmond gmond(Ganglia Monitoring Daemon)…

Postman启动问题:Could not open Postman

Postman启动问题:Could not open Postman 状态,在单击Postman之后一直在转圈圈,无法正常启动。 细心的朋友会发现,右下角 会经常出现防火墙关闭等提示信息,表示该程序,在向外链接。 Error Could not open…

Golang中读写CSV文件的全面指南

CSV(逗号分隔值)文件是一种常见的数据存储格式,广泛应用于数据导入、导出、分析和交换等场景。在Golang中,有许多库和工具可以帮助我们读取和写入CSV文件,使数据处理变得简单而高效。本文将深入探讨如何在Golang中使用…

基于单片机体温脉搏检测控制系统及源程序

一、系统方案 1、本设计采用51单片机作为主控器。 2、DS18B20传感器检测体温。 3、红外对接管采集心率值送到液晶1602显示。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 /lcd1602初始化设置*/ void init_1602() { write_com(0x38); //显示…

苍穹外卖项目笔记(2)

1 Nginx 反向代理和负载均衡 1.1 概念 【Tips】可以看到前端请求地址和后端接口地址并不匹配,这里涉及到 nginx 反向代理 ,就是将前端发送的动态请求由 nginx 转发到后端服务器 使用 nginx 作反向代理的好处: 提高访问速度(在请…

系列一、堆里面的分区:Eden、From、To、老年代各自的特点

一、堆里面的分区:Eden、From、To、老年代各自的特点 堆是对象共享的区域,也是垃圾回收器主要工作的地方。主要分为新生区、养老区和元空间,而这三块地方中GC主要工作在新生区和养老区,其中新生区占1/3、养老区占2/3,新…

开源与闭源软件的辩论:对大模型技术发展的影响

目录 前言1 开源软件的优缺点1.1 开源软件的优点1.2 开源软件的缺点和挑战 2 闭源软件的优缺点2.1 闭源软件的优点2.2 闭源软件的缺点和挑战 3 大模型发展会走向哪一边结语 前言 近期,特斯拉CEO马斯克公开表示:OpenAI不该闭源,自家首款聊天机…

Qt http

文章目录 前言1. 定义的接口2.connect信号槽3. get4. get 下载文件5. post 总结 前言 /* 1.请求报文: 请求报文是由客户端发送给服务器,用于请求特定资源或执行特定操作。它由以下几个部分组成: 请求行:描述了请求的方法、目标资源…

海外代理IP如何找到靠谱的?

现在市面上有很多代理服务商,大家可以根据自己的需求选择一个适合自己业务的的IP代理服务商,现在也有一些免费的,但如果力求稳定安全,还是选择付费的。 这里提醒一句,在买代理IP时最好找这种可以免费试用的&#xff0…

虾皮台湾站点如何选品

在互联网时代,电商平台成为了越来越多人购物的首选。虾皮作为台湾地区最大的电商平台之一,为商家提供了良好的销售渠道。然而,在虾皮上选择适合的商品对于商家来说并不容易。本文将介绍如何通过虾皮选品工具-知虾来查看台湾地区各大类目的热销…

⑩⑤【DB】详解MySQL存储过程:变量、游标、存储函数、循环,判断语句、参数传递..

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ MySQL存储过程 1. 介绍2. 使用3. 变量①系统变…