协议集合(学习笔记)

news2025/1/9 16:34:20

按照数据的传送方式,通信协议可分为以下2种。

串行通信:串行(Serial)指的是逐个传输数据位,一次只传输一个位。

并行通信:并行(Parallel)指的是同时传输多个数据位,一次可以传输多个位。

按照消息传送的方向与时间关系,通信协议可分为以下3种。

单工通信:单工通信(Simplex Communication)是指消息只能单方向传输的通信方式。

在单工通信中,发送端与接收端是固定的,即发送端只能发送信息,不能接收信息;接收端只能接收信息,不能发送信息。

半双工通信:半双工通信(Half-duplex Communication)中的“双工”表示通信的双方都可以发送信息,而“半”表示双方不能同时发送或同时接收信息,即对于同一个设备,同一时刻只能发信息或者收信息,不能在发信息的时候又收信息。

在这种工作方式下,发送端可以转变为接收端;接收端也可以转变为发送端。但是在同一个时刻,信息只能在一个方向上传输。因此,也可以将半双工通信理解为一种可以切换方向的单工通信。

全双工通信:通信的双方可以同时发送和接收数据。

按照时钟特性,通信协议可分为以下2种。

同步通信:双方使用频率一致的时钟。发送端在发送串行数据的同时,提供一个时钟信号,并按照一定的约定(如:在时钟信号的上升沿时,将数据发送出去),发送数据;接收端根据发送端提供的时钟信号,以及一定的约定(例如:在时钟信号为低电平时,读取数据),接收数据。

异步通信:收发双方可以有各自自己的时钟,接收方并不知道数据什么时候会到达,发送方发送的时间间隔可以不均,接收方是在数据的起始位和停止位的帮助下实现信息同步的。

 UART

串口参数

起始位位于数据帧开头,只占 1位,始终为逻辑“0”,必须有。起始位用于表示一个数据帧的开始,起到同步作用。

数据位:紧跟在起始位之后,用于传送数据。用户可根据情况确定为 5、6、7、8 位,低位在前,高位在后。通常采用 8 位数据位,用于传送一字节的数据.

校验位

奇校验码:数据位有奇数个1,奇校验码为0;数据位有偶数个1奇校验码为1。即:奇校验码的加入使得数据位和校验位整体保持奇数个1。

偶校验码:数据位有偶数个1,偶校验码为0;数据位有奇数个1偶校验码为1。即:偶校验码的加入使得数据位和校验位整体保持偶数个1。

停止位

        位于数据的最后,始终为逻辑“1”,必须有。停止位的长度由用户确定,可选择为1位、或 2 位。停止位表示一个数据的结束,也是为发送下一个数据帧做准备,同样也起到了同步的作用。

波特率:是指单位时间内传送二进制数据的位数,单位用bps或b/s(位/秒)表示。

比特率:是衡量异步串行通信的数据传输速率,即单位时间内传送二进制有效数据的位数,单位也用bps或b/s(位/秒)表示。

UART只是对信号的时序进行了定义,而未定义接口的电气特性;

UART通信时一般直接使用处理器使用的电平,即TTL电平,但不同的处理器使用的电平存在差异,所以不同的处理器使用UART通信时一般不能直接相连;例如:51单片机与32单片机通信,51单片机高低电平电压为0V,5V。32则为0V,3.3V.

UART没有规定不同器件连接时连接器的标准,所以不同器件之间通过UART通信时连接很不方便;

总结来说UART存在的问题:
1.抗干扰能力差
UART一般直接使用TTL信号来表示0和1,但TTL信号的抗干扰能力较差,数据在传输过程中很容易出错
通信距离极短
因为TTL信号的抗干扰能力较差,所以其通信距离也很短,一般只能用于一个电路板上的两个不芯片之间的通信

RS232:

RS232协议是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家、计算机终端生产厂家共同制定的用于串行通讯的标准:该标准规定采用一个标准的连接器,标准中对连接器的每个引脚的作用加以规定,还对信号的电平加以规定; 

  1. 接口信号电平高,容易损坏接口电路的芯片。逻辑“1”为-3 ~ -15V;逻辑为“0”:+3 ~ +15V,噪声裕量为2V。也就是说,接收器需要将高于+3V的信号识别为逻辑“0”,将低于-3V的信号识别为逻辑“1”,将5V的TTL电平识别为逻辑正极,将0识别为逻辑负极。与TTL电平不兼容,需要一个电平转换电路来连接到TTL电路。
  2. 接口采用信号线和信号回波串,形成共同的接地传输形式。这种标准的接地传输容易受到共模干扰,因此抗噪性较弱。
  3. 传输距离有限。最大传输距离为50英尺。它只能达到大约15米。

