初学 SMBus

article/2025/9/14 15:25:30

(这篇主要对象为固件工程师,简单介绍SMBus的一些基本概念而已)

概述

System Management Bus (简称SMBus或是SMB) ,是1995年由Intel提出的,用来访问主机板上的设备(EEPROM、温度感测器、电压感测器等) 并收集相应的资讯(SPD、温度、电压、版本号)。 SMBus和I2C很相近,都是由两条线: Clock (SMBCLK) 和 Data (SMBDAT) 所组成的。

SMBus 通讯协议主要可以分为物理层,数据链路层和网络层三层

The Physical Layer (物理层):

不同的设备要在同一条SMBus上进行沟通预计将在至少两个具有不同电气要求的互斥环境中运行。这部分主要定义电压电平、噪声容限等。 (主要偏硬体,我也不太熟)

可以注意的地方是,SMBCLK和SMBDAT必须要设为 open drain,并且在bus没有使用的时候,两条线都需要 pull up

The Data Link Layer (数据链路层):

收到讯号之后,就可以解析讯号。 SMBCLK 通常由Master操作,目前SMBus spec定义三种频率:100 kHz、400 kHz 和 1 MHz。一般SMBDAT 是在SMBCLK low 变化,SMBCLK high 时是有效值,所以经验上来看,SMBus 两端device 的 clock frequency不需要设成一样,运作上slave 不用知道 clock frequency,只要它来得及处理就可以。解析讯号可以分为三个部分:

(1) Start and Stop

Start:在SMBCLK为high的时候,SMBDAT从high变low,表示开始通讯

Stop:在SMBCLK为high的时候,SMBDAT从low变high,表示结束通讯

​​​​​​​

 

(2) ACK (Acknowledge)

ACK表示收到了,就是SMBCLK为high的时候,SMBDAT为low

如下图,红色和蓝色的动作都是指在同一条SMBDAT上,前面有提到SMBDAT是必须设为 open drain,所以传送者和接收者两端都可以对其做操作。

 

因为SMBDAT没有人操作的时候,需要pull up,因此如果传送完8个bit,接收者没有回覆ack,就表示not ack(没人收到东西)

(3) Data Transfer

在 START 条件 (“S”) 之后,Master会先传送欲沟通的设备之 7 bits address。 Address后边跟的第8个bit是R/W#,0表示写入,而1表示数据读取。

在传送数据的时候,如果SMBCLK high的时候 SMBDAT 为high表示要传送的数据是1,反之如果SMBDAT为low表示要传送的数据为0。

最后资料传输由Master产生的 STOP (P) 条件终止。

 

Network Layer (网路层) :

这边就是将数据链路层解析出来的数据,解析欲执行动作,并作相对应处理。 SMBus有定义一些指令,例如下图,详情参阅 SMBus Specifications

但是通常这部分详细指令对应行为,还是会去参考设备的文件,这边用4-Kbit Serial Presence Detect (SPD) EEPROM compatible with JEDEC EE1004 (st.com) 举个简单的例子

它的spec中定义,Start之后第一个byte为slave address,第8个bit设为0表示write,后面接的byte就表示想要读取的offset (偏移量)

接着传送一个Re-Start,传送slave address,第8个bit设为1,Slave回复ack之后,会接着回覆该offset所存放的数据,直到Master发起Stop讯号

下图的Random Address Read对应SMBus Command 就是Read Byte

Seqential Random Read应该比较像 Read 32吧,不完全一样,有一点点变形


http://chatgpt.dhexx.cn/article/14dywInT.shtml

相关文章

SMBus协议

SMBus协议 文章目录 SMBus协议参考资料:一、 SMBus是I2C协议的一个子集二、 SMBus协议分析2.1 symbols(符号)2.2 SMBus Quick Command2.3 SMBus Receive Byte2.4 SMBus Send Byte2.5 SMBus Read Byte2.6 SMBus Read Word2.7 SMBus Write Byte2.8 SMBus Write Word2.…

系统管理总线(SMBus)介绍

SMBus介绍 系统管理总线协议概要系统管理总线 关键标记表SMBus接口函数1. SMBus Quick Command2. SMBus接收字节函数:i2c_smbus_read_byte()3. SMBus发送字节函数:i2c_smbus_write_byte()4. SMBus读取字节函数:i2c_smbus_read_byte_data()5. …

SMBus学习记录

SMBus学习记录 注:本文基于对于smb3.0 spec的学习总结。更多时序要求需要查阅spec。 SMBus 是 System Management Bus 的缩写,译为系统管理总线,SMBus是一种二线制串行总线,1996年第一版规范开始商用。它大部分基于I2C总线规范。…

SMBus通信,与IIC通信的差异

SMbus总线 SMBus是System Management Bus的缩写,它是一种简单的串行通信总线,用于连接计算机上的系统管理芯片和其他设备,如电池、风扇、温度传感器等。SMBus是由英特尔公司开发的,它基于I2C总线协议,但是增加了一些额…

【Linux】特别篇--SMBus 协议

【Linux】特别篇--SMBus 协议 一、SMBus 简介二、SMBus 与 I2C 区别三、SMBus协议分析3.1 符号含义3.2 SMBus Quick Command3.3 SMBus Receive Byte3.4 SMBus Send Byte3.5 SMBus Read Byte3.6 SMBus Read Word3.7 SMBus Write Byte3.8 SMBus Write Word3.9 SMBus Block Read3.…

