【通信协议讲解】单片机基础重点通信协议解析与总结(IIC,CAN,MODBUS...)

news2024/10/12 8:09:17

目录

一.IIC总线

基础特性:

配置特性:

 时序特性:

二.SPI总线

基础特性:

配置特性:

 时序特性:

三.串口通信

基础特性:

 配置特性:

 时序特性:

四.CAN总线

基础特性:

 配置特性:

 时序特性:

五.ModBus总线

基础特性:

 配置特性:


一.IIC总线

基础特性:

  • 两根通信线:SCL、SDA
  • 同步,半双工
  • 总线挂载多设备(一主多从,多主多从)

配置特性:

  • SCL、SDA配置为开漏输出
  • SCL、SDA带上拉电阻(一般4.7K)

 时序特性:

  • 起始条件:SCL:High,SDA:High->Low
  • 终止条件:SCL:High,SDA:Low->High
  • 发送:Master->SCL:Low->SDA高位先行->SCL:High->Slave
  • 接收:Slave->SCL:Low->SDA高位先行->SCL:High->Master

二.SPI总线

基础特性:

  • 四根通信线:SCK,MOSI,MISO,SS
  • 同步,全双工
  • 支持总线挂载多设备(一主多从)

配置特性:

  • 主机引出多条SS控制线,分别接到各从机的SS引脚
  • 输出引脚->推挽输出,输入引脚->浮空或上拉输入

 时序特性:

  • 起始条件:SS从高电平切换到低电平
  • 终止条件:SS从低电平切换到高电平
  • 三种模式:1.CPOL=0,CPHA=1;2.CPOL=1,CPHA=0;3.CPOL=1,CPHA=1

三.串口通信

基础特性:

  • 两根通信线:TX,RX;一根参考线:GND
  • 同步或异步,全双工
  • 点对点

 配置特性:

  • 交叉连接
  • 电平标准一致(TTL电平,RS232电平,RS485电平等)
  • 波特率,起始位,数据位,校验位,停止位

 时序特性:

正逻辑时:

  • 起始位:一位时间的低电平
  • 停止位:一位或多位的高电平
  • 低位先行

负逻辑时起始位和停止位电平相反。

四.CAN总线

基础特性:

  • 两根通信线:CAN_HCAN_L
  • 异步,半双工
  • 差分电平
  • 可挂载多设备,多设备同时发送数据时通过仲裁判断先后顺序

 配置特性:

  • CAN控制器引出的TXRXCAN收发器相连,CAN收发器引出的CAN_HCAN_L分别与总线的CAN_HCAN_L相连
  • 高速CAN使用闭环网络,CAN_HCAN_L两端添加120Ω的终端电阻
  • 低速CAN使用开环网络,CAN_HCAN_L其中一端添加2.2kΩ的终端电阻

 时序特性:

  • 11/29位报文ID
  • 差分信号(VCAN_H-VCAN_L):
    • 高速CAN规定:
      • 电压差为0V时表示逻辑1(隐性电平)
      • 电压差为2V时表示逻辑0(显性电平)
    • 低速CAN规定:
      • 电压差为-1.5V时表示逻辑1(隐性电平)
      •  电压差为3V时表示逻辑0(显性电平)
  • 帧类型:
    • 数据帧
    • 遥控帧
    • 错误帧
    • 过载帧
    • 帧间隔
  • 位填充:
    • 发送方每发送5个相同电平后,自动追加一个相反电平的填充位,接收方检测到填充位时,会自动移除填充位,恢复原始数据
  • 数据帧:
    • SOFStart of Frame):帧起始,表示后面一段波形为传输的数据位
    • IDIdentify):标识符,区分功能,同时决定优先级
    • RTRRemote Transmission Request ):远程请求位,区分数据帧和遥控帧
    • IDEIdentifier Extension):扩展标志位,区分标准格式和扩展格式
    • SRRSubstitute Remote Request):替代RTR,协议升级时留下的无意义位
    • r0/r1Reserve):保留位,为后续协议升级留下空间
    • DLCData Length Code):数据长度,指示数据段有几个字节
    • Data:数据段的1~8个字节有效数据
    • CRCCyclic Redundancy Check):循环冗余校验,校验数据是否正确
    • ACKAcknowledgement):应答位,判断数据有没有被接收方接收
    • CRC/ACK界定符:为应答位前后发送方和接收方释放总线留下时间
    • EOFEnd of Frame ):帧结束,表示数据位已经传输完毕
  • 遥控帧:
    • 无数据段,其他部分与数据帧相同
  • 错误帧:
    • 总线上所有设备都会监督总线的数据,一旦发现“位错误”或“填充错误”或“CRC错误”或“格式错误”或“应答错误” ,这些设备便会发出错误帧来破坏数据,同时终止当前的发送设备
  • 过载帧:
    • 当接收方收到大量数据而无法处理时,其可以发出过载帧,延缓发送方的数据发送,以平衡总线负载,避免数据丢失
  • 帧间隔:
    • 将数据帧和远程帧与前面的帧分离开

