1.概述:

系统管理总线是一种两线制接口。它基于I2C 总线原理演变而来,可以认为是简化版的I2C总线。

SMBus最初是应用到智能电池,如电池充电器和一个微控制器。其提供一个系统和电源管理相关的任务控制总线。如今,SMBus总线可以连接的设备类型更多样化,包括与电源相关的设备,系统的传感器,EEPROM的容量等设备的信息通信。

SMBus体现在OSI模型的下三层:物理,数据链路,网络。物理层定义了了SMBus的电气特性;数据链路层部分规范化位、字节的数据传输,仲裁和时钟信号;网络层处理处理SMBus地址解析协议和总线数据传输协议。

2.通用特性:

1)物理层:

DC特性:

AC特性:

2)数据链路层:

按通用思想,使用电平的高低代表逻辑的0和1:

数据有效性:数据必须在时钟的高电平周期保持稳定,数据的状态只能在时钟低电平的情况下才能改变;

开始和停止条件(与I2C相同):

在SMBCLK 线是高电平时,SMBDAT 线从高电平向低电平切换,表示数据传输开始;

当SMBCLK 线是高电平时,SMBDAT 线由低电平向高电平切换,表示数据传输停止;

总线空闲:

SMBCLK 和SMBDAT 线都处于高电平期间,总线空闲。

数据传输:

数据传输以字节为单位,传输的字节数量不限,但是每个字节后必须紧跟一个ACK响应。

首先传输的是数据的最高位MSB。

我们知道在I2C协议中存在clock stretching特性:当一组数据传输完成,接收器也回传ACK信号后,如果接

收器需要一段时间来储存收到的数据,则可以利用控制SCL引脚为低电平的方式——将SCL维持为低电平,

直到接收器能够接受下一组数据为止(所以也可以理解为什么I2C的CLK为双向的原因)。

那么同样在SMBus总线中也存在这样的功能:从机要完成一些其他功能(例如一个内部中断服务程序) 后,才能接收或发送下一个完整的数据字节,可以使时钟线SCL 保持低电平,迫使主机进入等待状态,当从

机准备好接收下一个数据字节并释放时钟线SCL 后,数据传输继续。

3)网络层:

模型:

支持SMBus的主、从器件。

从器件会被分配给唯一的地址,但有些地址是被协议保留,不能再分配给任何器件的,它们如下图所示:

总线协议:

下面已写、读字节/字为例,描述具体的协议过程:

写字节/字:

主器件在发送完从器件地址(Slave Address)后,发送写入位(Wr)。从器件响应ACK。主器 件再次发命令码

(Command Code),从器件再次确认ACK,主机发送数据字节或字(低字节在前)。 从器件ACK 每一个字

节,整个传输在停止条件后结束。

读字节/字:

读数据要比写数据稍微复杂一些。首先主机要写请求命令到从设备。重发一次起始条件(S+地址),从器

件 将返回一或两个字节的数据。重发起始信息之没有停止位,在读完成后主器件要发NACK。

SMBus协议还支持块的读写操作,在Command Code后加需要读写的字节数目:

在这里,地址的重复操作,起到了改变传输方向的作用。

3)SMBus的可选信号:

SMBSUS#信号:

系统进入待机模式时,SMBSUS#变低。待机模式是指当大部分设备休眠或断电时一个低功率模式。一旦恢

复,SMBSUS#电平拉高。之后,所有设备回到运行状态。

SMBALERT#:

该引脚连接至主器件,作为中断信号线使用。

多个从器件可以通过线与连接至一个主器件引脚,系统通过仲裁决定从地址通信的权利。

4)I2C与SMBus的区别:

DC spec:

I2C的Hi/Lo逻辑准位有两种认定法:相对认定与绝对认定,相对认定是依据Vdd的电压来决定,Hi为

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

SMBus只有绝对认定,Hi为2.1V,Lo为0.8V,与I2C有部分交集。不过,SMBus后来也增订一套更低电压的准

位认定,Hi为1.4V,Lo为0.6V,这是为了让运用SMBus的装置能更省成本而有的作法。

电流:

SMBus在低功耗的表现方面优于I2C。

I2C 指定连接到总线上的每个设备的最最大漏电流为10 微安。SMBus 1.0 版本规定的最大漏电流为1 微

安。为减低SMBus 设备测试成本SMBus 1.1 版本规定要求放宽至5 微安。

相比于I2C对于总线电容的限制,SMBus并没有对此做任何规定。但是它指出了IPULLDOWN 的最大电流是

350uA。那么可以计算出VDD=3.3V时,电阻值应大于9.4K。

频率:

I2C提供了两种操作模式,标准模式(100 KHz)和快速模式(400 KHz);

SMBus的时钟频率在10KHz~100KHz之间。

时序:

I2C对信号的时序并没有强制的要求;

SMBus规定了数据的setuptime、holdtime必须满足一定的条件(参见上面SMBus的AC标准);

ACK与NACK

通常情况下,I2C协议中,主控端发送端(主控端)要与接收端(受控端)通讯前,会在总线上广播受控端的地址 信息,每个接收端都会接收到地址信息,但只有与该地址信息相切合的接收端会在地址信息发布完后发出 「已妥」的回应(Acknowledge;ACK),让发送端知道对应的接收端确实已经备妥,可以进行通讯。

但是,I2C并没有强制规定接收端非要做出响应不可,也可以默不作声,即便默不作声,发送端还是会继续

