I2CBus与SMBus间技术差异

合集下载

SMBUS & I2C bus详解

SMBUS & I2C bus详解
aster发了最后一 个字节之后,就不用管ack还是 个字节之后,就不用管ack还是 没有,就可以结束了。
数据传输: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,表明错误发生。

I2C与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。

SPI、I2C、UART三种串行总线的原理、区别及应用参考模板

SPI、I2C、UART三种串行总线的原理、区别及应用参考模板

简单描述:SPI 和I2C这两种通信方式都是短距离的,芯片和芯片之间或者其他元器件如传感器和芯片之间的通信。

SPI和IIC是板上通信,IIC有时也会做板间通信,不过距离甚短,不过超过一米,例如一些触摸屏,手机液晶屏那些很薄膜排线很多用IIC,I2C能用于替代标准的并行总线,能连接的各种集成电路和功能模块。

I2C 是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。

总线上每一个设备都有一个独一无二的地址,根据设备它们自己的能力,它们可以作为发射器或接收器工作。

多路微控制器能在同一个I2C总线上共存这两种线属于低速传输;而UART是应用于两个设备之间的通信,如用单片机做好的设备和计算机的通信。

这样的通信可以做长距离的。

UART和,UART就是我们指的串口,速度比上面三者快,最高达100K左右,用与计算机与设备或者计算机和计算之间通信,但有效范围不会很长,约10米左右,UART优点是支持面广,程序设计结构很简单,随着USB的发展,UART也逐渐走向下坡;SmBus有点类似于USB设备跟计算机那样的短距离通信。

简单的狭义的说SPI和I2C是做在电路板上的。

而UART和SMBUS是在机器外面连接两个机器的。

详细描述:1、UART(TX,RX)就是两线,一根发送一根接收,可以全双工通信,线数也比较少。

数据是异步传输的,对双方的时序要求比较严格,通信速度也不是很快。

在多机通信上面用的最多。

2、SPI(CLK,I/O,O,CS)接口和上面UART相比,多了一条同步时钟线,上面UART 的缺点也就是它的优点了,对通信双方的时序要求不严格不同设备之间可以很容易结合,而且通信速度非常快。

一般用在产品内部元件之间的高速数据通信上面,如大容量存储器等。

3、I2C(SCL,SDA)接口也是两线接口,它是两根线之间通过复杂的逻辑关系传输数据的,通信速度不高,程序写起来也比较复杂。

一般单片机系统里主要用来和24C02等小容易存储器连接。

SPII2CUART三种串行总线的原理区别及应用

SPII2CUART三种串行总线的原理区别及应用

简单描述:SPI 与I2C这两种通信方式都就是短距离的,芯片与芯片之间或者其她元器件如传感器与芯片之间的通信。

SPI与IIC就是板上通信,IIC有时也会做板间通信,不过距离甚短,不过超过一米,例如一些触摸屏,手机液晶屏那些很薄膜排线很多用IIC,I2C能用于替代标准的并行总线,能连接的各种集成电路与功能模块。

I2C就是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。

总线上每一个设备都有一个独一无二的地址,根据设备它们自己的能力,它们可以作为发射器或接收器工作。

多路微控制器能在同一个I2C总线上共存这两种线属于低速传输;而UART就是应用于两个设备之间的通信,如用单片机做好的设备与计算机的通信。

这样的通信可以做长距离的。

UART与,UART就就是我们指的串口,速度比上面三者快,最高达100K左右,用与计算机与设备或者计算机与计算之间通信,但有效范围不会很长,约10米左右,UART优点就是支持面广,程序设计结构很简单,随着USB的发展,UART也逐渐走向下坡;SmBus有点类似于USB设备跟计算机那样的短距离通信。

简单的狭义的说SPI与I2C就是做在电路板上的。

而UART与SMBUS就是在机器外面连接两个机器的。

详细描述:1、UART(TX,RX)就就是两线,一根发送一根接收,可以全双工通信,线数也比较少。