RS485:

RS-485串行总线广泛用于通信距离必须为几十米到几公里的时候。RS-485使用平衡的发射和差分接收,因此可以抑制共模干扰。除了总线收发器的高灵敏度外,它还可以检测低至200mV的电压,从而将发射的信号恢复到公里以上。RS-485使用半双工工作模式,任何时候只发送一个点。因此,发射电路必须由使能信号控制。

RS232 和 RS485 的区别

  • 工作模式:RS232 为全双工,RS485 为半双工。
  • 传输方式:RS485和RS232只是物理协议的通信(即接口标准),RS485是差分传输方式,RS232是单端传输方式,但通信程序没有太大区别。
  • 信号线:RS485接口组成的半双工网络,一般只需二根信号线。RS232 只使用 RXD、TXD、GND 三条线 。
  • 抗干扰性:RS485接口是采用平衡驱动器和差分接收器的组合,抗噪声干扰性好。RS232接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰。
  • 传输距离:RS485接口的最大传输距离标准值为 1200 米(9600bps 时),实际上可达 3000 米。RS232传输距离有限,最大传输距离标准值为 50 米,实际上也只能用在 15 米左右。
  • 通信能力:RS485 接口在总线上是允许连接多达128个收发器,用户可以利用单一的 RS485 接口方便地建立起设备网络。RS232只允许一对一通信。
  • 传输速率:RS232传输速率较低,在异步传输时,波特率为 20Kbps。RS485 的数据最高传输速率为 10Mbps 。
  • 电气电平值:RS485的逻辑"1"以两线间的电压差为+(2-6) V 表示;逻辑"0"以两线间的电压差为-(2-6)V 表 示 。在 RS-232 中任何一条信号线的电压均为负逻辑关系。即:逻辑"1",-(5-15)V;逻辑"0 " +(5- 15)V 。

 SPI

SPI是一种串行、全双工、同步、单端、点对多的通信协议

一主一从的SPI通信有四根通信线:

SCK/SCLK:串行时钟信号线

MOSI:主机输出从机输入数据线。有时也可以是SOMI,DI(Data Input)(从机端)、SI(Slave Input)(主机端)

MISO:主机输入从机输出数据线。有时也可以是SIMO、DO(Data Output)(从机端)、SO(Slave Output)(主机端)

SS(Slave Select)/CS(Chip Select):从机选择线/片选线,低电平时与相连从机通信

此外,主从设备的参考电压要相同(共地)

对于主机:

输出引脚(SCK、MOSI、SS)配置为推挽输出

输入引脚(MISO)配置为浮空或上拉输入

对于从机:

通信时,输出引脚(MISO)配置为推挽输出,空闲时,输出引脚(MISO)配置为高阻态

输入引脚(SCK、MOSI、SS)配置为浮空或上拉输入

通信过程

1.主机选择从机:主机通过拉低对应从机的SS线选择开始与其通信。

2.主机启动时钟、从机切换MISO模式:主机开始产生SCLK信号,通常从空闲状态开始,并在数据传输期间持续提供时钟信号。从机将MISO由高阻态切换为推挽输出

3.数据交换:

对于主机:

    主机将待发送的数据写入其发送数据缓存区后,先将一个字节的数据复制到移位寄存器。随后,移位寄存器中的数据从高位到低位一位一位地移出到MOSI线上。

同时,主机通过MISO线接收到从机发来的数据,半个时钟周期后,这些数据从高位到低位一位一位地被移入移位寄存器中的。

当移位寄存器移出一个字节的数据时,它同时(严格上讲,差了半个时钟周期)也移入了一个字节的数据,此时移位寄存器中存储的是接收到的数据,这些数据会被存入接收数据缓存区,之后主机发送数据缓存区中的下一个字节的数据会被复制到移位寄存器中,从而进行下一个字节的数据交换,如此循环,直至交换完所有的数据。

对于从机:

从机将待发送的数据写入其发送数据缓存区后,先将一个字节的数据复制到移位寄存器。随后,移位寄存器中的数据从高位到低位一位一位地移出到MISO线上。

