通信协议总结

IIC

基本特点

同步,半双工
标准100KHz,最高400KHz(IIC主要应用于低速设备)

硬件组成

需外接上拉电阻

通信过程

空闲状态

SDA和SCL都处于高电平

开始信号S和终止信号P

请添加图片描述

在数据传输过程中,当SCL=0时,SDA才可以跳变;当SCL=1时,SDA必须保持稳定,一旦有电平跳变就代表是起始信号或终止信号。

  • 起始信号S:SCL=1时,SDA由1->0
  • 终止信号P:SCL=1时,SDA由0->1
数据有效性

在这里插入图片描述

在数据传输过程中,当SCL=0时,SDA才可以跳变;当SCL=1时,SDA必须保持稳定,一旦有电平跳变就代表是起始信号或终止信号。

在SCL=1时,SDA数据线稳定,数据有效。

应答信号

每当主机向从机发送完一个字节的数据,主机总是需要等待从机给出一个应答信号,以确认从机是否成功接收到了数据

主机将SCL拉高,读取SDA电平:

  • SDA=0,表示有效应答位(ACK),表示从机已成功接收该字节
  • SDA=1,表示非应答位(NACK),表示从机接收该字节失败

每次传输时,接收方都要返回一个ACK给发送方,才能继续数据通信

IIC写数据

请添加图片描述

1.主机发送设备地址(前7位为设备地址,第8位代表W);
2.各从机比对自己的地址,匹配则发送ACK;
3.主机收到ACK,继续发送要访问的寄存器地址;
4.从机成功接收,发送ACK;
5.主机发送DATA。

写AT24C02时序:
在这里插入图片描述

IIC读数据

请添加图片描述

1.主机发送设备地址(前7位为设备地址,第8位代表W);
2.各从机比对自己的地址,匹配则发送ACK;
3.主机收到ACK,继续发送要访问的寄存器地址;
4.从机成功接收,发送ACK;
5.主机重新发送一个S信号,发送设备地址(第8位为R)
6.从机成功接收,发送ACK;
7.从机紧接着返回对应地址寄存器数据,直到主机不在返回ACK。

读AT24C02时序:
在这里插入图片描述

SPI

基本特点

同步、全双工
最高50MKHz

硬件组成

需外接上拉电阻

通信过程

包括主机和从机(可实现一主多从)
主机和从机构成一个环形结构,通过移位寄存器实现串行传输,这就意味着:

  • 写数据:必定会接收到从机的数据,丢弃即可
  • 读数据:必定需要向从机发送无用数据,才能读到需要的数据
    在这里插入图片描述
    在这里插入图片描述
一主多从
  • 多NSS
    在这里插入图片描述

  • 菊花链
    在这里插入图片描述
    数据流向:
    在这里插入图片描述
    所以不难发现,菊花链模式充分使用了SPI其移位寄存器的功能,整个链充当通信移位寄存器,每个从机在下一个时钟周期将输入数据复制到输出。

ISOSPI

在这里插入图片描述

CAN

基本特点

异步、半双工、差分
ISO11898是针对通信速率为125Kbps~1Mbps的高速通信标准(闭环,需要添加终端电阻120Ω,用于阻抗匹配,减少回波反射)
IS011519-2是针对通信速率为125Kbps以下的低速通信标准(开环)

硬件组成

CAN控制器、CAN收发器、终端电阻
在这里插入图片描述

电平标准

隐性电平:逻辑1(CAN_RX/TX=3.3v) 电压差=0V(CAN_H=2v,CAN_L=2v)
显性电平:逻辑0(CAN_RX/TX=0v) 电压差=2V(CAN_H=3.5v,CAN_L=1.5v)

