SMBUS & I2C bus详解
SMBus一般特性
SMBus一般特性SMBus是两线总线。
多台设备时,总线主器件和从器件可能连接到段SMBus总线上。
一般的,一个总线主器件设备初始化一个总线传输器(在它和单个总线从器件之间),并为并提供时钟信号。
原则之外,是在初始化总线设备期间,单总线主器件可主动与多个从器件同时进行传输。
总线从器件设备可以接收由主机提供的数据,也可以提供数据给主器件。
仅有一个设备可以随时控制总线。
当存在多个主器件设备试图控制总线时。
SMBUS 提供了一种仲裁机制,通过线与连接的方式将SMBUS 设备接口连接到SMBUS 总线上。
该规范定义了两种电特性,低功率和高功率两种级别。
第一类,于SMBus的1.0 和1.1 规范中定义的,主要旨在考虑智能电池,但也可与其它低功耗设备连接使用。
此版本引入了另一种高功率电气特性的集合。
适用于有较高驱动能力的需求,例如,与PCI 附加SMBus器件的卡和卡连接器等相互之间的系统板SMBus器件通信。
设备可能由总线VDD供电或通过其它电源VBus,(如,智能电池)和互操作供电,只要他们附合SMBus电气规范。
SMBCLK 和SMBDAT 线是双向的,连接到通过一个上拉电阻或电流源或其他类似的电路正电源电压。
当总线空闲时,这两条线是高电平。
连接到总线上的器件的输出级必须是漏极开路或集电极开路才能执行线与功能。
应注意符合双方的输入和输出级SMBus器件的设计,在总线上设备无负载时,它们的电源是关闭的,即实现掉电设备必须提供无泄漏到地。
设备想要放在(接入)总线上,必须进行驱动总线定义,'0'逻辑低电平。
逻辑'1'的设备应该释放总线,让它上拉高总线电压。
总线可通过一个上拉电阻或电流源拉高。
电路可能涉及更高的总线电容,更复杂的电路,可使用能够限制下拉吸收电流,也提供由低到高过渡到维持SMBus的上升时间规格足够的电流。
I2C与SMBus的区别
I2C与SMBus的区别SMBus是一种二线制串行总线,1996年第一版规范开始商用。
它大部分基于I2C总线规范。
和I2C一样,SMBus不需增加额外引脚,创建该总线主要是为了增加新的功能特性,但只工作在100KHZ且专门面向智能电池管理应用。
它工作在主/从模式:主器件提供时钟,在其发起一次传输时提供一个起始位,在其终止一次传输时提供一个停止位;从器件拥有一个唯一的7或10位从器件地址。
SMBus与I2C总线之间在时序特性上存在一些差别。
首先,SMBus需要一定数据保持时间,而I2C总线则是从内部延长数据保持时间。
SMBus具有超时功能,因此当SCL太低而超过35 ms时,从器件将复位正在进行的通信。
相反,I2C采用硬件复位。
SMBus具有一种警报响应地址(ARA),因此当从器件产生一个中断时,它不会马上清除中断,而是一直保持到其收到一个由主器件发送的含有其地址的ARA为止。
SMBus只工作在从10kHz到最高100KHZ。
最低工作频率10kHz是由SMBus超时功能决定的。
Comparing the I2C Bus to the SMBusAbstract: The I2C bus and the SMBus are popular 2-wire buses that are essentially compatible with each other. Normally devices, both masters and slaves, are freely interchangeable betw een both buses. Both buses feature addressable slaves (although specific address allocations can vary between the two). The buses operate at the same speed, up to 100kHz, but the I2C b us has both 400kHz and 2MHz versions. Complete compatibility between both buses is ensured o nly below 100kHz. This application note focuses on the significant differences between I2C a nd SMB.The I2C bus and the SMBus are popular 2-wire buses that are essentially compatible with each other. Normally devices, both masters and slaves, are freely interchangeable between both b uses. Both buses feature addressable slaves (although specific address allocations can vary between the two buses). The buses operate at the same speed, up to 100kHz, but the I2C bus h as both 400kHz and 2MHz versions. Obviously, complete compatibility between both buses using all devices is ensured only below 100kHz.This application note focuses on the significant differences between the two buses. Although it is assumed that the reader has some knowledge of the I2C bus and/or the SMBus, let's fir st review some protocol basics:•Start and Stop events. These are especially important in that they are ways of signa ling to an interface that it needs to go to an initialized or reset state.•Data and Clock must be high to generate Start and Stop. A master can't generate a S tart or Stop unless both the Data (SDA for I2C and SMBData for SMBus) and Clock (SCLfor I2C and SMBClk for SMBus) lines are free (not pulled low). This is a consequence of being an open-collector bus.•Start and Stop conditions are the only times there will be a transition on the Data line while Clock is high.•Data can change state only when Clock is low during a communication. The data on Da ta must always be ready just prior to a high on Clock and be changed only after Clock has gone low (with the exception of Start and Stop).Figure 1. A typical communication, showing the Start and Stop conditions.Timeout and Clock SpeedTimeout and (as a consequence of timeout) minimum clock speed are the most important differe nces between the I2C bus and the SMBus.I2C Bus = DC (no timeout)SMBus = 10kHz (35mS timeout)Timeout is where a slave device resets its interface whenever Clock goes low for longer than the timeout, typically 35mSec. Use of a timeout also dictates a minimum speed for the cloc k, because it can never go static. Thus, the SMBus has a minimum-clock-speed specification. By comparison, the I2C bus can go static indefinitely. In the I2C bus, either a master or a slave can hold the clock low as long as necessary to process data.All of this comes about as a result of how the two buses deal with slave errors and recoveri ng from those errors. To understand error recovery, consider that there are two states, Star t and Stop, which on a properly designed I2C or SMBus slave dictate that the slave interface go to a specific state. In the case of a Start, the interface should initialize itself and be ready to receive a communication. This should occur regardless of what preceded the Start condition (for example, if the slave was in the middle of a communication in which the mast er got confused and had to start over). In the case of a Stop, an interface should again ini tialize itself, but should be expecting a Start prior to any new communication. Both Starts and Stops are the only Data transitions that take place when Clock is high. In order for the transitions on Data to take place, the Data line (and the Clock line) must be "free" to all ow the master to place highs and lows on the line as it needs.In the I2C bus, if the slave locks up and holds either Clock or Data low, error recovery is impossible. Very few slave devices actually have the ability to hold Clock. As a result, the most common bus error is slave devices that have ended up in a state where Data (the data l ine) is low. In the I2C bus, a master accomplishes error recovery by clocking Clock until Da ta is high and then issuing a Start followed by a Stop.In contrast to the I2C bus, SMBus slaves are expected to reset their interface whenever Cloc k is low for longer than the timeout specified in the SMBus specification of 35mS. As such, SMBus masters such as the Intel PIIX4 don't have any error recovery routine built in. In rea lity, slave devices need to examine both Clock and Data, even though the SMBus specification doesn't dictate that. This should be done, as experience has shown that slaves in an errorstate can hold Data low, even though Clock can be high. Implementing timeout exactly accordi ng to the SMBus specification doesn't address this error mode.Table 1. Considerations for Mixing Devices and Masters with Regard to TimeoutI2C Slave SMB SlaveI2C Master Clock must be > 10kHzSMB Master Potential for bus lockupThe SMBus is limited to a clock speed of 100kHz, whereas I2C permits speeds up to 400kHz. Logic LevelsDespite differences in logic-level specifications between the two buses, generally devices c an be mixed and matched with abandon. It has proven rare that either an SMBus or an I2C bus has had a fault due to level differences. This may come as a surprise when we compare the re spective level specifications as shown in Figure 1.Figure 2. This is a comparison of level specifications between the I2C bus and the SMBus. I2 C-V DD-related high and low value ranges are shown for power supplies from 3 volts to 5 volts.For further comparison, Table 2 lists the specifications together.Table 2. Level Specifications for the I2C Bus and the SMBusV DD is typically expected to be between 3 volts and 5 volts.High I2C V DD Dependent 0.7 * V DDI2C Fixed 3.0 VSMBus 2.1 VLow I2C V DD Dependent 0.3 * V DDI2C Fixed 1.5 VSMBus 0.8 VAlthough there may seem to be quite a bit of difference between level specifications, device interchangeability has not been shown to be a problem in this regard. This is because maste rs and slaves virtually always have output-voltage swings close to the full supply voltage.Pullup Resistors and Current LevelsWhat wasn't readily evident in the discussion of voltage levels is that these levels are als o specified with different currents between the buses. The SMBus specifies a minimum sink cu rrent of 100μA, and a maximum of 350μA, compared to 3mA for the I2C bus. This in turn woul d determine the lowest acceptable value of the pullup resistor, examples of which are shown in the table below.Table 3. Minimum Pullup Resistor Values per Bus Specifications3V V DD 5V V DDI2C Bus > 1k > 1.6kSMBus > 8.5k > 14kIn reality, it is not unusual to encounter pullup resistor values in SMBus systems, which vi olate this specification by being lower than recommended. A very popular range for pullup re sistor values, even in some SMBus systems, seems to be 2.4k to 3.9k.General Call and Alert ResponseThe I2C bus has an address called General Call, which is 0000 000, and all slaves designed t o respond to the General Call will act accordingly. This is a means by which several devices on the system can be communicated with simultaneously.The SMBus also has a provision for a line called ALERT#, not to be confused with the I2C Gen eral Call address. This line acts as an interrupt to the SMBus master. Upon receipt of an in terrupt, the SMBus master can issue an Alert Response. This Alert Response is sent to addres s 0001 100, and any slave device that generated an interrupt attempts to identify itself by putting its own address on the bus. The device with the lowest address will dominate (due to the open-collector bus). If it is serviced and cleared, the master can repeat the process a nd work up through any other interrupts that may have occurred.Other Little DetailsThere are subtler issues having to do with rise and fall times and bus capacitance that are generally not a concern. In addition, there are some protocol differences with regard to use of Acknowledge and No Acknowledge conditions that are rarely encountered. With most mainstr eam choices of masters and slaves, none of these factors is typically a problem.Summary of Significant Differences1.Timeout and minimum clock speed2.Voltage levels3.Pullup resistor values and current levelsTable 4. ComparisonsI2C SMBus Timeout No Yes Minimum Clock SpeedDC 10kHzMaximum Clock Spe ed 100kHz (400kHz and 2MHz also available)100kHzV HIGH0.7 * V DD, 3.0 V Fixed 2.1V V LOW0.3 * V DD, 1.5 V Fixed 0.8V Max I 3mA350μAClock Nomenclatur e SCLSMBCLKData Nomenclature SDASMBDAT General Call Yes Yes Alert# No Yes。
SMBus
什么是SMBus (系统管理总线)?SMBus 是System Management Bus 的缩写,是1995年由Intel提出的,应用于移动PC和桌面PC系统中的低速率通讯。
它主要是希望通过一条廉价并且功能强大的总线(由两条线组成),来控制主板上的设备并收集相应的信息。
SMBus 为系统和电源管理这样的任务提供了一条控制总线,使用SMBus 的系统,设备之间发送和接收消息都是通过SMBus,而不是使用单独的控制线,这样可以节省设备的管脚数。
使用SMBus,设备还可以提供它的生产信息,告诉系统它的型号,部件号等,针对一些事件的保存它的状态,报告不同类别的错误,接收控制参数,并返回它的状态等。
SMBus 最适用于笔记本电脑上,检测各元件状态并更新硬件设置引脚(pull-high 或pull-low)。
例如,将不存在的DIMM 时钟关闭,或检测电池低电压状态。
SMBus 的数据传输率只有100Kbit/s;这允许单一主机与CPU 和多个主从硬盘通讯并收发数据。
SMBus 也可用于免跳线设计的主板上。
I2C(Inter-Integrated Circuit) 简介I2C(Inter-Integrated Circuit)总线最早产生于在80年代,是一种由菲利普公司开发的串行总线,最初为音频和视频设备开发,用来监视电视机,而如今已经被广泛的应用在智能设备的通讯上,主要在服务器管理中使用。
SMBus,就是Intel在I2C总线协议的基础上开发的。
I2C总线最主要的优点是其简单性和有效性。
它由简单的双向通讯的两芯接口为集成电路之间提供有效的控制。
一条线路用来传输时钟,另外一条用来传输数据。
通过一个带有缓冲区的接口,数据可以被I2C发送或接收。
控制和状态信息则通过一套内存映射寄存器来传送。
利用I2C硬件总线技术可以对服务器的所有部件进行集中管理,可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。
SMBus(共35张)
第3页,共35页。
1.2 一般(yībān)特性
SMBus是一个两线总线。多台设备时,总线的主器件和从器件可能 会连到一个SMBus段上。一般的,总线主设备初始化它和从设备之间的总线传
输器,并提供时钟信号。在初始化总线设备期间,单总线主设备主动与多个从设 备同时进行传输。总线从设备可以接收由主机提供的数据,也可以提供数据给主 设备。
当存在多个主设备试图控制总线时,SMBus提供了一种仲裁机制,通 过wired-AND连接方式将SMBus设备接口连接到SMBus总线上。
第4页,共35页。
SMBus有两条信号线:SMBCLK和SMBDAT,即一条时钟线和一条数 据线。 SMBCLK和SMBDAT线是双向的,当总线空闲时,这两条线是高电平。 设备可能由总线VDD供电或VBUS供电或通过其他电源供电。
第23页,共35页。
3. DOS下访问(fǎngwèn)过程
➢ 先进入SMBus Controller Register
第24页,共35页。
第25页,共35页。
➢ 找到Base Address为F040H(F041H在15:5位为Base Address)
第26页,共35页。
➢ 向IO space中写入F040H进入(jìnrù)Base Address。
Word data方式: ❖ 第一步,将HST_STS(00H)设置为FEH(清掉各个标志位),可以看到
HST_STS数值变成了40H。 ❖ 第二步,将XMIT_SLVA(04H)设置为A3读取方式(A2为写入方式)。 ❖ 第三步,将HST_CMD(03H)设置为10H,说明读取10H处的数据,若要读取其
SMBus与I2C总线的区别
SMBus与I2C总线的区别The I 2C bus and the SMBus are popular 2-wire buses that areessentially compatible with each other.Below,significantdifferences between the two buses.I2C SMBus Timeout No YesMinimum Clock Speed DC 10kHzMaximum Clock Speed 100kHz (400kHz and 2MHz also available) 100kHzV HIGH0.7 x V DD, 3.0V Fixed 2.1VV LOW0.3 x V DD, 1.5V Fixed 0.8VMax I 3mA 350(iA Clock Nomenclature SCL SMBCLK Data Nomenclature SDA SMBDAT General Call Yes YesAlert# No YesSMBus与I2C的差别SMBus与I2C总线之间在时序特性上存在一些差别。
首先, SMBus需要一定数据保持时间,而I2C总线则是从内部延长数据保持时间。
SMBus具有超时功能,因此当SCL太低而超过35 ms时,从器件将复位正在进行的通信。
相反,I2C采用硬件复位。
SMBus具有一种警报响应地址(ARA),因此当从器件产生一个中断时,它不会马上清除中断,而是一直保持到其收到一个由主器件发送的含有其地址的ARA为止。
SMBus只工作在从10kHz到最高100kHz。
最低工作频率10kHz是由SMBus超时功能决定的(1)SMBus是一种二线制串行总线,1996年第一版规范开始商用。
它大部分基于I2C总线规范。
和I2C 一样,SMBus不需增加额外引脚,创建该总线主要是为了增加新的功能特性,但只工作在100KHZ且专门面向智能电池管理应用。
SI测试系列课程之SMBUS信号的参数和测试
Data Setup Time
• 打上Label. Measure→ Measurement Setup • Time→ Clear →Delay
Data狀態改變時到Clock無效時的時間
Data Setup Time
• 跟Hold Time 一样Setup Time 也有两种方法去量测: • 1. 选择Source1为”Channel1”,Delay Edge1选择 为” ”,Mid Ref为”2.1v”Source2 为“Channel2”,Delay Edge2选择为” ” Mid Ref为”0.8V”
Data Setup Time
• 2 .选择Source1为”Channel1”,Delay Edge1选择 为” ”,Mid Ref为”0.8v”Source2 为 “Channel2”,Delay Edge2选择为” ” Mid Ref 为”0.8V”
Data Setup Time
• 下面以第一种方法为例:单次采样,按下”Single”按钮, 读 取瞬时值得到” Data Setup Time”的值
Undershoot量测
• 调节示波器上的”Scale”按钮,按下示波器上面 的”Single”按钮, 得到波形,读取”Undershoot”的读 数.
SMBUS Data量测
• 测试项目:
Hold Time after Start Condition
• 打上Label.并填上通道校驗時得到的Skew值 • 选择Measure→ Measurement Setup
Others
Rise Time & Fall Time; Overshoot & Undershoot的量测方法与CLK的量测一样,
SMBus 的数据传输格式
SMBus的几种数据传输格式不考虑PEC,SMBus有6种数据传输格式。
1,快速命令2,发送字节和接收字节3,写字节/字和读字节/字4,字的读写的过程调用(Process Call)5,块的读和写6,块的读写的过程调用(Process Call)如果考虑PEC,除了快速命令模式没有PEC外,其余5种都有带PEC的格式。
1,快速命令这种模式,没有数据的发送和接收。
Slave address中的Rd/Wr表示了主设备发给从设备的命令(part of the slave address denotes the command – the R/W# bit)。
Rd=1, Wr=0,Rd/Wr用来开启从设备的某项功能(The R/W# bit may be used to simply turn a device function on or off, or enable/disable a low-power standby mode)。
可见这里的Rd/Wr就不再是主设备对从设备的读和写了。
下面就是SMBus的快速模式协议,工作原理是:主设备通过Slave Address的高七位寻址到从设备,然后通过Rd/Wr来开启或者关闭该从设备的某项功能。
从设备接收到开启关闭命令后,导通开漏MOS管拉低DATA 为低电平,产生应答信号ACK告诉主设备,我已经被你寻址到并收到你发来的开关信号。
最后由主设备产生一个STOP条件结束两者的通信。
显然,快速命令模式适合于主控制器对设备进行简单的控制的情况。
注意,快速命令协议中的第9位总是ACK低电平,就算是第8位为高电平1,第9位也是ACK,而不是NACK,因为快速命令协议中的第8位不是主设备对从设备的读和写指令,只是对从设备的某项功能的开关位。
2, 发送字节和接收字节发送字节:主设备可向从设备传送一个字节(注意,只有1个哦!)的数据,由于一个字节由8个bit组成,所以这个数据可有28 =256种命令。
I2C和SMBus简介
I2C和SMBus简介I²C(发⾳:I⽅C,在内核⽂档中写成I2C)是由Philips开发的协议。
它是⼀个慢的两线协议(变速,⾼达400khz),具有⾼速扩展(3.4 MHz)。
它提供了⼀种廉价的总线,⽤于连接不频繁或低带宽通信需求的许多类型的设备。
I2C⼴泛应⽤于嵌⼊式系统。
有些系统使⽤的变体不符合品牌要求,因此不被宣传为I2C,⽽是在不同的名称下,例如TWI(双线接⼝)、IIC。
官⽅的I2C规范是NXP Semiconductors发布的“”(UM10204)。
SMBus (System Management Bus)基于I2C协议,主要是I2C协议和信令的⼦集。
许多I2C设备将在SMBus上⼯作,但⼀些SMBus协议添加了超出I2C协议所需的语义。
现代PC主板依赖于SMBus。
最常见的通过SMBus连接的设备是使⽤I2C eeprom配置的RAM模块和硬件监控芯⽚。
因为SMBus主要是通⽤I2C总线的⼦集,所以我们可以在许多I2C系统上使⽤它的协议。
然⽽,有些系统不满⾜SMBus和I2C电⽓约束;以及其他系统不能实现所有通⽤SMBus协议语义或消息的协议。
术语使⽤官⽅⽂档中的术语,I2C总线连接⼀个或多个主芯⽚和⼀个或多个从芯⽚。
简单的I2C总线master 芯⽚是开始与从芯⽚通信的节点。
在Linux内核实现中,它被称为 adapter 或总线。
适配器驱动程序位于drivers/i2c/busses/⼦⽬录中。
algorithm 包含可⽤于实现整个I2C适配器(adapters)类的通⽤代码。
每个特定的适配器驱动程序要么依赖于drivers/i2c/algos/⼦⽬录中的算法驱动程序,要么包含它⾃⼰的实现。
slave 芯⽚是在主芯⽚寻址时响应通信的节点。
在Linux中,它被称为 client(客户端)。
客户端驱动程序被保存在⼀个特定于它们所提供的特性的⽬录中,例如⽤于gpio扩展程序的drivers/media/gpio/以及⽤于视频相关芯⽚的drivers/media/i2c/。
SMBus
❖ 第三步,将HST_CMD(03H)设置为10H,说明读取10H处的数据,若 要读取其他地址的数据,就设置为相应的地址。
❖ 第四步,将HST_CNT(02H)设置为4CH(Word data方式,并开始), 这时可以看到HST_CNT变成了0CH,HST_STS变成了42H。
当对block进行读取的时候,向Auxiliary Control Register中写02H
3. DOS下访问过程
➢ 先进入SMBus Controller Register
➢ 找到Base Address为F040H(F041H在15:5位为Base Address)
➢ 向IO space中写入F040H进入Base Address。
➢ Host Configuration Register,其IO地址为F040H
➢ SMBus的I/O映射地址,当访问所需寄存器地址时,其实际地址=
SMB_BASE + offset。涉及操作的主要寄存器有:Status register, Control register, Command register, Slave Address register, Data register。
➢ PCH提供了一个SMBus主机控制器和一个SMBus从设备接口
目录
1. Introduction
1.1 概述 1.2 一般特性
2. SMBus各寄存器了解 3. DOS下访问过程
1. Introduction
1.1 概述
系统管理总线(SMBus)是一种两线制接口。通过它,能够使系统 芯片元件之间相互通信。它基于I2C总线规范。
SMBUS-I2C-原理
SMBUS(I2C)原理SMbus 最早是由Intel公司提出來的. 現在由SBS管理維護這一個規格. 此規格是用Philips的I2C簡化而來. SMbus 是由兩條訊號所組成的一種匯流排. 是為了在系統上較慢速的裝置及電源管理裝置之間的溝通使用. 使系統可取得這些裝置的製造廠商,型號,一些控制資訊,錯誤訊息及狀態.這兩條訊號為SMBCLK 和SMBDATA. 這和I2C 上的Clock(SCL) 和Data(SDA) 是一樣的.( 取材自Philips I2C)上圖為一SMbus 的架構圖. 不同的裝置都接在同一Bus 上. 在SMbus 上只有一個Master. 所有的命令均由此Master 發出. 其他的裝置(Slave) 只能接收Master 發出的命令或回覆資料給M aster.上圖為SMbus 開始及結束bus 的圖. 當SCL 為High 而SDA 由High 變Low 時表示開始一個SMbus 的命令. 當SCL 為High 而SDA 由Low 變High 時表示結束一個SMbus 的命令.這二個狀況在Smbus 裡是唯一的. 在一般傳送資料時均不可能發生. 而在一般傳送資料時則是在每一次SCL 的上升緣時的SDA 狀態來決定. 這些資料包含了仲裁,確認,送出資料給那一個裝置及送出的資料.或要取得那一個裝置的資料及由裝置送出的資料.關於I2C Bus與SMBus,許多人很少去談論與瞭解兩者的細節差異,包括很多國外的簡報文件也經常將兩者混寫、交雜描述、交替運用。
確實,在一般運用下,I2C Bus與SMBus沒有太大的差別,從實體接線上看也幾乎無差異,甚至兩者直接相連多半也能相安無誤地正確互通並運作。
不過若真要仔細探究,其實還是有諸多不同,如果電子設計工程師不能明辨兩者的真實差異,那麼在日後的開發設計的驗證除錯階段時必然會產生困擾,為此本文將從各層面來說明I2C Bus與SMBus的細微區別,期望能為各位帶來些許助益。
smbus系统管理总线规范--中文版
-2-
系统管理总线规范-中译版
目 录
SMBus 系统管理总线规范.....................................................................................................................- 1 1. 前言.............................................................................................................................................. - 5 1.1 概要..................................................................................................................................- 5 1.2 读者..................................................................................................................................- 5 1.3 范围..................................................................................................................................- 5 1.4 文档组织..............................
SMbus协议(图文并茂)
SMbus协议1、官方介绍SMBus是System Management Bus(系统管理总线)的缩写,是1995年由Intel提出的。
SMBus只有两根信号线:双向数据线和时钟信号线。
PCI插槽上也给SMBus预留了两个引脚(A40为SMBus 时钟线,A41为SMBus 数据线),以便于PCI接口卡与主板设备之间交换信息。
SMBus的数据传输率为100kbps,虽然速度较慢,却以其结构简洁造价低廉的特点,成为业界普遍欢迎的接口标准。
Windows中显示的各种设备的制造商名称和型号等信息,都是通过SMBus总线收集的。
主板监控系统中传送各种传感器的测量结果,以及BIOS向监控芯片发送命令,也是利用SMBus实现的。
系统管理总线(SMBus)是一个两线接口。
通过它,各设备之间以及设备与系统的其他部分之间可以互相通信。
它基于I2C操作原理。
SMBus为系统和电源管理相关的任务提供一条控制总线。
一个系统利用SMBus可以和多个设备互传信息,而不需使用独立的控制线路。
系统管理总线(SMBus)标准涉及三类设备。
从设备,接收或响应命令的设备。
主设备,用来发布命令,产生时钟和终止发送的设备。
主机,是一种专用的主设备,它提供与系统CPU 的主接口。
主机必须具有主-从机功能,并且必须支持SMBus通报协议。
在一个系统里只允许有一个主机。
SMBus最初的目的是为智能电池,充电电池和与其他系统通信的微控制器之间的通信链路而定义的。
SMBus也被用来连接各种设备,包括电源相关设备,系统传感器,EEPROM 通讯设备等等。
SMBus 最适用于笔记本电脑上,检测各元件状态并更新硬件设置引脚(pull-high 或pull-low)。
例如,将不存在的DIMM 时钟关闭,或检测电池低电压状态。
SMBus 的数据传输率只有100Kbit/s;这允许单一主机与CPU 和多个主从硬盘通讯并收发数据。
SMBus 也可用于免跳线设计的主板上。
smbus协议书
smbus协议书SMBus(System Management Bus)是一种使用在电脑系统内部的串行总线协议,用于连接系统中的各种设备,例如电池管理、温度传感器、风扇控制器等。
该协议基于I2C总线协议,并进行了一些扩展,以适应现代计算机系统的需要。
SMBus协议规定了数据传输的格式、传输的流程以及设备之间的通信方式。
它使用了一种主从结构,其中主设备负责初始化和控制总线,而从设备负责响应主设备的指令和提供数据。
每个设备都有一个唯一的地址,主设备可以通过地址选择要和哪个设备进行通信。
在SMBus协议中,数据传输以帧为单位进行。
每一帧由一些特定的字段组成,包括起始位、从地址、读/写位、数据位、校验位和停止位。
起始位表示一个传输的开始,从地址指定了要发送或接收数据的设备,读/写位表示这是一次读取操作还是写入操作,数据位是实际的数据内容,校验位用于验证数据的正确性,而停止位表示传输的结束。
除了数据传输外,SMBus还定义了一些特殊功能和命令。
例如,它可以用于查询设备的状态信息,如电池电量、温度等。
它还可以支持设备之间的通信,例如通过总线发送中断信号,以便从设备可以及时响应到主设备。
此外,SMBus还支持设备的报警功能,当某些特定的事件发生时,设备可以通过总线发送报警信号,以便主设备可以及时采取相应的措施。
SMBus协议的优点之一是其简单的电气特性。
它只需使用两根信号线(数据线SDA和时钟线SCL),即可实现设备之间的通信。
这使得它在系统中的布线和连接方面更加灵活。
然而,SMBus协议也有一些限制。
由于它是基于I2C协议的扩展,因此它继承了I2C协议一些潜在的问题,如时序不确定性和传输速率较低。
此外,SMBus协议还有一些版本和速率的限制,不同的设备支持的协议版本和速率可能有所不同,这可能会导致一些兼容性问题。
总的来说,SMBus协议是一种可靠且灵活的系统管理总线协议,用于连接计算机系统中的各种设备。
它定义了数据传输的格式和流程,以及设备之间的通信方式。
华大MCU硬件SMBus的应用
华⼤MCU硬件SMBus的应⽤SMBus是⼀种类似于I2C的通讯协议,简单来说,你可以把它看成I2C,只是它的通讯速率⽐较慢,⼀般来说,I2C的通讯速率是100KHz~400KHz,但是SMBus的通讯速率只有10KHz~100KHz。
但是SMBus有它的优点,⽐如:1. 使⽤ SMBus,设备还可以提供它的⽣产信息,告诉系统它的型号,部件号等,针对挂起事件保存它的状态,报告不同类别的错误,接收控制参数,并返回它的状态等;2. 因为SMBus的通讯速率较慢,所以允许单⼀主机与 CPU 和多个主从硬盘通讯并收发数据;3. SMBus为系统和电源管理相关的任务提供⼀条控制总线。
⼀个系统利⽤SMBus可以和多个设备互传信息,⽽不需使⽤独⽴的控制线路;4. SMBus提醒模式,这个功能⼀般是跟⼴播呼叫地址⼀起应⽤的,此功能需要⼀条带中断的可选信号(SMBALERT),那些希望与主设备进⾏通讯的从设备可以通过这根线发信号给主设备,主机处理该中断并通过提醒响应地址ARA(Alert Response Address,地址值为0001100x)访问所有SMBALERT设备,只有那些把SMBALERT拉低的从设备才能应答ARA。
主机执⾏⼀个修改过的接收字节操作。
由从发送设备提供的7位设备地址被放在字节的7个最⾼位上,第⼋个位可以是0或1。
如果多个设备把SMBALERT拉低,最⾼优先级设备(最⼩的地址)将在地址传输期间通过标准仲裁赢得通信权。
5. 超时错误,SMBus定义⼀个时钟低超时,35ms的超时。
SMBus规定TLOW:SEXT为从设备的累积时钟低扩展时间。
SMBus规定TLOW:MEXT为主设备的累积时钟低扩展时间。
I2C和SMBus的区别:SMBus I2C最⼤传输速度 100kHz最⼤传输速度400kHz最⼩传输速度 10kHz⽆最⼩传输速度35ms时钟低超时⽆时钟超时固定的逻辑电平逻辑电平由VDD决定不同的地址类型(保留、动态等) 7位、10位和⼴播呼叫从地址类型不同的总线协议(快速命令、处理呼叫等) ⽆总线协议SMBus通讯协议在电源管理系统应⽤很⼴泛,现在⼿头上的⼀个案⼦也是通过SMBus去跟电池(这颗电池上有⼀个GAUGE IC,⽤于采集电池信息以及管理电池的作⽤)通讯,MCU⽤的是华⼤HC32F460系列的单⽚机。
smbus协议
smbus协议SMBus(System Management Bus)是一种简化版本的I2C总线协议,它是一种用于连接电脑系统内部各个设备的串行通信总线。
本文将介绍SMBus协议的工作原理、特点以及在电脑系统中的应用。
SMBus协议基于I2C总线协议进行了一些改进和简化。
与I2C 总线相比,SMBus协议在硬件和软件层面都做了一些约束,以确保各个设备之间的通信更可靠、更稳定。
SMBus协议的物理层采用两根线路,即数据线(SDA)和时钟线(SCL),通过这两根线路实现设备之间的数据传输。
在SMBus中,时钟线由主设备(通常是CPU)生成,并且只有主设备可以控制总线的访问。
这样可以确保数据传输的顺序和同步性。
SMBus的通信模式包括命令模式和块模式。
命令模式是指通过发送特定的命令字和数据来实现设备之间的通信。
块模式则是通过指定一个数据块,将整个数据块发送给目标设备。
SMBus协议还定义了一系列标准命令和数据格式,以便设备之间能够正确的解析和处理数据。
SMBus协议还有一些特殊的特性,比如设备地址唯一性、设备忙碌状态和设备掉线检测等。
设备地址唯一性是指每个设备在总线上都有一个唯一的地址,这样可以确保每个设备能够被正确地识别和访问。
设备忙碌状态是指当设备正在处理数据时,可以通过查询设备的忙碌状态来等待设备处理完成。
设备掉线检测则是指当设备在传输数据过程中发生错误或者掉线时,能够通过检测到错误码来及时检测设备的状态。
SMBus协议在电脑系统中有广泛的应用。
在主板上,SMBus被用于连接各种系统管理设备,比如温度传感器、风扇控制器、电源管理芯片等。
通过SMBus协议,主板可以实时地监测各个硬件的工作状态,并且能够控制和调整硬件的工作参数。
此外,SMBus协议还被用于连接其他外设设备,比如电池管理芯片和光驱控制器等。
通过SMBus协议,电池管理芯片可以实时地监测电池的电量和充电状态,并且向系统发送相应的电量信息。
SMBus协议
SMBus协议下⾯是SMBus协议的概要。
它适⽤于协议的所有版本(1.0、1.1和2.0)。
在本⽂的最后对某些协议特性进⾏了简要描述,这些特性是本软件包不⽀持的。
有些适配器只理解SMBus(系统管理总线)协议,它是I2C协议的⼀个⼦集。
幸运的是,许多设备只使⽤相同的⼦集,这使得将它们放在SMBus上成为可能。
如果您为某个I2C设备编写驱动程序,请在可能的情况下尝试使⽤SMBus命令(如果设备只使⽤I2C协议的⼦集)。
这样就可以在SMBus适配器和 I2C适配器上都使⽤同⼀个设备驱动程序(SMBus命令集在I2C适配器上⾃动转换为I2C,但是在⼤多数纯SMBus适配器上根本⽆法处理普通的I2C命令)。
下⾯是SMBus协议操作的列表,以及执⾏这些操作的函数。
注意,SMBus协议规范中使⽤的名称通常与这些函数名称不匹配。
对于传递单个数据字节的⼀些操作,使⽤SMBus协议操作名称的函数执⾏完全不同的协议操作。
每个事务类型对应⼀个功能标志。
在调⽤事务函数之前,设备驱动程序应该总是检查(只检查⼀次)相应的功能标志,以确保底层I2C适配器⽀持所涉及的事务。
符号注解S Start 条件P Stop 条件Rd/Wr (1 bit)读/写位。
Read等于1, Write等于0。
A, NA (1 bit)确认(ACK)和不确认(NACK)位Addr (7 bits)I2C 7位地址。
注意,这可以像往常⼀样进⾏扩展,以获得10位I2C地址。
Comm (8bits)命令字节,通常选择设备上的寄存器。
Data (8 bits)⼀个普通数据字节。
有时,对于16位数据写DataLow, DataHigh。
Count (8bits)包含块操作长度的数据字节。
[..]由I2C设备发送的数据,⽽不是由主机适配器(adapter)发送的数据。
SMBus快速命令这将在Rd/Wr位的位置发送⼀个位到设备:S Addr Rd/Wr [A] P功能flag: I2C_FUNC_SMBUS_QUICKSMBus接收字节由 i2c_smbus_read_byte() 实现。
SMBus协议总结(翻译)
SMBus协议总结本文将对SMBUS协议进行总结。
本文针对该协议的所有修订版(包括1.0,1.1,2.0)。
具体的协议特性将在本文最后进行介绍。
一些I2C适配器仅仅兼容SMBus协议(System Management Bus,系统管理总线)。
而SMBus只是I2C协议的子集。
幸运的是,大部分设备都使用相同的子集,故可以将它们放置同一个SMBus中。
如果你为一个I2C设备写驱动程序,而该设备仅仅使用I2C协议的子集,那么推荐你尽可能使用SMBus协议的命令。
这样这个驱动程序既可以在SMBus适配器上使用,也可以在I2C适配器上使用(当在I2C适配器上时,SMBus格式会自动转换为I2C格式,而SMBus适配器大多无法处理单纯的I2C格式)。
下文将列举SMBus的操作时序,以及执行该时序的函数。
注意,一下使用的函数名称可能会因不同的SMBus协议规格而不尽相同。
每个处理都对应一个标识。
在调用处理函数是,驱动程序应该总要检查一次对应的标识以确保底层的I2C适配器支持改处理。
具体详见<文件:Documentation/i2c/functionality>。
各个字符的描述功能标识:I2C_FUNC_SMBUS_QUICK即可实现操作,对其他设备,可以在使用SMBus指定了寄存器地址后使用该函数实现对同一个寄存器的重复读取。
功能标识:I2C_FUNC_SMBUS_READ_BYTE功能标识:I2C_FUNC_SMBUS_READ_BYTE_DATA注意:还有一个读取字寄存器的函数i2c_smbus_read_word_swapped,使用于当寄存器两个字节排列方式不同时的情况。
虽然与SMBus不兼容,但使用得十分普遍。
功能标识:I2C_FUNC_SMBUS_WRITE_WORD_DATA注意:还有一个写字寄存器的函数i2c_smbus_write_word_swapped,使用于当寄存器两个字节排列方式不同时的情况。
系统管理总线(SMBus)
系统管理总线(SMBus)【摘要】系统管理总线(SMBus)是一个两线接口,通过它各种设备之间以及设备与系统的其它部分之间可以通信。
它基于I2C操作原理。
SMBus为系统和电源管理相关的任务提供一条控制总线。
一个系统利用SMBus可以和多个设备互传信息,而不需要独立的控制线路。
【关键词】系统管理总线(SMBus);I2C;通信System Management BusLu Qiusheng Beijing Information Technology College/PC:100050Abstract:System Management Bus(SMBus)is a two line interface;by way of SMBus each equipment and equipment with system’s other unite can communication.SMBus’working function based on I2C.SMBus is one control bus which can carry out the communication function for system and power system management.By way of SMBus one can make each equipment communication and not need an independent control line.Key words:SMBus;I2C;communication1.系统管理总线(SMBus)系统管理总线(SMBus)是一种双线接口,通过SMBus可以使挂在SMBus 上的有关部件相互通信,SMBus主要基于I2C技术,SMBus是用于系统和与电源管理有关任务的控制总线,采用SMBus可以简化系统的设计,便于系统的扩展。
通过SMBus可以由有关器件提供制造商的有关信息,告知系统它的模块/部件号,保持一个事件的状态信息、报告各种错误类型、接受控制参数、并返回系统的工作状态信息。
SMBUS实现基于I2C器件操作实验
SMBUS实现基于I2C器件操作实验SMBus (System Management Bus)是一种基于I2C (Inter-Integrated Circuit)总线的系统管理总线,用于集成电路之间的通信和控制。
它采用了I2C的物理层和通信协议,并添加了一些自定义的命令和特性,以便在计算机系统中进行系统管理和监控。
本文将介绍如何通过SMBus实现基于I2C器件的操作实验。
首先,我们需要准备以下硬件和软件资源来进行实验:硬件资源:1. 主控制器(如Arduino、Raspberry Pi等)2.I2C器件(如传感器、存储器等)软件资源:1. Arduino IDE(可用于编写和上传代码到Arduino)2. Linux操作系统(可用于Raspberry Pi)接下来,我们将基于Arduino和Linux系统来分别演示如何使用SMBus进行基于I2C器件的操作。
使用Arduino进行SMBus实验:1. 连接硬件。
将Arduino与所需的I2C器件通过I2C引脚(SDA和SCL)连接起来。
2. 在Arduino IDE中编写代码。
使用Wire库来访问SMBus功能。
首先需要包含Wire库:```#include <Wire.h>```3. 初始化I2C总线。
在`setup(`函数中添加以下代码:```Wire.begin(;```4. 实现I2C读取或写入操作。
可以使用`Wire.beginTransmission(`方法开始一个传输过程,并使用`Wire.write(`方法向器件发送数据。
要读取数据,可以使用`Wire.requestFrom(`方法并使用`Wire.read(`方法读取器件的响应数据。
使用Linux系统进行SMBus实验(以Raspberry Pi为例):1. 连接硬件。
将Raspberry Pi与所需的I2C器件通过I2C引脚(SDA和SCL)连接起来。
2. 安装必要的软件包。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据传输:Master 数据传输:Master Receive
可以看到,当master读取到自己 可以看到,当master读取到自己 想要的数据后。也可以不理最后 一个ack,发出stop。 一个ack,发出stop。
两根线的总线架构
Sclk,高有效,高的时候,决定 Sclk,高有效,高的时候,决定 是start/stop,字节的读取,等等。 start/stop,字节的读取,等等。
START: S STOP P
Start: 在clk为高的情况下,data由高 clk为高的情况下,data由高 变低为start。 变低为start。 Stop:在clk为高的情况下,data由低 Stop:在clk为高的情况下,data由低 变高是stop。 变高是stop。 都是由master发起。 都是由master发起。
具体的实测波形:读
读数据解析
二进制串为S 二进制串为S 001111000 000010000 {RS} 001111010 110111101 P 翻译就是3C 翻译就是3C 08 3D DE 另外可以看出,RS 另外可以看出,RS restart 和start波 start波 形很相似,而且P之前slave没有ack, 形很相似,而且P之前slave没有ack, 就说明slave不准备再提供数据了。说 就说明slave不准备再提供数据了。说 明是byte读。 明是byte读。
数据的有效期
只有在clk为高的时候,数据才有 只有在clk为高的时候,数据才有 效。Clk为低,数据无效。 效。Clk为低,数据无效。
ACK
每一个字节完成,都会有一个 ack,无论由master还是slave发 ack,无论由master还是slave发 出。 Ack的具体就是低有效。 Ack的具体就是低有效。 一般是在第九位发出。 如果没有ack,表明错误发生。 如果没有ack,表明错误发生。
理论波形
SR: repeat start.
具体的测试波形:写
写的数据解析
数据位是S 数据位是S 001100000 001000000 001001110 P 翻译一下就是30 翻译一下就是30 20 27,slave 27, address 18 (30/2) offset 20, data 27.
Slave地址的协议 Slave地址的协议
Start之后,第一个byte总是由 Start之后,第一个byte总是由 master广播给slave们,格式如下: master广播给slave们,格式如下: 7位的地址,跟着一个 读写位, 读为1,写为0 读为1,写为0。
数据传输:Master 数据传输:Master Send
一个完整的读数据的实现。
因为读数据需要有offset。所以 因为读数据需要有offset。所以 offset需要先用写协议告诉slave, offset需要先用写协议告诉slave, 然后再读。 所以一个完整的写协议就是:
S 7_BIT_ADD W A OFFSET A RS 7_BIT_ADD R A DATA A P 有所疑问,要周一看看具体波形。
有些slave也有自己的特殊的地方, 有些slave也有自己的特殊的地方, 比如ST的sensor规定,如果要读 比如ST的sensor规定,如果要读 取多个byte,那么offset的最高位 取多个byte,那么offset的最高位 就要是1 就要是1。
Intel南桥有自己的io操作。 Intel南桥有自己的io操作。 Oaktrail购买的一个ip。 Oaktrail购买的一个ip。 Winbond ec的smbus。 ec的smbus。 都有软件操作上的不同,但是最 终表现在波形协议是一样的。
Slave的一些特殊实现 Slave的一些特殊实现
如果要读多byte,因为这个是st的sensor, 如果要读多byte,因为这个是st的sensor, 所以在offset位最高位写1就行了。这是st 所以在offset位最高位写1就行了。这是st 的private规定。 private规定。
一些保留的地址
有可能厂商规定不一样
具体厂商的实现可能不一样
SMBUS i2c详解 i2c详解
Liuzhi, Sep 2010 liuzhizhiyi@
I2c, smbus只定义了协议 smbus只定义了协议
一个bus,一个master,多个 一个bus,一个master,多个 slave。 slave。 每一次读写都由master发起。 每一次读写都由master发起。