数据就是异步传输的,对双方的时序要求比较严格,通信速度也不就是很快。

在多机通信上面用的最多。

2、SPI(CLK,I/O,O,CS)接口与上面UART相比,多了一条同步时钟线,上面UART的缺点也就就是它的优点了,对通信双方的时序要求不严格不同设备之间可以很容易结合,而且通信速度非常快。

一般用在产品内部元件之间的高速数据通信上面,如大容量存储器等。

3、I2C(SCL,SDA)接口也就是两线接口,它就是两根线之间通过复杂的逻辑关系传输数据的,通信速度不高,程序写起来也比较复杂。

一般单片机系统里主要用来与24C02等小容易存储器连接。

SMBus与I2C总线的区别

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且专门面向智能电池管理应用。

几种通信方式

几种通信方式

一IIC总线I2C--INTER-IC串行总线的缩写,是PHILIPS公司推出的芯片间串行传输总线。

它以1根串行数据线(SDA)和1根串行时钟线(SCL)实现了双工的同步数据传输。

具有接口线少,控制方式简化,器件封装形式小,通信速率较高等优点。

在主从通信中,可以有多个I2C总线器件同时接到I2C总线上,通过地址来识别通信对象。

IC 接口的协议里面包括设备地址信息,可以同一总线上连接多个从设备,通过应答来互通数据及命令。

但是传输速率有限,标准模式下可达到100Kbps,快速模式下可达到400Kbps(我们开发板一般在130Kbps),高速模式下达到4Mbps,不能实现全双工,不适合传输很多的数据。

IIC总线是一个真正的多主机总线,总线上多个主机初始化传输,可以通过传输检测和仲裁来防止数据被破坏。

下来详细了解IIC总线时序:1.1 总线数据有效性IIC总线是单工,因此同一时刻数据只有一个流向,因此采样有效时钟也是单一的,是在SCL 时钟的高电平采样数据。

IIC总线上SDA数据在SCL时钟低电平是可以发生变化,但是在时钟高电平时必须稳定,以便主从设备根据时钟采样数据,如下图:1.2 总线空闲条件IIC总线上设备都释放总线(发出传输停止)后,IIC总线根据上拉电阻变成高电平,SDA SCL 都是高电平。

1.3 总线数据传输起始和结束条件IIC总线SCL高电平时SDA出现由高到低的跳变,标志总线上数据传输的开始条件IIC总线SCL高电平时SDA出现由低到高的跳变,标志总线上数据传输的结束条件1.4 总线数据传输顺序以及ACK应答IIC总线上数据传输室MSB在前,LSB在后,从示波器上看,从左向右依次读出数据即可IIC总线传输的数据不收限制,但是每次发到SDA上的必须是8位,并且主机发送8位后释放总线,从机收到数据后必须拉低SDA一个时钟,回应ACK表示数据接收成功,我们如果示波器上看到的波形就是每次9位数据,8bit+1bit ack。

I2C和SMBus简介

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协议总结

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适配器支持改处理。

具体详见。

各个字符的描述功能标识: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不兼容,但使用得十分普遍。

功能标识:flag: I2C_FUNC_SMBUS_PROC_CALL该函数向设备读取多于32字节的块数据。

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系统管理总线规范--中文版

smbus系统管理总线规范--中文版
有关中译版本的问题和意见请发到: 崔士友 [shiyouc@]
-2-
系统管理总线规范-中译版
目 录
SMBus 系统管理总线规范.....................................................................................................................- 1 1. 前言.............................................................................................................................................. - 5 1.1 概要..................................................................................................................................- 5 1.2 读者..................................................................................................................................- 5 1.3 范围..................................................................................................................................- 5 1.4 文档组织..............................

PCA9515B 双路双向 I2C 总线和 SMBus 中继器说明书

PCA9515B 双路双向 I2C 总线和 SMBus 中继器说明书