通信过程

  1. 空闲状态
    当总线上的上出现连续的11位隐性电平,那么总线就处于空闲状态。

  2. 数据传输
    每次发送数据前,节点都会监听总线的状态,如果总线状态为空闲时,它就会立即向总线上发送自己的数据,这个数据里不仅有数据,还有本身的ID信息或者其他的控制指令,应称为数据包(数据帧),也叫做报文

  3. 仲裁机制(利用线与和回读机制

    以上只是节点1主动发送数据,但是万一节点1和节点2同时向节点3发送数据的时候,如何判定先后呢?采用非破坏性位仲裁机制,即对各个消息的标识符(即ID号)进行逐位仲裁(比较),如果某个节点发送的消息仲裁获胜,那么这个节点将获取总线的发送权,仲裁失败的节点则立即停止发送并转变为监听(接收)状态。

    因为显性电平会覆盖隐性电平,两个节点同时发送报文时,0会将1覆盖(线与),而每个节点在发送完之后都会进行回读操作:如果自己发的1,都回来的却是0,那仲裁失败,进入空闲状态;自己发的和回读的一样则获得总线控制权。( ID:000000 00010 比 000000 00011 的优先级要高)

在这里插入图片描述

  1. 位时序
    can的数据帧中没有用于同步的标志,它的同步是靠位时序实现的。
    在这里插入图片描述
    CAN将一位又分为4段, 同步段(SS)、传播时间段(PTS)、相位缓冲段 1(PBS1)、相位缓冲段 2(PBS2)。分解后最小的时间单位是 Tq,而一个完整的位由 8~25 个 Tq 组成。通过这些段可以计算出CAN的波特率。
    在这里插入图片描述
    同时每一个段又能用来进行数据同步,分为硬同步和重新同步:
  • 硬同步:在帧起始信号时(SOF)同步总线上所有器件的位时序,无法确保后续一连串的位时序都是同步的(可以理解为节点在检测到帧起始信号时才开始“设置段”)

在这里插入图片描述

  • 重新同步:在检测到总线上的时序与节点使用的时序有相位差时(即总线上的跳变沿不在节点时序的 SS 段范围),通过延长 PBS1 段或缩短 PBS2 段,来获得同步。
    在这里插入图片描述

硬同步和重新同步都是使用SS段来检测,而同步的目的就是让SS段把跳变沿包含进来
区别在于:
硬同步是在数据传输开始时(SOF处)设置SS段包含跳变沿,类似于初始化;
重新同步是在数据传输过程中设置PBS段以实现SS段包含跳变沿

数据格式

传输的报文包括数据帧,遥控帧,错误帧,过载帧,帧间隔。

数据帧:
请添加图片描述
数据帧和遥控帧有标准格式和扩展格式两种格式,标准格式有 11 个位的ID,扩展格式有 29 个位的 ID。

  • SOF:联系前文可知,当数据帧发出第一位时(0为显性电位),总线就由空闲状态转为传输状态,同一时间只能允许一个节点传输数据。
  • Identify:接下来的仲裁段有11位,即本数据帧的 ID 信息,决定着数据帧发送的优先级,也决定着其它设备是否会接收这个数据帧,禁止高 7 位都为隐性(禁止设定:ID=1111111XXXX), ID 信息的作用:① 如果同时有多个节点发送数据时,作为优先级依据(仲裁机制);② 目标节点通过 ID 信息来接受数据(验收滤波技术)。这些将在下文提出。
  • RTR:(Remote Transmission Request BIT) 位用于标识是否是远程帧(0,数据帧;1,远程帧),在数据帧里这一位为显性(逻辑 0)。
  • IDE:(Identifier Extension Bit),是用于区分标准格式与扩展格式,在标准格式中 IDE 位为显性,在扩展格式里 IDE 位为隐性。
  • r0:保留位,必须以显性电平发送。
  • DLC:由 4 位组成,MSB 先行(高位先行),它的二进制编码用于表示本报文中的数据段含有多少个字节,DLC 段表示的数字为0到8,若接收方接收到 9~15 的时候并不认为是错误。
  • Data:数据帧的核心内容,它由 0~8 个字节(0 ~ 64位)组成,MSB 先行。
  • CRC:该段用于检查帧传输错误,发送方以一定的方法计算包括:帧起始、仲裁段、控制段、数据段;接收方以同样的算法计算 CRC 值并进行比较,如果不同则会向发送端反馈出错信息,重新发送;计算和出错处理一般由 CAN 控制器硬件完成或由软件控制最大重发数。该段由 15 个位的 CRC 顺序和 1 个位的 CRC 界定符(用于分隔的位)组成,它为隐性位,主要作用是把CRC 校验码与后面的 ACK 段间隔起来。
  • ACK:由 ACK 槽(ACK Slot)和 ACK 界定符 2 个位组成,在 ACK 槽位中,发送端发送的为隐性位,而接收端则在这一位中发送显性位以示应答。在 ACK 槽和帧结束之间由 ACK 界定符间隔开,为隐性位。(发送 ACK/返回 ACK这个过程使用到回读机制,即发送方先在 ACK 槽发送隐性位后,回读到的总线上的电平为显性0,发送方才知道它发送成功了,不用重发)
  • EOF:由发送端发送 7 个隐性位表示结束。

无ACK:
在这里插入图片描述
有ACK:
在这里插入图片描述
在数据帧的拓展格式中,与标准格式不同处在于:

  • 仲裁段为 29 位;
  • 多出的SRR 位(Substitute Remote Request BIT),用于替代标准格式中的 RTR 位。SRR 位为隐性位,由于 RTR 在数据帧为显性位,所以在两个 ID 相同的标准格式报文与扩展格式报文中,标准格式的优先级较高;
  • 控制段中的 r1 和 r0 一样都为保留位,默认设置为显性位;
  • 扩展格式的 ID 有 29 个位。基本 ID 从 ID28 到 ID18,扩展 ID 由 ID17 到 ID0 表示。基本 ID 和标准格式的 ID 相同。禁止高 7 位都为隐性。(禁止设定:基本 ID=1111111XXXX)

位填充
为防止突发错误而设定,CAN协议中规定,当相同极性的电平持续五位时,则添加一个极性相反的位。填充位的添加和删除是由发送节点和接收节点完成的,CAN-BUS只负责传输,不会操纵信号。请添加图片描述

stm32中的CAN

在这里插入图片描述

  • 具有 3 个发送邮箱,发送报文的优先级可以使用软件,可以记录发送的时间;
  • 有 2 个 3 级深度的接收 FIFO,可以使用过滤功能只接收或不接收某些 ID号的报文;
  • 不支持使用 DMA 进行数据收发
  • 可变的过滤器组(最多 28 个)。
接收FIFO

CAN的FIFO用于缓存CAN数据包,最多存放3个。一旦超出3个数据就无法收到新数据,需要及时读出,并释放邮箱。

接收消息分为:

  • 挂起:一旦FIFO有消息挂起位(pending)就会置位
  • 上溢:FIFO满了(最多有3个消息)
    在这里插入图片描述
过滤器组

过滤器用于在数据包送到接收FIFO之前,只接受指定数据,过滤掉不需要的数据。
每个过滤器X(共28个)由两个32位的寄存器组成:CAN_FxR1和CAN_FxR2

过滤器可设置两种筛选方法:

  • 标识符掩码:筛选一组符合条件的报文
    ID:指定ID的报文可进入FIFO中
    掩码:含义是根据CAN_FxR2中哪些位为1,筛选出ID这些位与CAN_FxR1中这些位相同的报文(即0xFFFF0000可筛选出前16位相同的报文)
  • 标识符列表:筛选两个符合条件的报文
    ID:只能筛选出两种指定ID的报文

在这里插入图片描述

DMA

DMA不属于通信协议,但和上述几个通信协议一起记录,是因为它们会经常关联使用

基本特点

DMA可以实现在没有CPU干预的情况下完成数据的传输

请添加图片描述

硬件组成

在这里插入图片描述
能够使用DMA的外设:
在这里插入图片描述

通信过程

配置DMA:

  • 传输模式:单次/循环
  • 传输方向:source,destination
  • 传输大小
  • 传输通道
  • 使能中断:发送完成中断,发送空闲中断,发送一半中断

优势

通过串口接收数据,若采用中断方式,在数据量很小的情况下很有用,但是一旦数据量大了,CPU将频繁被中断打断;而采用DMA+中断的方式,DMA只有在一次性传输size个数据(或者空闲)后才会请求DMA传输完成中断,告知CPU传输完成,而数据的传输工作都是由DMA完成的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis-主从复制-测试主从模式下的读写操作

文章目录 1、在主机6379写入数据2、在从机6380上写数据报错3、从机只能读数据,不能写数据 1、在主机6379写入数据 127.0.0.1:6379> keys * (empty array) 127.0.0.1:6379> set uname jim OK 127.0.0.1:6379> get uname "jim" 127.0.0.1:6379>…

高中数学:不等式-常见题型解题技巧

一、“1”的代换 练习 例题1 例题2 解 二、基本不等式中的“变形” 就是,一般情况下,我们在题目中,是不能够直接使用基本不等式进行求解的。 而是要对条件等式进行变形,满足基本不等式的使用条件 练习 例题1 解析 两边同…

002关于Geogebra软件的介绍及与MatLab的区别

为什么要学Geogebra? 因为和MatLab的科学计算相比,GeoGebra重点突出教学展示,对于教师、学生人群来讲再合适不过了,尤其是可以融入到PPT里边呈现交互式动画,想想听众的表情!这不就弥补了看到PPT播放数学公…

关于ONLYOFFICE8.1版本桌面编辑器测评——AI时代的领跑者

关于作者:个人主页 目录 一.产品介绍 1.关于ONLYOFFICE 2.关于产品的多元化功能 二.关于产品体验方式 1.关于套件的使用网页版登录 2.关于ONLYOFFICE本地版 三.关于产品界面设计 四.关于产品文字处理器(Document Editor) 1.电子表格&a…

1954springboot VUE 天然气系统隐患管理系统开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot VUE天然气系统隐患管理系统是一套完善的完整信息管理类型系统,结合springboot框架和VUE完成本系统,对理解JSP java编程开发语言有帮助系统采用springboot框架(MVC 模式开发),系统具有完整的…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(十九)

课程地址: 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程,一套精通鸿蒙应用开发 (本篇笔记对应课程第 29 节) P29《28.网络连接-第三方库axios》 要想使用第三方库axios,需要先安装ohpm,因为 axios…

Jupyter Notebook 说明 和 安装教程【WIN MAC】

一、Jupyter Notebook 简介(来源百度百科) Jupyter Notebook(此前被称为 Python notebook)是一个交互式笔记本,支持运行40多种编程语言。 Jupyter Notebook 的本质是一个Web应用程序,便于创建和共享程序文…

git基本使用(二):git分支的操作命令

Git 的多分支管理是指在同一个仓库中创建和管理多个分支,每个分支可以独立开发,互不干扰。分支是 Git 中的一种强大功能,允许开发人员同时在多个不同的功能、修复或实验上工作,而不会影响主分支或其他分支。通过多分支管理&#x…

240627_关于CNN中图像维度变化问题

240627_关于CNN中图像维度变化问题 在学习一些经典模型时,其中得维度变化关系总搞不太明白,集中学习了以下,在此作以梳理总结: 一般来说涉及到的维度变换都是四个维度,当batch size4,图像尺寸为640*640&a…

Kubernetes之Scheduler详解

本文尝试从Kubernetes Scheduler的功能介绍、交互逻辑、伪代码实现、最佳实践、自定义Scheduler举例及其历史演进6个方面进行详细阐述。希望对您有所帮助! 一、Kubernetes Scheduler 功能 Kubernetes Scheduler 是 Kubernetes 集群的核心组件之一,负责…

数据处理python

1.列筛选 (1)某一列&某几列 对于一个表单里面的数据,如果我们想要对于这个表单里面的数据进行处理,我们可以一列一列进行处理,也可以多列一起进行处理; 一列一列处理: 只需要在这个dataf…

台式机通过网线直连笔记本,台式机通过笔记本上网【解决台式机没有网络的问题】

一、总览 将笔记本电脑和台式机使用网线连接起来。在笔记本电脑上打开网络和共享中心,进入“更改适配器设置”选项,找到当前连接的网卡,右键点击选择“属性”。在网卡属性中,找到“共享”选项卡,勾选“允许其他网络用…

帮助你简易起步一个BLOG(博客搭建)项目

Blog项目 后端项目结构1. 项目初始化2. 详细步骤3.postman测试 前端1. 项目初始化2. 详细步骤 本章节是为了帮助你起步一个完整的前后端分离项目。 前端技术栈: react、vite、mantine、tailwind CSS、zustand、rxjs、threejs 后端技术栈:nodemon、nodej…

平面点云格网过程及可视化介绍(python)

1、背景介绍 实际人工构造物中,很多物体表面为平面结构,因此将点云投影在二维平面上进行处理,如进行点云面积计算、点云边缘提取等。 具体案例可以参考博客:详解基于格网法统计平面点云面积_点云格网法计算xy投影面积-CSDN博客、点…

AI 开发平台(Coze)搭建《AI女友(多功能版本)》

前言 本文讲解如何从零开始,使用扣子平台去搭建《AI女友(多功能版本)》 bot直达:AI女友(多功能版) - 扣子 AI Bot (coze.cn) 欢迎大家前去体验!!! 正文 功能介绍 …

C#串口通信Seriaport和页面传值

串口通信 串口COM:是一种用于连接计算机和外设设备的接口,也叫串行接口,简称com,常见的串口有一半电脑应用的RS-232(使用25针或9针的 连接器)通俗来讲串口就是usb接口、鼠标串口。键盘串口 串口通讯:是指外…

Spring Clude 是什么?

目录 认识微服务 单体架构 集群和分布式架构 集群和分布式 集群和分布式区别和联系 微服务架构 分布式架构&微服务架构 微服务的优势和带来的挑战 微服务解决方案- Spring Cloud 什么是 Spring Cloud Spring Cloud 版本 Spring Cloud 和 SpringBoot 的关系 Sp…

VScode远程连接时卡住

将报错文件删除 ### 查找文件(base) ~ find /home -name 5c3e652f63e798a5ac2f31ffd0d863669328dc4c /home/cszx/.vscode-server/data/clp/99e4e0e4dad86d47de9777231596fd92.zh-cn/5c3e652f63e798a5ac2f31ffd0d863669328dc4c ### 删除(base) ~ rm -rf /home/cszx/.vscode-ser…

centOS7网络配置_NAT模式设置

第一步:查看电脑网卡 nat模式对应本地网卡的VMnet 8 ,查看对应的IP地址。 第二步:虚拟网络编辑器 打开VMWare,编辑--虚拟网络编辑器,整个都默认设置好了,只需要查看对应的DHCP设置中对应的IP的起始&#…

MySQL数据类型、运算符以及常用函数

MySQL数据类型 MySQL数据类型定义了数据的大小范围,因此使用时选择合适的类型,不仅会降低表占用的磁盘空间, 间接减少了磁盘I/O的次数,提高了表的访问效率,而且索引的效率也和数据的类型息息相关。 数值类型 浮点类型…