【Linux】特别篇--SMBus 协议

news2024/11/20 9:16:54

【Linux】特别篇--SMBus 协议

  • 一、SMBus 简介
  • 二、SMBus 与 I2C 区别
  • 三、SMBus协议分析
    • 3.1 符号含义
    • 3.2 SMBus Quick Command
    • 3.3 SMBus Receive Byte
    • 3.4 SMBus Send Byte
    • 3.5 SMBus Read Byte
    • 3.6 SMBus Read Word
    • 3.7 SMBus Write Byte
    • 3.8 SMBus Write Word
    • 3.9 SMBus Block Read
    • 3.10 SMBus Block Write
    • 3.11 I2C Block Read
    • 3.12 I2C Block Write
    • 3.13 SMBus Block Write - Block Read Process Call
    • 3.14 Packet Error Checking (PEC)
  • 四、SMBus 和 I2C 的使用建议


文章参考教程:SMBus协议
SMBus协议:官网

一、SMBus 简介

  SMBus 是 I2C 协议的一个子集。

有关I2C协议可以看这篇:
【STM32】标准库与HAL库对照学习教程特别篇–IIC通信原理讲解

SMBus 全称 System Management Bus,即系统管理总线。

  • SMBus 是Intel与Duracell共同制订笔记本电脑所用的智能型电池(SmartBattery)时所研发的接口,首版于1995年发表。
  • SMBus 也被用来连接各种设备,包括电源相关设备,系统传感器,EEPROM 通讯设备等等。
  • SMBus 为系统和电源管理这样的任务提供了一条控制总线,使用 SMBus 的系
    统,设备之间发送和接收消息都是通过 SMBus,而不是使用单独的控制线,这
    样可以节省设备的管脚数。
  • SMBus 是基于 I2C 协议的,SMBus 要求更严格,规定了更多细节与规范。

在这里插入图片描述


二、SMBus 与 I2C 区别

  • VDD 的极限值不一样。I2C 协议的范围很广,甚至讨论了高达 12V 的情况,而SMBus规定了在1.8V~5V。
  • 时钟频率规定不同。I2C 没有时钟频率限制,一般最常见的是100k、400k,而SMBus规定时钟频率必须在10k~100k内。
  • 当设备需要处理内部事情时,可将时钟线拉低,I2C 没有规定拉低时长,而SMBus有规定时限。
    地址应答规定不同。一个 设备接收到它的设备地址后,I2C 协议没有强制要求必须发出回应信号,而SMBus:强制要求必须发出回应信号。
  • 数据格式规定不同。I2C 没有定义数据的格式,格式由设备来定义,而SMBus 协议明确了数据的传输格式。
  • SMBus 有低功耗的版本

三、SMBus协议分析

3.1 符号含义

S (1 bit) : 起始位
Sr (1 bit) : 重复的起始位
P (1 bit) : 停止位
R/W# (1 bit) : Read/Write bit,读写位
A, N (1 bit) : 应答位
Address(7 bits): 地址位,7 位地址
Command Code (8 bits): 命令字节,一般用来选择芯片内部的寄存器
Data Byte (8 bits): 数据字节,8 位;如果是 16 位数据的话,用 2 个字节来表示。
Count (8 bits): 在 block 操作总,表示数据长度
[..]: 中括号表示 I2C 设备发送的数据,没有中括号表示 主机 发送的数据

3.2 SMBus Quick Command

在这里插入图片描述
只是用来发送一位数据:R/W#本意是用来表示读或写,但是在 SMBus 里可以用来表示其他含义。比如某些开关设备,可以根据这一位来决定是打开还是关闭。

3.3 SMBus Receive Byte

在这里插入图片描述

读取一个字节,主设备 接收到一个字节后不需要发出应答信号(上图中 N 表示不回应)。

3.4 SMBus Send Byte

在这里插入图片描述
发送一个字节数据。

3.5 SMBus Read Byte

在这里插入图片描述
先发数据,发出 芯片内部的寄存器地址,再读数据,读取设备寄存器地址储存的1个字节的数据。

3.6 SMBus Read Word

在这里插入图片描述
先发数据,发出 芯片内部的寄存器地址,再读数据,读取设备寄存器地址储存的2个字节的数据。

3.7 SMBus Write Byte