ProductFolderSample &BuyTechnicalDocumentsTools &SoftwareSupport &CommunityPCA9515BZHCS780B–MARCH2012–REVISED MARCH2016 PCA9515B双路双向I2C总线和SMBus中继器1特性•两通道双向缓冲器•I2C总线和SMBus兼容•支持I2C标准模式(100kHz)和快速模式(400kHz)•高电平有效的中继器启用输入•开漏I2C输入和输出• 5.5V耐压I2C输入和输出以及使能输入,支持混合模式信号操作•无死锁运行•支持标准模式、快速模式I2C器件、和多个主控器•支持中继器上的仲裁及时钟延伸•断电高阻抗I2C引脚•锁存性能超过100mA,符合JESD78I类规范要求•静电放电(ESD)保护性能超过JESD22规范要求–2000V人体放电模式(A114-A)–1000V充电器件模型(C101)2应用•服务器•路由器(电信交换设备)•工业设备•具有多个I2C从器件且PCB走线较长的产品3说明PCA9515B是一款BiCMOS双路双向缓冲区集成电路,旨在满足I2C总线和SMBus应用的需求。

该器件包含两个相同的双向开漏缓冲区电路,能够扩展I2C及相似总线系统(或添加从器件),同时不会降低系统性能。

双路双向I2C缓冲区可由2.3V到3.6V的V CC供电运行。

PCA9515B能够缓冲I2C总线上的串行数据(SDA)和串行时钟(SCL)信号,同时保持I2C系统的所有工作模式和特性。

该器件允许在I2C应用中连接两条电容为400pF的总线。

器件信息(1)器件型号封装封装尺寸(标称值)PCA9515B VSSOP(8) 3.00mm×3.00mm(1)要了解所有可用封装,请见数据表末尾的可订购产品附录。

简化电路原理图PCA9515BZHCS780B–MARCH2012–REVISED 目录1特性 (1)2应用 (1)3说明 (1)4修订历史记录 (2)5Pin Configuration and Functions (3)6Specifications (4)6.1Absolute Maximum Ratings (4)6.2ESD Ratings (4)6.3Recommended Operating Conditions (4)6.4Thermal Information (4)6.5Electrical Characteristics (5)6.6Timing Requirements (5)6.7Switching Characteristics (5)6.8Typical Characteristics (6)7Parameter Measurement Information (7)8Detailed Description (8)8.1Overview (8)8.2Functional Block Diagram (9)8.3Feature Description (9)8.4Device Functional Modes (10)9Application and Implementation (11)9.1Application Information (11)9.2Typical Application (11)10Power Supply Recommendations (12)11Layout (13)11.1Layout Guidelines (13)11.2Layout Example (13)12器件和文档支持 (14)12.1文档支持 (14)12.2社区资源 (14)12.3商标 (14)12.4静电放电警告 (14)12.5Glossary (14)13机械、封装和可订购信息 (14)4修订历史记录注:之前版本的页码可能与当前版本有所不同。

SMBus

SMBus

SMBusSMBus 是 System Management Bus 的缩写,是1995年由Intel提出的,应用于移动PC和桌面PC系统中的低速率通讯。

它主要是希望通过一条廉价并且功能强大的总线(由两条线组成),来控制主板上的设备并收集相应的信息。

SMBus 为系统和电源管理这样的任务提供了一条控制总线,使用SMBus 的系统,设备之间发送和接收消息都是通过 SMBus,而不是使用单独的控制线,这样可以节省设备的管脚数。

使用 SMBus,设备还可以提供它的生产信息,告诉系统它的型号,部件号等,针对挂起事件保存它的状态,报告不同类别的错误,接收控制参数,并返回它的状态等。

SMBus器件存在现有7层OSI网络模型中的前3层,即物理层,数据链路层和网络层。

SMBus最初的目的是为智能电池,充电电池和与其他系统通信的微控制器之间的通信链路而定义的。

SMBus也被用来连接各种设备,包括电源相关设备,系统传感器,EEPROM通讯设备等等。

SMBus 最适用于笔记本电脑上,检测各元件状态并更新硬件设置引脚 (pull-high或 pull-low)。