五.ModBus总线

基础特性:

  • 分类:
    • Modbus ASCII:基于串行通信的文本协议。
    • Modbus RTU :基于串行通信的二进制协议。
    • Modbus TCP/IP:基于以太网的协议。(TCP/IP 协议栈)
  • 一主多从,可以有多达247个从设备

 配置特性:

  • 功能码:公共功能码、用户定义功能码和保留功能码。
    • 0 类功能码:最常用功能码
      • 3读取多寄存器
        16写入多寄存器
    • 1 类功能码:
      • 1读取线圈
        2读取离散量输入
        4读取输入寄存器
        5写入单个线圈
        6写入单个寄存器
        7读取异常状态(仅限串行)
    • 2 类功能码:
      • 15写入多个线圈
        20读取文件记录
        21写入文件记录
        22屏蔽写入寄存器
        23读取/写入多个寄存器
        24读取

 时序特性:

  • 数据格式:固定长度,由地址、功能码、数据和一个错误校验字段组成。
    • 帧结构 = 地址 + 功能码+ 数据 + 校验
      • ​​​​​​​​​​地址域:1 字节,即从机设备地址,通常 1-247 为有效地址,0 为广播地址
      • 功能码:1 字节,表明主机请求数据的类型。
      • 数据:N 字节,包含寄存器地址和寄存器数据等。
      • 差错校验:对数据进行冗余校验的结果,CRC 或 LRC。


                                                                                                                          如有错误,感谢指正

                                                                                                                                        2024.10.11 

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

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

相关文章

vue后台管理系统从0到1(5)

文章目录 vue后台管理系统从0到1(5)完善侧边栏修改bug渲染header导航栏 vue后台管理系统从0到1(5) 接上一期,我们需要完善我们的侧边狼 完善侧边栏 我们在 element 组件中可以看见,这一个侧边栏是符合我们…

I/O进程(Day26)

一、学习内容 I/O进程 标准IO 概念 针对文件的读写操作 文件IO最终达成的目的:将一个临时存在于内存中的数据,永久性的存放于磁盘当中 操作 文件IO的操作,需要这样的2个指针 一个指针:指向源数据,提供读取操作的指针 …

复杂系统学习

一、复杂网络分析在复杂性研究中的地位 1.复杂系统 系统中存在的复杂度从两个维度来看 ①系统自由度(系统组成成分的数目) ②相互作用(线性到非线性的转换) 复杂网络是复杂系统的骨架 复杂系统可以抽象成一个网络&#xff0…

大数据新视界 --大数据大厂之 Dremio:改变大数据查询方式的创新引擎

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

【JVM】如何判断对象是否可以被回收

引用计数法: 在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的。 优点:实现简单,判…

Visual Studio--VS安装配置使用教程

Visual Studio Visual Studio 是一款功能强大的开发人员工具,可用于在一个位置完成整个开发周期。 它是一种全面的集成开发环境 (IDE)。对新手特别友好,使用方便,不需要复杂的去配置环境。用它学习很方便。 Studio安装教程 Visual Studio官…

从这里看BD仓储如何改变物流效率?

BD仓储物流建设成为当代物流领域的核心要素,推动着整个行业朝向高效性与智能化水平不断提升。在BD仓储物流的创新浪潮中,RFID技术犹如一颗耀眼的明珠,凭借其无可比拟的特性获得了业界的广泛推崇与广泛应用。该技术通过无线信号与电子标签的互…

Python剪辑视频

import os from moviepy.editor import VideoFileClipvideo_dir r"E:\学习\视频剪辑" s_video_file "1.mp4" d_video_file "剪辑片段1.mp4" s_video_path os.path.join(video_dir, s_video_file) # 原视频文件路径 d_video_path os.path…

FDTD Solutions(时域有限差分)仿真技术与应用

