SMBUS(系统管理总线)基于I2C总线,主要用于电池管理系统中。它工作在主/从模式:主器件提供时钟,在其发起一次传输时提供一个起始位,在其终止一次传输时提供一个停止位;从器件拥有一个唯一的7或10位从器件地址。

SMBus只工作在从10kHz到最高100kHz(I2C则有100K/400K/3.45MHZ)。最低工作频率10kHz是由SMBus超时功能决定的,当SCL(主机提供)太低而超过35 ms时,从器件将复位正在进行的通信。相反,I2C采用主器件硬件复位。

SMBus需要一定数据保持时间(300nS),而 I2C总线则是从内部延长数据保持时间。

SMBus具有一种警报响应地址(ARA),因此当从器件产生一个中断时,它不会马上清除中断,而是一直保持到其收到一个由主器件发送的含有其地址的ARA为止。

上拉电阻的区别:SMBus(14k ohm@5V Vdd,8.5k ohm@3V Vdd不过这个定义并非牢不可破,就一般实务而言,在SMBus上也可用2.4k~3.9k ohm范畴的阻值);而I2C(1.6k ohm@5V Vdd,1k ohm@3V Vdd)。

ACK与NACK:I2C可以ACK也可NACK;但SMBUS必须ACK,安全可靠性要求更高。

命名的区别:I2C(SDL/SCL);

      SMBUS: SMBDat,SMBCLK;SMBSUS(OC门,需要上拉,终端提醒主设备,低有效)

电气特性区别:

I2C的Hi/Lo逻辑准位有两种认定法:相对认定与绝对认定(Vdd的电压),Hi为0.7 Vdd,Lo为0.3Vdd,

                绝对认定则与TTL准位认定相同,直接指定Hi/Li电压,Hi为3.0V,Lo为1.5V。

SMBus只有绝对认定,且准位与I2C有异,Hi为2.1V,Lo为0.8V,与I2C不全然吻合但也算部分交集。不过,SMBus后来也增订一套更低电压的准位认定,Hi为1.4V,Lo为0.6V,这是为了让运用SMBus的装置能更省成本而有的作法。

电流的区别:I2C(正常工作电流3mA,漏电流10uA);SMBUS(正常工作电流100uA,漏电流1~5uA)

SMBUS总线协议:

  数据在SMBCLK为高时必须稳定,在SMBCLK为低时才允许变化;

  1. 开始和结束条件并不总是由总线主器件产生的。在开始条件产生后,总线就被认为处于忙碌状态。当出现结束条件或SMBCLK和XMBDAT两条线维持在高电平的时间超过THIGH:MAX后,总线处于闲置状态。
  2. 每个字节包含八个比特。在总线上每个字节传输完都必须紧跟一个确认比特。字节在传输时都都先传送最高位(MSB)

  3. 为了确认一个字节,接收端必须在时钟脉冲的高电平阶段,根绝SMBus的时序规范,将SMBDAT拉到低

4 SMBUS除了和I2C一样具有0x00的广播地址外,还有b0001000R/W来表示警报响应地址

数据有效性                                                                                                       图4-2:开始和结束条件

图4-4:SMBus的ACK和NACK信号