例如,将不存在的 DIMM 时钟关闭,或检测电池低电压状态。

SMBus的数据传输率只有 100Kbit/s;这允许单一主机与 CPU 和多个主从硬盘通讯并收发数据。

SMBus 也可用于免跳线设计的主板上。

来源于:/view/65684.htmSMBus协议目录系统管理总线(SMBus)是一个两线接口。

通过它,各设备之间以及设备与系统的其他部分之间可以互相通信。

它基于I2C操作原理。

SMBus为系统和电源管理相关的任务提供一条控制总线。

一个系统利用SMBus可以和多个设备互传信息,而不需使用独立的控制线路。

系统管理总线(SMBus)标准涉及三类设备。

从设备,接收或响应命令的设备。

主设备,用来发布命令,产生时钟和终止发送的设备。

主机,是一种专用的主设备,它提供与系统CPU的主接口。

华大MCU硬件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协议SMBus(System Management Bus)是一种简化版本的I2C总线协议,它是一种用于连接电脑系统内部各个设备的串行通信总线。

本文将介绍SMBus协议的工作原理、特点以及在电脑系统中的应用。

SMBus协议基于I2C总线协议进行了一些改进和简化。

与I2C 总线相比,SMBus协议在硬件和软件层面都做了一些约束,以确保各个设备之间的通信更可靠、更稳定。

SMBus协议的物理层采用两根线路,即数据线(SDA)和时钟线(SCL),通过这两根线路实现设备之间的数据传输。

在SMBus中,时钟线由主设备(通常是CPU)生成,并且只有主设备可以控制总线的访问。

这样可以确保数据传输的顺序和同步性。

SMBus的通信模式包括命令模式和块模式。

命令模式是指通过发送特定的命令字和数据来实现设备之间的通信。

块模式则是通过指定一个数据块,将整个数据块发送给目标设备。

SMBus协议还定义了一系列标准命令和数据格式,以便设备之间能够正确的解析和处理数据。

SMBus协议还有一些特殊的特性,比如设备地址唯一性、设备忙碌状态和设备掉线检测等。

设备地址唯一性是指每个设备在总线上都有一个唯一的地址,这样可以确保每个设备能够被正确地识别和访问。

设备忙碌状态是指当设备正在处理数据时,可以通过查询设备的忙碌状态来等待设备处理完成。

设备掉线检测则是指当设备在传输数据过程中发生错误或者掉线时,能够通过检测到错误码来及时检测设备的状态。

SMBus协议在电脑系统中有广泛的应用。

在主板上,SMBus被用于连接各种系统管理设备,比如温度传感器、风扇控制器、电源管理芯片等。

通过SMBus协议,主板可以实时地监测各个硬件的工作状态,并且能够控制和调整硬件的工作参数。

此外,SMBus协议还被用于连接其他外设设备,比如电池管理芯片和光驱控制器等。

通过SMBus协议,电池管理芯片可以实时地监测电池的电量和充电状态,并且向系统发送相应的电量信息。

I2C和SPI

I2C和SPI

SPI/I2C总线虽然现实世界中的信号都是模拟信号,但是越来越多的模拟IC产品通过数字接口实现通讯。

微处理器通过几条总线控制周边的设备,比如:模/数转换器(ADC),数/模转换器(DAC),智能电池,端口扩展,EEPROM以及温度传感器。

与数据的平行传输接口不同,串行数据通过两条、三条或者四条数据/时钟总线连续地传输比特数据。

虽然并行的总线具有传输速度快的特点,但是串行总线具有使用较少的控制和数据线的优点。

2线和3线的总线在大多数微处理器上应用于收发数据。

串行接口在提供串行时钟的主设备和从设备/周边设备之间的进行通讯。

串行接口有三种:三线、二线和单线。

本文着眼于二线和三线的串行接口。

三线的接口包括:片选线(CS或SS)、时钟线(SCLK)和数据输入/主设备输出线(DIN 或MOSI)。