FDTD Solutions是一款非常好用的微纳光学设计工具。该软件提供了丰富的设计功能,支持CMOS图像传感器,OLED和液晶,表面计量,表面等离子体,石墨烯,太阳能电池,集成光子组件,超材料&…

排序|归并排序|递归|非递归|计数排序(C)

归并排序 如果数组的左半区间有序&#xff0c;右半区间有序&#xff0c;可以直接进行归并 基本思想 快排是一种前序&#xff0c;归并是后序 每次取小尾插 void _MergeSort(int* a, int* tmp, int begin, int end) {if (end < begin)return;int mid (end begin) / 2;/…

go开发环境设置-安装与交叉编译

1. 引言 Go语言&#xff0c;又称Golang&#xff0c;是Google开发的一门编程语言&#xff0c;以其高效、简洁和并发编程的优势受到广泛欢迎。作为一门静态类型、编译型语言&#xff0c;Go在构建网络服务器、微服务和命令行工具方面表现突出。 在开发过程中&#xff0c;开发者常…

PyCharm打开及配置现有工程(详细图解)

本文详细介绍了如何利用Pycharm打开一个现有的工程&#xff0c;其中包括编译器的配置。 PyCharm打开及配置现有工程 1、打开工程2、配置编译器 1、打开工程 双击PyCharm软件&#xff0c;点击左上角 文件 >> 打开(O)… 选中想要打开的项目之后点击“确定” 2、配置编译器…

STM32学习--3-5 光敏控制传感器控制蜂鸣器

接线图 Buzzer.c #include "stm32f10x.h" // Device header void Buzzer_Init(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Mode GPIO_Mode_O…

Microsoft Visual Studio安装gtest

1. 参考【Windows Visual Studio下安装和使用google test&#xff08;gtest&#xff09;】 https://blog.csdn.net/Bule_Zst/article/details/78420894 2. 编译gtest使用Win32模式。 3. 配置属性&#xff0c;C/C&#xff0c;常规&#xff0c;附加包含目录 …

【画质模组】古墓丽影mod,调色并修改光影,游戏画质大提升

大家好&#xff0c;今天小编我给大家继续引入一款游戏mod&#xff0c;这次这个模组主要是针对雷神之锤4进行修改&#xff0c;如果你觉得游戏本身光影有缺陷&#xff0c;觉得游戏色彩有点失真的话&#xff0c;或者说你想让雷神之锤4这款游戏增加对光线追踪的支持的话&#xff0c…

Java | Leetcode Java题解之第474题一和零

题目&#xff1a; 题解&#xff1a; class Solution {public int findMaxForm(String[] strs, int m, int n) {int[][] dp new int[m 1][n 1];int length strs.length;for (int i 0; i < length; i) {int[] zerosOnes getZerosOnes(strs[i]);int zeros zerosOnes[0]…

【红外传感器】STM32C8T6标准库使用红外对管

好好学习&#xff0c;天天向上 前言一、了解红外二、标准库的代码1.infrared.c2.infrared.h3.main.c4 现象 总结 前言 红外线&#xff1a;频率介于微波与可见光之间的电磁波。 参考如下 【STM32】标准库与HAL库对照学习教程外设篇–红外避障传感器 光电红外传感器详解&#…

查看 Excel 应用程序中已打开的 Excel 文件的完整路径

要查看 Excel 应用程序中已打开的 Excel 文件的完整路径&#xff08;全路径&#xff09;&#xff0c;你可以通过以下几种方法获取具体路径&#xff0c;尤其是在 VSTO 应用程序中。 方法1&#xff1a;使用 VSTO Excel 外接程序代码 在 VSTO 外接程序代码中&#xff0c;您可以直接…

前端反馈弹框组件封装

一、需求背景 需要针对某个功能进行用户调查反馈&#xff0c;设计一个弹框&#xff0c;进行后端入表记录&#xff0c;以便后期进行数据分析。 二、实现UI 三、代码留存 以vue为例 <template><div class"advice-container"><van-dialogv-model"…

聚类分析 | WOA-K-means++聚类优化算法

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 (创新)WOA-K-means聚类优化算法 (WOA聚类优化&#xff0c;创新&#xff0c;独家) 鲸鱼算法优化K-means聚类优化算法 matlab语言&#xff0c;一键出图&#xff0c;直接运行 1.鲸鱼算法WOA作为群智能算法简单高效&a…