同时,从机通过MOSI线接收到从机发来的数据,半个时钟周期后,这些数据从高位到低位一位一位地被移入移位寄存器中的。

当移位寄存器移出一个字节的数据时,它同时(严格上讲,差了半个时钟周期)也移入了一个字节的数据,此时移位寄存器中存储的是接收到的数据,这些数据会被存入接收数据缓存区,之后从机发送数据缓存区中的下一个字节的数据会被复制到移位寄存器中,从而进行下一个字节的数据交换,如此循环,直至交换完所有的数据。

4.完成通信:当所有需要交换的数据都传输完毕后,主机停止产生SCK信号,并将SS线拉高,以结束与当前从机的通信。从机将输出引脚(MISO)配置为高阻态,以避免干扰之后主机与其他从机的通信。

一些说明:

        SPI只能进行数据交换,不能单独进行读或写数据。外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节(通常为0x00和0xFF);反之,若主机要读取从机给的一个字节,就必须发送一个字节(通常为0x00和0xFF)来引发从机的传输。

        SPI总线传送完一个字节后无需应答即可开始下一个字节的传送;SPI总线采用同步方式工作,时钟线在上升沿或下降沿时发送器向数据线上发送数据,在紧接着的下降沿或上升沿时接收器从数据线上读取数据,完成一位数据传送,八个时钟周期即可完成一个字节数据的传送。

iic 

IIC是一种串行、半双工、同步、单端、多对多的通信协议

 can

CAN是一种串行、异步、半双工、差分、多对多的通信协议。主要用于汽车内部电子设备之间的通信。

CAN 的数据帧结构

        在原始数据段的前面加上传输起始标签、片选 (识别) 标签和控制标签,在数据的尾段加上 CRC校验标签、应答标签和传输结束标签,把这些内容按特定的格式打包好,就可以用一个通道表达各种信号了。这些标签起到了协同传输的作用,当整个数据包被传输到其它设备时,只要这些设备按格式去解读,就能还原出原始数据,这样的报文就被称为 CAN 的“帧”。

具体每位:http://t.csdnimg.cn/rLVHt

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

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

相关文章

VMware 中 kali Linux的安装与使用

文章目录 前言 一、安装虚拟机 二、使用步骤 总结 前言 随着信息技术的飞速发展,虚拟化技术已经成为现代企业和个人用户不可或缺的一部分。通过虚拟化技术,我们可以在一台物理计算机上运行多个独立的操作系统和应用程序,从而实现资源的高效利…

基于WiFi的智能照明控制系统的设计与实现(论文+源码)

1系统方案设计 本设计智能照明控制系统,结合STM32F103单片机、光照检测模块、显示模块、按键模块、太阳能板、LED灯模块、WIFI模块等器件构成整个系统,在功能上可以实现光照强度检测,并且在自动模式下可以自动调节照明亮度,在手动…

【spring】例子2:mvc web开发

领域类 开发时编译时用lombok提供支持 最终生成的包里不包含lombok

【Android】程序开发组件—探究Jetpack

引言 Jetpack是一个开发组件工具集,它的主要目的是帮助我们编写出更加简洁的代码,并简化我们的开发过程,在这么多的组件当中,最需要我们关注的其实还是架构组件,接下来就对Jetpack的主要架构组件进行学习!…

数据结构-----栈、队列

一、栈 1、栈(stack)是限定仅在表尾进行插入和删除操作的线性表。 把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出(Last In First Out)的线性表,简称L…

OpenAI gym: Trouble installing Atari dependency (Mac OS X)

题意: 使用OpenAI Gym库时,安装Atari环境可能会遇到一些依赖问题,尤其是在Mac OS X系统上 问题背景: Im new to OpenAI gym. Ive successfully installed OpenAI gym on my Mac OS X (High Sierra 10.13.3) laptop and made a D…

C语言程序设计(算法的概念及其表示)

一、算法的概念 一个程序应包括两个方面的内容: 对数据的描述:数据结构 对操作的描述:算法 著名计算机科学家沃思提出一个公式: 数据结构 +算法 =程序 完整的程序设计应该是: 数据结构+算法+程序设计方法+语言工具 广义地说,为解决一个问题而采取的方法和步骤…

学不会虚拟列表?10分钟带你实现高度固定的Vue虚拟列表方案及原理