SMBUS与I2C的更多相关文章

  1. SMBus与I2C的差别

    The I²C bus and the SMBus are popular 2-wire buses that areessentially compatible with each other. - ...

  2. Linux设备驱动模型之I2C总线

    一.I2C子系统总体架构 1.三大组成部分 (1)I2C核心(i2c-core):I2C核心提供了I2C总线驱动(适配器)和设备驱动的注册.注销方法,提供了与具体硬件无关的I2C读写函数. (2)I2 ...

  3. Linux I2C总线控制器驱动(S3C2440)

    s3c2440的i2c控制器驱动(精简DIY),直接上代码,注释很详细: #include <linux/kernel.h> #include <linux/module.h> ...

  4. Linux I2C设备驱动编写(一)

    在Linux驱动中I2C系统中主要包含以下几个成员: I2C adapter 即I2C适配器 I2C driver 某个I2C设备的设备驱动,可以以driver理解. I2C client 某个I2C ...

  5. 【转】Linux I2C设备驱动编写(一)

    原文网址:http://www.cnblogs.com/biglucky/p/4059576.html 在Linux驱动中I2C系统中主要包含以下几个成员: I2C adapter 即I2C适配器 I ...

  6. SMBus

    SMBus (System Management Bus,系统管理总线) 是1995年由Intel提出的,应用于移动PC和桌面PC系统中的低速率通讯.希望通过一条廉价并且功能强大的总线(由两条线组成) ...

  7. I2C(三) linux3.4(内核分析)

    目录 I2C(三) linux3.4(内核分析) (一)总线流程 bus.probe match i2c_device_probe (二)client注册 方式(一)静态加载 方式(二)指定设备 方式 ...

  8. 针对piix4_smbus ****host smbus controller not enabled的解决方法

    SMBus 目录 SMBus与I2C的差别 SMBus 是 System Management Bus 的缩写,是1995年由Intel提出的,应用于移动PC和桌面PC系统中的低速率通讯.它主要是希望 ...

  9. i2c总线驱动,总线设备(适配器),从设备,从设备驱动的注册以及匹配

    常用链接 我的随笔 我的评论 我的参与 最新评论 我的标签 随笔分类 ARM裸机(13) C(8) C++(8) GNU-ARM汇编 Linux驱动(24) Linux应用编程(5) Makefile ...

随机推荐

  1. HTML5学习(1)简介

    HTML5是HTML最新的修订版本,2014年10月由万维网联盟(W3C)完成标准制定. HTML5的设计目的是为了在移动设备上支持多媒体. HTML5 简单易学. 什么是 HTML5? HTML5 ...

  2. Visual Studio 2017:SQLite/SQL Server Compact ToolBox使用

    1.首先是下载安装插件:SQLite/SQL Server Compact Toolbox,也可以从工具-->扩展和更新-->联机-->搜索:SQLite/SQL Server Co ...

  3. sqli-libs(42-45(post型)关)

    Less_42 查看源代码,可以看到password没有经过mysqli_real_escape_string()函数进行处理,所以这个时候我们在这个位置进行构造 使用admin 111111进行登录 ...

  4. 511,display:inline-block什么时候不会显示间隙?

    (百科: 在CSS布局中,如果我们想要将一些元素在同一行显示,其中的一种方法就是把要同行显示的元素设置display属性为inline-block,但是你会发现这些同行显示的inline-block元 ...

  5. MySQL多表创建关联及操作

    外键 现在有两张表“分类表”和“商品表”,为了表明商品属于哪个 类别,通常情况下,我们将在商品上添加一列,用来存放分类的cid信息,此列成为外键. 此时,分类表 category 称作主表,cid 成 ...

  6. Linux中Oracle启动侦听报错TNS:permission denied的解决方法

    最近在开发环境 oracle 启动侦听的时候,出现了 TNS:permission denied 的问题,通过网上和咨询朋友,最终找到了解决方案,现在共享出来给有需要的朋友. [oracle@orac ...

  7. JEECG用户录入时用户账号长度修改

    JEECG用户账号默认长度为10字符,但实际运用中很大可能大于10字符. 解决方法: 1.找到\webpage\system\user\user.jsp文件 <input id="us ...

  8. Spring Cloud Alibaba 实战 之 Nacos 服务注册和发现

    服务注册与发现,服务发现主要用于实现各个微服务实例的自动化注册与发现,是微服务治理的核心,学习 Spring Cloud Alibaba,首先要了解框架中的服务注册和发现组件——Nacos. 一.Sp ...

  9. [Python] Tkinter的食用方法_02_LabelFrame RadioButton CheckButton

    #开始 Python的话 我是看的小甲鱼的视频 所以代码也是小甲鱼的修改版 本博客这里只是学习记录 小甲鱼是个很棒的老师,虽然经常飙车.... #第一个代码 from tkinter import * ...

  10. ES6-对象的简写方式

        var name = 'tom';     var age = 11;     //es5定义对象     var obj = {         name:name,         age ...