三线接口有时也包括一条数据输出/主设备输入线(DOUT或MISO)。

包含DOUT线的三线接口有时也叫做四线接口。

为了叙述的简便,本文将三线接口和四线接口统称为三线接口。

二线接口包括一条数据线(SDA或SMBDATA)和一条时钟线(SCL或SMBCLK)。

串行外设接口(SPI),队列串行外设接口(QSPI)和MicroWire(或MicroWire/Plus)接口都是三线接口。

芯片间总线(I2C)和SMBUS都是二线接口。

这些串行接口拥有各自的优点和缺点,见表1。

三线接口可以以更高的时钟频率工作,并且不需要上拉电阻。

SPI/QSPI和MicroWire接口都可以工作在全双工模式(数据可以在同一时间发送和接收)。

而且三线接口是边沿触发的而不是电平触发,因此具有更强的抗干扰能力。

三线接口的主要缺点是它要为每一个从设备提供一条片选线,除非将从设备用菊链形式连接。

另外一个缺点是三线接口没有应答机制去判断数据的收发是否正确。

二线接口的优点是使用更少的连线,这一点在紧凑的设计中尤为重要,比如:手机、光纤的应用,因为二线接口为每个从设备分配唯一的地址,所以可以实现一根总线连接多个从设备而不需要片选线。

普通IO模拟SMBus(STM32F405)

普通IO模拟SMBus(STM32F405)

普通IO模拟SMBus(STM32F405)普通I/O 模拟SMBUS⼀、简介最近项⽬要⽤到SMBus,⽤于电池和主板之间的通信。

在⽹上了解了⼀下SMBus跟I2C的⼯作原理⾮常相似,主要差别是在通信速率上。

本来想着⽤原来的I2C程序,降低⼀下速率应该就可以了,但实际测试中却是磕磕绊绊,现在把这个过程记录下来,希望对后来者有所帮助。