工作,开始进行数据传递及下达读/写指令,如此的机制在一般运用中还是可行,但若是在一些实时 (Real Time)性的应用上,任何的动作与机制都有一定的时限要求,这种可有可无式的响应法就会产生问 题,可 能会导致受控端无法接收信息。 相同的情形,在SMBus上是不允许接收端在接收地址信息后却不发 出回应,每次都要回应,为何要强制回应? 其实与SMBus的应用息息相关,SMBus上所连接的受控装置有 时是动态加入、动态移除的,例如换装一颗新 电池,或笔记本电脑接上DOCK PORT等,如果接入的装置已 经改变却没有回应,则主控端的程序所掌握的并 非是整体系统的最新组态,就会造成误动作。

SMBus协议的格式属于I2C定义格式中的子集。I2C可以通过SMBus协议访问与SMBus兼容的设备。

参考资料:

1)SMBus系统管理总线;

2)https://www.kernel.org/doc/Documentation/i2c/smbus-protocol;

转载自:http://blog.sina.com.cn/s/blog_a438e5290102w4df.html

smbus协议的command_SMBus总线概述相关推荐

  1. smbus协议的command_SMBus协议总结

    SMBus 协议总结 本文将对 SMBUS 协议进行总结.本文针对该协议的所有修订版(包括 1.0,1.1,2.0 ) .具体的 协议特性将在本文最后进行介绍. 一些 I2C 适配器仅仅兼容 SMBu ...

  2. smbus协议的command_SMBus读取从设备数据总结

    本帖最后由 HarmonyHu 于 2010-9-5 10:47 编辑 说明:本人刚入门,写该文只是为了总结刚学到的知识.全部内容都是经过实践得出来的.但实践上的结果并不能反映理论上的正确.所以若有不 ...

  3. 【嵌入式Linux】嵌入式Linux应用开发基础知识之I2C应用编程和SMBus协议及AP3216C应用编程

    文章目录 前言 1.IIC协议和SMBUS协议 1.1.IIC协议 1.1.1.硬件框架 1.1.2.软件框架 1.1.3.读写数据格式 1.1.4.硬件结构--在硬件上是如何实现双向传输 1.2.S ...

  4. 总线概述及常见总线(转)

    一. 总线概念 所谓总线(Bus),是指计算机设备和设备之间传输信息的公共数据通道.总线是连接计算机硬件系统内多种设备的通信线路,它的一个重要特征是由总线上的所有设备共享,可以将计算机系统内的多种设备 ...

  5. 【Linux】特别篇--SMBus 协议

    [Linux]特别篇--SMBus 协议 一.SMBus 简介 二.SMBus 与 I2C 区别 三.SMBus协议分析 3.1 符号含义 3.2 SMBus Quick Command 3.3 SM ...

  6. SMBus协议与IIC协议区别

    1.介绍 系统管理总线(SMBus)是一个两线接口.通过它,各设备之间以及设备与系统的其他部分之间可以互相通信.它基于I2C操作原理.SMBus为系统和电源管理相关的任务提供一条控制总线.一个系统利用 ...

  7. Linux系统驱动之SMBus协议

    资料下载&百问网技术交流群,百万嵌入式工程师聚集地: https://www.100ask.net/page/2248041 资料下载 coding无法使用浏览器打开,必须用git工具下载: ...

  8. IIC设备驱动程序(六)————SMBus协议

    1.介绍 系统管理总线(SMBus)是一个两线接口.通过它,各设备之间以及设备与系统的其他部分之间可以互相通信.它基于I2C操作原理.SMBus为系统和电源管理相关的任务提供一条控制总线.一个系统利用 ...

  9. http和https的区别 与 SSL/TLS协议运行机制的概述

    http和https的区别 与 SSL/TLS协议运行机制的概述 参考1 1 http 是不使用的SSL/TSL的通信通道 窃听风险:第三方获取通信内容 篡改风险:修改通信内容 冒充风险:冒充他人身份 ...

最新文章

  1. 高性能服务器 - window篇
  2. 234C. Weather
  3. C++设计模式-状态模式
  4. springboot使用curator来实现leader选举
  5. java 获取js变量类型_JavaScript 的数据类型及其检测
  6. 15. GD32F103C8T6入门教程-adc单通道轮训采集
  7. c语言有2维结构体没,c语言结构体说明
  8. 秋色园QBlog技术原理解析:开篇:整体认识(一)
  9. android shape 绘制气泡图,气泡图-自定义 shape
  10. ARM:ARM体系结构与编程、ARM指令流水线、ARM编程模型基础
  11. 技嘉x58不支持服务器内存,一般机箱放不下 技嘉X58送海盗船内存
  12. anaconda 重新安装
  13. mysql 大量写入 优化_MYSQL大批量写入之性能优化
  14. Flutter中ListView顶部有空白
  15. gitHub不能用密码推送了,必须要使用令牌
  16. 马士兵Python基础版2020教程P58-P96 PPT笔记+课堂代码
  17. R语言Excel的读写
  18. 永久屏蔽警告:grep: warning: GREP_OPTIONS is deprecated; please use an alias or script
  19. [Luogu P2057] 善意的投票
  20. python将图片分割成4分代码

热门文章

  1. SpringBoot RequestBody ajax提交对象
  2. ActiveMQ 发送和接收消息
  3. Adobe Acrobat DC
  4. 关于mysql ERROR 1045 (28000)错误的解决办法
  5. iOS 翻译-UIWebView的基本简介-官方文档翻译
  6. layui表头样式_layui中table表头样式修改方法
  7. java读图片显示到前端_java从前端获取参数添加到图片后返回整张图片
  8. python 连通区域_python skimage 连通性区域检测方法
  9. 数据预测之BP神经网络具体应用以及matlab实现
  10. 从输入URL到页面显示的过程