前言 本文主要介绍长列表的一种优化方案:虚拟列表。本文主要是对传统的虚拟列表方案进行更加详尽的刨析,以便我们能够更加深入理解虚拟列表的原理。 虚拟列表目录 1、为什么需要使用虚拟列表2、什么是虚拟列表与懒加载的区别(重要) 3、实现思路4、通过节…

企业选ETL还是ELT架构?

作为数据处理的重要工具,ETL工具被广泛使用,同时ETL也是数据仓库中的重要环节。本文将从解释ETL工具是怎么处理数据,同时介绍ELT和ETL工具在企业搭建数据仓库的重要优势。 一、什么是ETL? ETL是Extract-Transform-Load的缩写,将…

【深度学习】多层感知机的从零开始实现与简洁实现

可以说,到现在我们才真正接触到深度网络。最简单的深度网络称为多层感知机。 多层感知机由多层神经元组成,每一层与它的上一层相连,从中接收输入;同时每一层也与它的下一层相连,影响当前层的神经元。 和以前相同&…

【深入解析】AI工作流中的HTTP组件:客户端与服务端执行的区别

在当今快速发展的技术环境中,AI工作流的设计和实现变得愈发重要。尤其是在处理HTTP组件时,前端执行与后端执行之间的区别,往往会对系统的安全性和数据的准确性产生深远的影响。今天,我们就来深入探讨这一话题,揭示前端…

音频基础学习四——声音的能量与分贝

文章目录 前言一、能量与分贝1.音频能量2.分贝3.两者的区别4. 应用场景 二、分贝的计算方式1.具体数学公式2.具体算法示例3.对于算法的释义大小端为什么通过计算得到的是负值范围实际结果 总结 前言 很多博客中经常会把声音的能量和分贝说成是一个东西,这种说法是错…

原型模式prototype

此篇为学习笔记,原文链接 https://refactoringguru.cn/design-patterns/prototype 能够复制已有对象, 而又无需使代码依赖它们所属的类 所有的原型类都必须有一个通用的接口, 使得即使在对象所属的具体类未知的情况下也能复制对象。 原型对…

云计算之云原生(上)

目录 一、消息队列RocketMQ 1.1 功能介绍 1.1.1 业务消息首选:消息队列 RocketMQ 1.1.2 【收发流量隔离约束】读写分离控制提高集群稳定性 1.1.3 【Dashboard 仪表盘】实时观测实例状态 1.1.4 【消息轨迹追踪】消息生命周期状态一目了然 1.1.5 【实时扩缩容】…

单点登录OAuth2.0

OAuth 2.0(Open Authorization 2.0)是OAuth协议的第二个版本,于2012年正式成为RFC 6749标准。在OAuth 2.0之前,OAuth 1.0版本已经为Web应用提供了一定程度的授权功能,但随着时间的推移,这些版本逐渐显露出一…

“Docker网络模式详解与应用“

目录 前言 Docker内置网络 bridge 基本概念 案例 工作原理 使用场景 host 基本概念 案例 工作原理 使用场景 none 基本概念 案例 !!!大佬救命 container 基本概念 案例 自定义网络 自定义bridge 基本概念 案例 Docker…

界面控件KendoReact中文教程 - 如何创建动态进度条?

Kendo UI致力于新的开发,来满足不断变化的需求。现在我们非常自豪地宣布,通过React框架的Kendo UI JavaScript封装来支持React Javascript框架。Kendo UI for React能够为客户提供更好的用户体验,并且能够更快地构建更好的应用程序。 KendoR…

树莓派外设驱动WiringPi库

树莓派外设驱动WiringPi库 文章目录 树莓派外设驱动WiringPi库一、树莓派安装WiringPi库二、WiringPi库的使用方法 一、树莓派安装WiringPi库 wiringPi库其实已经很熟悉了,在香橙派中大量使用过,这个库中集成了很多使用的功能性函数,树莓派安…

设计模式-行为型模式-状态模式

1.状态模式的定义 允许一个对象在其内部状态改变时改变他的行为,用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题,状态模式将一个对象的状态从该对象中分离出来,封装到专门的状态类中,使得对象的状态可以灵活变化&…

【STM32】GPIO输入实现按键控制LED

1.stm32cubemx配置 和上篇博客配置一样 2.代码编写 实现一个按键按下LED1亮,另一个按下LED灭 KEY1实现LED1亮,KEY2实现LED2灭 1.配置GPIOA,GPIOB时钟使能 2.配置GPIOB模式初始化 3.配置GPIOA模式初始化 基本和2一样,不一样的是按键使用的…