⼆、硬件平台主控芯⽚:STM32F405 (ST)电池管理芯⽚:BQ40Z80 (TI)上拉电阻:4.7K三、软件配置/*** @brief init i2c gpio* @param* @retval*/void i2c_sw_init(void){GPIO_InitTypeDef GPIO_InitStructure;GPIO_StructInit(&GPIO_InitStructure);RCC_AHB1PeriphClockCmd(I2C_GPIO_CLK, ENABLE); //使能GPIOB时钟GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //普通输出模式GPIO_InitStructure.GPIO_OType = GPIO_OType_OD; //开漏输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //100MHzGPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //⽆上下拉/* i2c io init */GPIO_InitStructure.GPIO_Pin = I2C_SCL_GPIO_PIN | I2C_SDA_GPIO_PIN;GPIO_Init(I2C_GPIO_PORT, &GPIO_InitStructure);/* init io state */SDA_UP;SCL_UP;}四、踩坑1、硬件线接反这个实在是没脸说了,硬件封好了个电池盒扔给我测试,费了⽼⼤精⼒了,各种测时序,然后发现他电池盒⾥⾯的线接反了......这个确实还是需要注意⼀下的,软件程序本来就没测试好,硬件接反了,软件怎么测都⽩搭。

几种最常用的串行数据传输总线(2)-I2C

几种最常用的串行数据传输总线(2)-I2C

⼏种最常⽤的串⾏数据传输总线(2)-I2C我第⼀次知道I2C总线是1995年,项⽬中⽤到电视机⾼频头(也叫调谐器、Tuner),能够⽅便买到的⾼频头要么是飞利浦(Philips)的,要么是⽇系⼚商的,但⽇系⼚商联系起来⽐较费劲。

Tuner其实就是通过I2C总线送控制字来改变其本振频率(LO)选择你需要的频段,当时知道I2C的⿐祖就是飞利浦半导体(NXP-恩智浦半导体的前⾝),也是第⼀次使⽤MC34063这颗后来如同555⼀样扑街的开关稳压芯⽚,⽤来产⽣⾼频头所需要的12V DC。

典型的电视机调谐器,采⽤I2C来进⾏调谐板⼦上的器件之间也需要Talk器件和器件之间的也需要沟通信息,尤其是需要MCU/DSP等对其它外设进⾏控制的时候。

⼯程界的⼤神们基于MCU/DSP开发了⼀系列的协议⽐如UART、USART、SPI、I2C、CAN等. . . .每种协议都有各⾃擅长的地⽅,也有其局限性,因此要做系统设计的硬件⼯程师就应该对每种接⼝协议有⼤概的认识(即便没有机会吃猪⾁,也要知道各种猪是如何跑的),这样才能够帮助你在做⽅案选择的时候能够选⽤最合适的协议接⼝⽅式,这也是你需要阅读我写的⽂章的原因。

在同⼀个PCB板⼦上的不同器件之间进⾏通信最常⽤的有三种形式 - SPI、I2C和UART,上篇⽂章我们简单介绍了SPI,今天就来看看I2C,我们先看⼀下I2C最基本的⼀些特性,然后再跟其它的通信协议⽅式进⾏⼀下⽐较。

两条通过上拉电阻吊在电源的线,上⾯可以挂多个器件进⾏通信简约⽽不简单的I2C总线I2C来⾃于英⽂inter–integrated circuit,有时也写为IIC,字⾯意思也可以理解为IC之间进⾏交流⽤的,跟SPI对⽐,I2C没有天⽣的主、从之分,也就是说挂在两根线(数据线SDA和时钟线SCL)上的所有器件都是⽣⽽平等的。

这个协议最早由飞利浦半导体推出来,⼏年后Intel⼜弄了⼀个SMBus(系统管理总线)协议,其实基本跟I2C⼀模⼀样,算是其扩展吧,⼀丢丢的差别⽽已。

系统管理总线(SMBus)

系统管理总线(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可以由有关器件提供制造商的有关信息,告知系统它的模块/部件号,保持一个事件的状态信息、报告各种错误类型、接受控制参数、并返回系统的工作状态信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

I2C Bus与SMBus间技术差异前言:关于I2C与SMBus,许多人很少去谈论与了解两者的细节差异,包括很多国外的简报,文章也经常将两者混写、交杂描述、交替运用。

确实,在一般运用下,I2C Bus与SMBus没有太大的差别,从实际接线上看也几乎无差异,甚至两者直接相连多半也能相安无误地正确互通并运作。

不过若真要仔细探究,其实还是有诸多不同,如果电子设计工程师不能明辨两者的真实差异,那么在日后的开发设计的验证纠错阶段必然会产生困扰,为此本文将从各层面来说明I2C Bus与SMBus的细微区别,期望能为各位带来些许帮助。

我写这篇文章,可以理解为郭長祐先生博客中相关文章的读书笔记,我可没有那么高的造诣,关于I2C Bus的基础,可参考先生之前的「I2C 界面之线路实务」,网址为:/n/article.asp?id=304799064272FED148256FDC00481D68当然也可以去参考Philips半导体网站的I2C官方规格:/acrobat/literature/9398/39340011.pdf运用背景、版本演进之别首先从规格的制订背景开始,I2C是在设计电视应用时所研发的界面,首版于1992 年发表;而SMBus(System Management Bus)则是Intel与Duracell (金顶电池)共同制订笔记本电脑所用的智能型电池(Smart Battery)时所研发的接口,首版于1995 年发表,不过SMBus文件中也提及,SMBus确实是参考自I2C,并以I2C为基础所衍生成。

I2C起源于电视设计,但之后朝通用路线发展,各种电子设计都有机会用到I2C;而SMBus则在之后为PC所制订的先进组态与电源管理接口(Advanced Configuration & Power Interface;ACPI)规范中成为基础的管理讯息传递接口、控制传递接口。

虽然I2C与SMBus先后制订时间不同,但都在2000年左右进入成熟化改版,I2C的过程改版以加速为主要诉求,而SMBus以更切合Smart Battery及ACPI的需求为多。

I2C三次主要改版:1992 年v1.01998 年v2.02000 年v2.1SMBus三次主要改版:1995 年v1.01998 年v1.12000 年v2.0▲图例:MAXIM 公司的MAX6641 芯片,具有温度监督及风扇控制功能(用PWM 脉宽调变方式控制风扇转速),图中脚位7、8即是SMBus(圈处),其他装置可透过SMBus与此芯片沟通,取得温度及相关信息,或进行命令操控。

(图/)电气特性差异:逻辑电平定义、限流、相关限制I2C的Hi/Lo逻辑电平有两种认定法:相对认定与绝对认定,相对认定是依据Vdd的电压来决定,Hi为0.7Vdd,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的装置能更省成本的作法。

了解电压后再来是电流,由于SMBus一开始就是运用在笔记本电脑内,所以省电的表现优于I2C,只需100uA就能维持工作,I2C却要到3mA同样的低用电特性也反应在漏电流(Leakage Current)的要求上,I2C最大的漏电流为10uA,SMBus为1uA,但是1uA似乎过度严苛,使运用SMBus的装置在验证测试时耗费过多的成本与心力,因此之后的SMBus 1.1版放宽了漏电流上限,最高可至5uA。

再者是相关限制,I2C有线路电容的限制,SMBus却没有,但也有相类似的配套规范,即是电平下拉时的电流限制,当SMBus的集电极开路Pin导通而使线路接地时,流经接地的电流不能高于350uA,另上电流(即相同的集电极开路Pin 开路时)也一样有规范,最小不低于100uA,最高也是不破350uA的。

既然对电流有限制,那么也可容易地推断对上拉电阻的阻值之范围要求,I2C 在5V Vdd时当大于1.6kohm,在3V Vdd时当大于1kohm,类似的SMBus于5V Vdd时当大于14kohm,3V Vdd时当大于8.5kohm,不过这个定义并非牢不可破,就一般实务而言,在SMBus上也可用2.4k〜3.9kohm范畴的阻值。

附注:I2C的时钟线称SCK或SCL,数据线称SDA。

SMBus的时钟线称SMBCLK,数据线称SMBDAT。

▲图说:I2C与SMBus 在逻辑位准的电压定义不尽相同,基本上I2C的定义较为宽裕、弹性,而SMBus 则更专注在省电方面的要求。

(图/)时序差别与考验物理层面的空间要求完后,再来就是物理层面的时间,即是时序(Timing)方面的差别。

先以运作频率来说,I2C此方面相当宽裕,最低频可至0Hz(直流状态,等于时间暂停),高可至100kHz(Standard Mode)、400kHz(Fast Mode)、乃至3.4MHz(High Speed Mode),相对的SMBus就很局限,最慢不慢于10kHz,最快不快于100kHz。

很明显的,I2C与SMBus的交集运作频率即是10kHz〜100kHz间。

用于笔记本电脑的电池管理或PC组态管理、用电管理的SMBus,很容易体会不需要更高运作频率的理由,只要传递小数据量的监督信息、控制指令本就不用过于高速,而朝向广泛运用的I2C自然希望用更高的传输以应对各种可能的需求。

然而大家可能会疑惑,为何SMBus有最低速的要求?何不放宽到与I2C相同的无最低速限制呢?SMBus一定要维持10kHz以上的运作频率,主要也是为了管理监控,另一个用意是只要在保持一定传速运作的情况下加入参数,就可轻松获知总线目前是否处于闲置(Idle)中,省去逐一侦测传输过程中的停断(STOP)信号,或持续保有停断侦测并辅以额外参数侦测,如此对总线闲置后的再取用会更有效快速。

传速要求之后还有数据保持时间(Data Hold Time)的要求,SMBus 规定SMBCLK线路的电平下降后,SMBDAT上的数据必须持续保留300nS,但I2C 却没有对此有相同的强制要求。

类似的,SMBus对接口被重置(Reset)后的恢复时间(Timeout)也有要求,一般而言是35mS,I2C这方面亦无约束,可以任意延长时间。

相同的SMBus 也要求无论是在主控端(Master)或受控端(Slave),其频率处于Lo电平时的最长持续时间不得超越限制,以免因为长时间处在Lo准位,而致收发两端时序脱轨(失去同步,造成后续误动作)。

还有,I2C与SMBus在信号的上升时间、下降时间等也有不同的细节要求,此点必要时也必须进行确认,或在验证过程中稍加留意。

▲图例:Smart Battery或ACPI的实现、监督、与操控,最底层都需要SMBus(圈处)作为后援,图为简易的多组式智能型电池系统,图中有Smart Battery A、B 两组电池。

(图/)「已妥」与「未妥」机制的强制性差别不单是电气、时序有别,更深层次的协议机制也有不同。

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

但是,I2C并没有强制规定接收端非要做出响应不可,也可以默不作声,即便默不作声,发送端还是会继续工作,开始进行数据传递及下达读/写指令,如此的机制在一般运用中还是可行,但若是在一些实时(Real Time)性的应用上,任何的动作与机制都有一定的时限要求,这种可有可无式的响应法就会产生问题,可能会导致受控端无法接收信息。

相同的情形,在SMBus上是不允许接收端在接收地址信息后却不发出回应,每次都要回应,为何要强制回应?其实与SMBus的应用息息相关,SMBus上所连接的受控装置有时是动态加入、动态移除的,例如换装一颗新电池,或笔记本电脑接上DOCK PORT等,如果接入的装置已经改变却没有回应,则主控端的程序所掌握的并非是整体系统的最新组态,就会造成误动作。

类似的情形也适用于ACPI,PC机内机外经常有一些装置可动态增入、移除,如机内风扇、外接打印机等,这些也一样该强制对主控端群发(广播)的地址信息作出完整响应。

地址动作方面有异,数据传输方面也有异。

在I2C方面,Slave虽然对Master 所发出的地址作出响应,但在后续的数据传递中,可能因某些事务必须先行处理、因应而无法持续原有的传输,这时候Slave就要对Master发出「未妥」的回应(Not Acknowledge;NACK),向Master 表示Slave正为他务忙碌中。

而SMBus方面,与I2C相同的,会以NACK的回讯向Master表达Slave尚未收妥传递的信息,但是SMBus的Slave会在后续的每个Byte传输中都发出NACK回信,这样设计的原因是因为SMBus没有其他可向Master要求重发(Resend)的表示法。

更直接说就是:NACK机制是SMBus标准中的强制必备,任何的讯息传递都很重要,不允许有漏失。

▲图说:I2C在完成一段地址或数据信息的传输后,受接端可发出讯息收妥(ACK)、未妥(NACK的响应,SMBus也具相同的机制,但由于应用之故有更强制的回显请求。

(图/)传输协议的子集、超集互动知会机制上有强制与否的差别,协议方面也是。

SMBus的通讯协议与协议中所用的讯息格式,其实只是取自I2C 规范中,对于数据传输格式定义中的子集合(Subset)而已。

所以,如果将I2C与SMBus交混连接,则I2C装置在存取SMBus装置时,只能使用SMBus范畴的协议与格式,若使用I2C的标准存取方式反而无法正确存取。

另外,I2C规范中有一种称为「General Call」的广呼方式,当发出「0000000」的地址信息后,所有I2C上的Slave装置统统要对此作出反应,此机制适合用在Master要对所有的Slave进行广播性讯息更新与沟通上,是一种总体、批次的运作方式。

SMBus一样有General Call机制,但在此之外SMBus还多了一种特用的ALERT(警讯)机制,不过这必须于频率线与数据线外再追加一条线(称为:SMBSUS)才能实现,ALERT虽名为警讯但其实是中断(Interrupt)的用意,Slave可以将SMBSUS线路的电位拉低(ALERT#,#表示低电平有效),这时就等于向Master发出一个中断警讯,要求Master尽速为某一Slave提供传输服务。

相关文档
最新文档