在这里插入图片描述
先发数据,发出 芯片内部的寄存器地址,再写数据,向设备寄存器地址写1个字节的数据。

3.8 SMBus Write Word

在这里插入图片描述
先发数据,发出 芯片内部的寄存器地址,再写数据,向设备寄存器地址写2个字节的数据。

3.9 SMBus Block Read

在这里插入图片描述
先发数据,发出 芯片内部的寄存器地址,再读数据,先读到一个字节(Block Count),表示后续要读的字节数,然后读取全部数据

3.10 SMBus Block Write

在这里插入图片描述
先发数据,发出 芯片内部的寄存器地址,再写数据,先写一个字节(Block Count),表示后续要写的字节数,然后写全部的数据

3.11 I2C Block Read

在这里插入图片描述
I2C 协议的 连续读多个数据,与SMBus 的区别是不需要接收读取总的字节数

3.12 I2C Block Write

I2C 协议的 连续写多个数据,与SMBus 的区别是不需要写入总的字节数
在这里插入图片描述

3.13 SMBus Block Write - Block Read Process Call

在这里插入图片描述
先写一块数据,再读一块数据。

3.14 Packet Error Checking (PEC)

在这里插入图片描述

PEC 是一种错误校验码,如果使用 PEC,那么在 P 信号之前,数据发送方要发送一个字节的 PEC 码(它是 CRC-8 码)。

四、SMBus 和 I2C 的使用建议

因为很多设备都实现了 SMBus,而不是更宽泛的 I2C 协议,所以优先使用SMBus。即使 I2C 控制器没有实现 SMBus,软件方面也是可以使用 I2C 协议来模拟 SMBus。所以:Linux 建议优先使用 SMBus。

在这里插入图片描述

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

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

相关文章

672页21万字智慧高速数据中心大数据平台建设方案

目 录 第1章 设计总述 6 1.1 项目概述 6 1.1.1 项目名称 6 1.1.2 建设单位概况 6 1.1.3 公司具备的优势 6 1.2 对项目的理解分析 7 1.2.1 项目现状分析 7 1.2.2 建设目标分析 10 1.2.3 建设内容分析 13 1.2.4 项目建设重难点分析 19 1.2.5 项目风险分析 22 1.2.6 各中心职能需求…

python控制台颜色输出设置

python控制台颜色输出设置 控制台输出内容的颜色有前景色与背景色 控制台的展示效果有限,并不能像前端一样炫酷,只能做一些简单的设置 原理 python终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无…

【C++笔试强训】第十天

🎇C笔试强训 博客主页:一起去看日落吗分享博主的C刷题日常,大家一起学习博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话:夜色难免微凉,前方必有曙光 🌞。 💦 &…

操作系统的地址、数据存储和大小端问题

文章目录基本概念什么是位,什么是字节?地址总线内存地址物理地址虚拟地址寻址空间存储单元CPU位数CPU寻址大端存储和小端存储原理为什么会有大小端模式的区分基本概念 什么是位,什么是字节? 位表示的是二进制位,一般…

C语言中用sizeof和strlen观察数组的变化2