SMBUS的介绍与访问

博文是为了总结自己在bios学习上面的点点滴滴,并且加深印象,由于本人水平有限,难免存在不足之处,望指正,同时感谢CSDN提供的平台。本文主要介绍的是SMBUS。 1 SMBUS的简介 特点: SMBUS,System …

java完整开发环境搭建_如何搭建一个完整的Java开发环境

这篇文章主要教大家如何搭建一个完整的Java开发环境,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 作为一个Java程序员,配置一个java开发环境是必备的技能,今天给广大菜鸟初学者补上一课。环境的配置,大概就分三个…

1.1-java开发环境搭建

java开发环境搭建 回到第一章:目录 文章目录 java开发环境搭建前言一、下载jdk1.安装前检查 二、安装jdk1.安装2.配置环境变量3.验证安装 前言 本节内容是搭建java的开发环境。 分为三步:下载jdk;安装jdk;配置环境变量&#xff…

Windows Java开发环境搭建

1.下载安装配置 JDK 8 打开 https://developer.oracle.com/找到 Java8 下载位置,点击下载链接,下载JDK 8 下载后如下图所示,双击安装一直选择选择下一步 2.下载安装 Eclipse点击官网下载 Eclipse下载后就是一个压缩包,只需解压即…

基于Centos7的Java开发环境搭建

基于Centos7的Java服务器搭建 前提:Centos常用命令安装 1. 安装wget yum -y install wget2. 安装gcc yum -y install gcc1. Centos7下的防火墙操作 systemctl status firewalld # 查看防火墙状态 systemctl start firewalld # 开启防火墙 systemctl stop fi…

Java开发环境的搭建与配置

Java开发环境的搭建与配置 1、JDK、JRE、JVM的关系 2、JDK的下载:http://java.sun.com 3、JDK安装:可以自定义安装路径 4、JDK环境变量配置: 鼠标右击【计算机】->【属性】->【高级系统设置】->【高级】->【环境变量】 系统变…

Java开发环境搭建实践

前言 刚刚弄完python的环境搭建,今年打算也要好好学习Java,所以把Java的环境弄起来 搭建过程 jdk下载和安装 下载 官网:Oracle 甲骨文中国 | 云应用和云平台 打开官网 点击产品后下拉找到Java点进去。 下载Java 我就下载最新的jdk把…

程序员福音 【完整的Java开发环境搭建】 系列篇

原文地址 BY Jason 文章目录 原文地址Java开发环境搭建统一问题解决(更新中)1. vim常用操作命令2. 关于Linux防火墙开放端口问题 环境安装目录(更新中)Docker安装容器安装SSHJDK安装MySQL安装Redis安装RabbitMQ安装 Java开发环境…

Windows下Java开发环境搭建

本文以Win7操作系统解压版Eclipse安装版JDK1.7为例,展示如何搭建初级Java开发环境。 第一步:根据自己电脑的操作系统的位数选择相应版本的安装包进行安装: (1)查看自己电脑操作系统位数:找到“计算机”图标…

Java开发环境搭建详细教程(JDK+Eclipse)

前言 学习 Java 编程的第一件事情就是把开发环境搭建起来,这样才能开始快乐的编程学习之旅。然而,很多萌新经常因为种种问题无法搭建好开发环境,导致自己信心受挫,学习兴趣和激情也大减,甚至因此彻底放弃学习 Java 编…

【Java编程进阶】Java开发环境搭建

文章详细讲述了 Java 开发环境的搭建,编写并运行第一个 Java 程序,为后续的 Java 学习做了准备工作。 推荐学习专栏:Java编程进阶之路 文章目录 1. 为什么安装JDK?2. JDK的下载安装3. 配置环境变量4. 第一个Java程序1. 为什么安装JDK? 什么是JDK? JDK是java软件开发包,…

Java开发环境搭建超全详解

在项目产品开发中,开发环境搭建是软件开发的首要阶段,也是必须阶段,只有开发环境搭建好了,方可进行开发,良好的开发环境搭建,为后续的开发工作带来极大便利。 对于大公司来说,软件开发环境搭建工…

JAVA开发环境的搭建(最新版)【2019.2.12】

JAVA环境搭建 JAVA(咖啡)这个名字很有意思这里我会教大家来找到泡咖啡需要的用品 一、下载环境包(找到茶杯) 首先,我们需要到Oracle官网去下载开发环境步骤如下 主页操作如下(可能会随着时间的变化网页布局会改变,不要慌&#…

Java开发环境搭建:Windows

Java开发环境搭建:Windows JDK下载安装JDK下载设置环境变量测试是否安装成功 开发工具下载安装:IdeaIdea下载Idea安装 Idea开发JAVA推荐一波 JDK下载安装 JDK下载 JDK官网下载点这里 根据自己的电脑操作系统选择JDK 的安装包。 需要记住安装位置,后面设置环境变量…

Java开发的环境搭建

目录 1>下载并安装JDK 2>下载并安装IntelliJ IDEA Ultimate 3>下载并安装Tomcat 1>下载并安装JDK 下载地址(要注册账号,建议去百度网盘下载): https://www.oracle.com/java/technologies/javase/javase-jdk8-dow…