目录 一.前言 二.用sizeof观察字符串数组的变化 代码 运行结果 结果解释 图解 三.用sizeof观察字符数组的变化 代码 注意 运行结果 图解 注意 证明 一.前言 数组名大部分情况下是首元素的地址,只有两种情况除外: sizeof(数组名&…

哈希桶的基本操作 || HashMap和HashSet介绍(手撕源码)

目录 前言: 哈希表介绍 哈希冲突 闭散列 开散列(哈希桶) 模拟实现哈希桶中插入和获取方法 代码实现 HashMap介绍 手撕源码 HashSet介绍 手撕源码 小结: 前言: 🎈一棵搜索树的最快查找数据的时间复杂度是O(…

Java------String类和正则表达式

String在设计时被定义成了final类(最终类),所以不能定义String类的子类,String用来表示字符串常量,是引用数据类型,一旦String类对象的字符序列被定义,那么这个字符序列的值是不能再变化的。 创…

今年十八,喜欢SQL注入

#1024程序员节|用代码,改变世界# 前言 🍀作者简介:被吉师散养、喜欢前端、学过后端、练过CTF、玩过DOS、不喜欢java的不知名学生。 🍁个人主页:被吉师散养的职业混子 🫒每日emo:怀揣…

牛客竞赛每日俩题 - Day5

DP贪心 年终奖_牛客题霸_牛客网 思路: 定义f(i,j)表示从左上角走到坐标(i,j)处能获得的最大奖励。 搜索所有从左上角走到右下角的路径,找到最优路径。 f(i,j)分三种情况: 第一列:f(i, 0) f(i-1, 0) board(i, 0) 如果…

Java:企业应该用Java构建供应链软件吗?

很多公司使用Java编程语言,Java是最流行的编程语言之一,它帮助开发人员简化复杂企业解决方案的应用程序开发过程。 供应链是零售和制造业的重要组成部分,6%的零售业公司使用Java,另一方面,4%的制造公司使用编程语言&am…

基于莱维飞行扰动策略的麻雀搜索算法-附代码

基于莱维飞行扰动策略的麻雀搜索算法 文章目录基于莱维飞行扰动策略的麻雀搜索算法1.麻雀优化算法2. 改进麻雀算法2.1 莱维飞行搜索机制2.2 莱维飞行扰动策略2.3 初始化混沌搜索机制3.实验结果4.参考文献5.Matlab代码6.Python代码摘要:为了解决麻雀搜索算法存在迭代…

(02)Cartographer源码无死角解析-(04) 熟悉bag文件,配置.launch与.lua文件,初步调参

本人讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解(02)Cartographer源码无死角解析-接如下: (02)Cartographer源码无死角解析- (00)目录_最新无死角讲解:https://blog.csdn.net/weixin_43013761/article/details/127350885 文…

算法 | 详解斐波那契数列问题

14天阅读挑战赛 本篇是学习了《趣学算法(第2版)》 第一章之后总结的。 上一篇讲到了等比数列求和问题,求Sn122223...263?S_n 1 2 2^2 2^3 ... 2^{63} ?Sn​122223...263?,该函数属于爆…

1024,我们节日

文章目录1024的前奏1024应该锻炼身体1024 ?为何是1024其他的1024代码有Bug,世界却温暖特殊的一类人群(一)特殊的一类人群(二)写在最后1024的前奏 写博文的时间是23号,距离1024这个标志性的节日…

趣学算法14天阅读|Day2

14天阅读挑战赛 文章目录前言什么是算法?算法复杂度如何评定好算法案例案例一:棋盘的麦子案例二:兔子数列总结前言 📫 作者简介:「六月暴雪飞梨花」,专注于研究Java,就职于科技型公司后端中级工…

@AutoConfigurationPackage注解详解

AutoConfigurationPackage是在springboot启动类注解SpringBootApplication下的EnableAutoConfiguration下。AutoConfigurationPackage作用是指定springboot扫描包,默认就是扫描启动类同包下的类。可以通过AutoConfigurationPackage来附加其他路径,然后sp…

asp.net园林绿化服务交易网站

本设计的目的是通过对园林绿化的初步了解,在巩固网站设计所学知识的基础上。运用于实践,在实践中强化理论知识,做到理论联系实践。在设计中学会搜集资料地方法,学会查阅设计规程。掌握设计步骤,同时培养创新能力&#…

【图像评价】基于matlab GUI图像评价系统【含Matlab源码 2185期】

一、图像质量评价 图像质量评价对图像处理算法的可行性分析以及某类算法达成效果的比较都起着非常重要的指导作用。随着图像处理技术的发展,对于图像质量评价的研究也日益深入,新的评价指标和评价算法不断涌现,共同推动了图像质量评价的进步…

【模型训练】YOLOv7旋翼无人机检测

YOLOv7旋翼无人机检测 1、YOLOv7算法旋翼无人机检测模型训练2、YOLOv7模型模型评估3、模型和数据集下载1、本项目采用YOLOv7算法实现对空中旋翼无人机的检测,在一万多张旋翼无人机检测数据集中训练得到,我们训练了YOLOv7模型,经评估我们得出了各个模型的评价指标; 2、目标类…

研发效能工程实践开篇

背景 随着技术的发展,大至一线互联网公司、小至几十人研发团队的公司都开始开展devops运动。大公司有能力自研,小公司则采用开源解决方案。如何实施devops业界已经有非常成熟的方案,所以本系列不再谈devops工具链以及如何实施。本系列想谈谈…