这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » SMBUS,I2C SMBUS和I2C总线之间的区别

共2条 1/1 1 跳转至

SMBUS,I2C SMBUS和I2C总线之间的区别

院士
2006-09-17 18:14:16     打赏
SMBUS,I2C SMBUS和I2C总线之间的区别



关键词: SMBUS     总线     间的     区别    

院士
2006-12-22 22:43:00     打赏
2楼
问 有哪位大虾讲一下,SMBUSI2C总线之间的区别,两者接口可以相互兼容吗? 1: 我看过,但没有注意当时还不想认识SMBUS... 2: 帖一点,自己也认识一下:SMBUSI2C通信协议的一个子集
基于PS501的智能电池系统(图)
作者:深圳高奇晶圆电子科技有限公司 何悦生  日期:2006-1-1  来源:本网
字符大小:【】 【】 【

智能电池管理芯片PS501广泛应用于笔记本电脑、电动工具、外置式电池包、电动车,以及各类便携式电子产品的电池管理
引言
PS501是美国微芯科技公司推出的智能电池管理芯片,适用于2~4节锂离子及锂聚合物电池组,或6~12节镍氢及镍镉电池组,能准确计算出电池组的剩余容量、满充容量,以及预测电池的可运行时间和充电完成所需要的时间,提供电池监控功能,确保使用安全,先进的电池平衡功能可以延长电池寿命及工作时间。其通信协议符合SMBus 1.1和SBdata 1.1智能电池指令集。
特点和引脚说明
● 特点
  1. 支持2~4节锂电池和6~12节镍电池。
  2. 基于PIC18F MCU内核,现场可编程的锂离子/锂聚合物/镍电池电量计量芯片。
  3. 遵循SMBus 1.1和SBdata 1.1。
  4. 精密的16位Δ-Σ A/D转换,电流测量精度为小于1mA。
  5. 18V最大输入电压,电压测量端可直接与电池芯相连接。
  6. 可编程I/O用于LED驱动和充放电保护和二次安完保护。
  7. 对不同的电池芯,用户可以配置不同的电池模型。
  8. 电池容量计量误差小于1%。
  9. 先进的放电完(EOD)判断方法。
  10. 16KB闪存和256Byte EEPROM。
  11. 高精度的内部振荡器。
  12. 极低的电源消耗,工作时耗电为200μA,采样模式时为100μA,休眠时仅为0.5μA。
  13. 增强型ESD保护能力。
  14. 12个通用可编程I/O口,其中2个为高电压(最高18V)开漏输出。
  15. 集成和外接温度传感器,实现两个位置温度检测功能。
  16. 内置最大平衡电流为8.4mA的电池平衡电路和外部电池平衡控制功能。

● 引脚说明[BLOCKQUOTE]
PS501采用TSSOP28无铅封装,符合欧盟的RoSH以及各国的环保要求,其引脚排列如图1所示。超小体积的TSSOP封装(7.85mm×10.2mm)可节省PCB的空间,方便地安装于不同尺寸的电池包中,如图2所示。[/BLOCKQUOTE]

图1 PS501引脚图

图2 基于PS501的智能电池包

PS501引脚功能简介
PS501内部结构和工作原理
● PS501内部结构[BLOCKQUOTE]
PS501的内部结构见图3。[/BLOCKQUOTE]

图3 PS501内部结构图

● 处理器内核/存储器[BLOCKQUOTE]
PS501采用了PIC18 8位RISC单片机内核,其存储器资源包括16KB 闪存,以及256Byte EEPROM,分别用于存储程序/数据和参数。这两种存储器均可通过SMBus接口进行重新编程,而不需要特别的编程接口。每片PS501在出厂前都已经烧录好Boot loader程序,针对不同型号用电设备,不同特性的电池芯,以及不同容量等配置信息用户可以使用Powertool500软件设置生成不同的固件,在电池包生产现场下载固件,从而电池包的生产厂可以方便快速地对不同特性的电池芯,不同的上位机设备更改固件,而不需要改动硬件电路。[/BLOCKQUOTE]
● A/D转换器[BLOCKQUOTE]
PS501利用高精度A/D转换器来进行电流、电压和温度的精确测量。A/D经过校准后可消除增益误差和偏移误差。基于PS501芯片的电池包管理PCBA在生产过程中除了要现场下载固件外,还要对A/D转换电路及硅时钟振荡器进行校准,校准的内容包括:电池组电压采样,每串电池芯电压采样,外部和内部温度采样,电流采样,以及硅时钟振荡器。因此不管是元件精度,PCB设计等造成的累加误差都可以通过校准最大程度地进行更正,从而确保每个PCBA对物理量的采样都是精确的,而这个过程花费的全部时间仅为15s,而且全过程全部自动进行,不需要人工干预。[/BLOCKQUOTE]
● PowerSmart固件/电池模型[BLOCKQUOTE]
Flash存储器中固化有所利用PowerSmart开发的电池管理固件。该固件采用专有算法以及精密的三维电池模型,模型包含250多种参数,并可对自放电、温度以及其他因素进行补偿。除此之外,PS501在充/放电周期内还执行了多项容量校正和减小误差的操作,以提高精度、改善电量计和充电控制性能。上述功能可确保实现精确的电池容量报告以及误差小于1%的实时预测。闪存的可再编程特性使得在无需改变硅片设计的前提下,可迅速实现固件升级并生成用户版本。PS501可根据特定应用的电池化学性质轻松进行用户定制。
PowerSmart提供了各种标准配置文件,可用于配置各种流行的充电电池和电池组应用。图4和表1是不同温度,不同放电率的放电结束电压3D模型和PS501内部表格参数一个例子。[/BLOCKQUOTE]

图4 不同温度、不同放电率的放电结束电压3D模型

表1 锂电池放电结束电压查找表
● SMBus接口/SBdata命令[BLOCKQUOTE]
PS501包括一个符合SMBus v1.1协议的SMBus通信引擎,目前所有的笔记本电脑与笔记本电池的通信都遵循这个通信协议。SMBUSI2C通信协议的一个子集,使用带有I2C通信接口的处理器或者用软件模拟I2C通信接口的方法,都可以很容易地读取PS501的SBdata数据,应用到不同的电子产品中。[/BLOCKQUOTE]
● 精确的集成时基[BLOCKQUOTE]
PS501带有一个高精度硅振荡器,无需外接时钟振荡器即可进行自放电定时和容量计算的精确定时。这个内部硅振荡器在电池组生产时可以由用户进行校准。[/BLOCKQUOTE]
● 温度检测[BLOCKQUOTE]
当PS501紧靠被监控的电池时,可采用片内集成的温度传感器以减少器件数目,用户也可选择通过器件提供的引脚外接热敏电阻进行温度监控。同时PS501可以支持内外两个传感器分别进行采样,监测两个不同地方的温度,并可以通过GPIO做出不同条件的温度保护。[/BLOCKQUOTE]
● 通用I/O[BLOCKQUOTE]
PS501提供12个可编程数字输入/输出引脚。其中8个引脚可用作LED输出以显示充电状态(SOC),或直接控制外部充电电路,或为锂离子电池组提供额外的安全保护。当然,它们也可用作通用输入/输出引脚。在这些引脚中,有两个I/O是开漏输出引脚,因此可用于直接驱动FET或其他高电压应用。
在PS501内部提供的最大8.4mA平衡电流不足以满足大容量电池包的平衡功能需要时,PS501可以通过通用  I/O控制外部的平衡电路,实现用户自定义大小的平衡电流控制。此外通用  I/O还可以用作电池低容量工作时驱动蜂鸣器作低电量声音提示。[/BLOCKQUOTE]
工作模式
PS501有4种工作模式:运行模式、采样模式、低电压休眠模式和闲置休眠模式。每种模式都有特定的进入和退出条件,四种模式的功耗各不相同。

● 运行模式:PS501在电池组在充电或放电的过程中工作在这种模式。[BLOCKQUOTE]
运行模式是功耗最大的工作模式。在运行模式中,一个测量周期内所有测量和计算进行一次。在每个测量周期,依次对电流、电压和温度进行测量。例如:当笔记本电脑在工作或充电时,PS501的工作电流为200μA。[/BLOCKQUOTE]
● 采样模式:PS501在电池组既没有充电也没有用电的情况下进行采样模式。[BLOCKQUOTE]
采样模式中,充电状态的计算、SMBus请求等操作仍将按照正常运行模式的频率进行,不同的是每隔多个采样周期才进行一次测量。器件总功耗得以显著降。例如:笔记本电脑在关机时, PS501的工作电流为100μA。[/BLOCKQUOTE]
● 低电压休眠模式:电池组电压测量值低于用户的预设数值时,器件进入休眠模式。[BLOCKQUOTE]
处于休眠模式的PS501不再进行测量和计算。电量计显示器不工作,SMBus上的通信被忽略,只有当满足了唤醒条件时器件才可退出休眠模式。休眠模式是功耗最低的模式之一,用于电池彻底放电后保存电池能量,此时PS501的工作电流可以低至1μA。[/BLOCKQUOTE]
● 闲置休眠模式:对于需要长期储存的电池组,可采用闲置休眠模式。[BLOCKQUOTE]
该模式下,无论电压值的大小,PS501都将进入低功耗休眠模式。用SMBus命令可使器件进入该模式。此时PS501的典型功耗可以低至1μA。当SMBUS总线有上拉电平退出该模式。该模式应用于电池包在长期储存和运输的过程节省电量。如:笔记本电脑电池在生产后到用户第一次使用这个过程PS501可以设置工作在这种模式。[/BLOCKQUOTE]
电池平衡
● 电池平衡功能的必要性[BLOCKQUOTE]
当一个串联电池包中的电池芯中有电池芯的容量与其他串联的电池芯片不同时,会体现为在电池组充满或放完时串联电池芯之间的电压不相同。这种情况下导致在电池组充电的过程中,电压过高的电池芯提早触发电池组过充电保护,而在放电过程中电压过低的电池芯导致电池组过放电保护,从而使电池组的整体容量明显下降,整个电池组体现出来的容量为电池组中性能最差的电池芯的容量。[/BLOCKQUOTE]
● PS501的内部平衡功能[BLOCKQUOTE]
PS501片内具备电池平衡负载,用以从具有较高电压的电池抽取多余的电流,消耗多余的电量,实现电池平衡。根据电池电压大小的不同,内部的多个500Ω电阻将从每节电池抽取最多     8.4mA的电流。电池平衡算法将对单个电池的电压以及它们之间的电压差进行监视。对于容量较小,而且电池芯的性能及一致性较好的电池组,可以选择使用内部平衡功能。[/BLOCKQUOTE]
● PS501的外部平衡控制功能[BLOCKQUOTE]
当电池组的容量较大,并且电池芯的性能和一致性较差的情况下,PS501片内的平衡电路无法有效地起到电池平衡功能。这种情况下,可以使用PS501的可编程I/O并通过芯片外部的简单元件实现大电流的电池平衡功能,参考应用电池见图5。这样,通过改变分流电阻的阻值,可以方便地实现不同平衡电流,通常在一些应用中将其设为100mA以上。这个功能特别适用于使用国产大容量电池芯的电动车、电动工具、外置电池包等应用。[/BLOCKQUOTE]

图5 PS501外置电池平衡电路
PS501的典型应用电路
PS501的典型应用电路见图6。

图6 PS501典型应用电路
● 电量计量功能:PS501直接对四串锂电池进行电压采样,电流的采样通过串在主回路中的采样电阻的两端的电压降得知。温度采用片内传感器。
● 一次保护功能:锂离子电池在过充电和过放电、过流、过温等情况下都有可能会损坏电池和用电设备,并有发生电池爆炸或着火的危险。本方案使用专用的电池保护芯片如SEIKO公司的S-8254或MITSUMI公司的MM1414和PS501共同控制充电和放电保护MOSFET,实现双重一次保护功能。
● 二次保护功能:在一次保护没有正确保护,并且电池于危险的前提下,PS501可以控制热熔保险丝,将其熔断从而避免发生电池爆炸或着火的危险。
● 通信:主机通过SMBUS与PS501通信,读取电池的各种信息。
● 电池平衡:使用片内电池平衡功能。
PS501的实测数据
图7是基于PS501的智能电池组实测数据。

图7 PS501的实测数据
电池组形式:3串2并(3S2P)容量4000mAH
充电设置:恒流为3000mA、恒压为12600mV,停充条件为电流小于100mA。
放电设置:恒流为4500mA,停放条件为包电压低于9000mV。
测试结果:
  1. PS501准确地计算出电池组的容量,保证运行时间。
  2. 在充电过程中可以实时记录获得的容量,并且在电池充满时计算出的电池容量与实际的电池容量4000mAH相符。
  3. 放电过程中,准确记录放出的电量,并且在电池放光时,计算出的容量为0保证用电设备能及时存盘,关机。并获得电池使用的最大容量。

结语
基于PS501的智能电池系统,可以准确地计算电池组的剩余容量和报告电池的状态,从而确保用电设备运行的可靠性以及最大化电池的使用时间。PS501的GPIO可以实现电池灵活的保护功能,确保电池的使用安全,同时内置电池平衡电路以及外部的电池平衡控制功能保证了电池组的电压平衡,大大延长了电池的使用时间和寿命,这个功能对国产电池芯尤其实用。
参考文献
1 PS501 datasheet. DS21818C. 2004 Microchip Technology Inc.


-------
I2C信号和SMBus信号进行无毛刺快速隔离的方法
2004-11-9 17:51:20 EDN CHINA 电子设计技术 作者:Mark Thoren, Linear Technology Corp, Milpitas,CA
  (华强电子世界网讯) I2C是一种流行的串行协议,适用于电源控制器、ADC、DAC、EEPROM 以及其他器件。在某些数据采集和电源控制设备中,您必须把 I2C主设备与一个或多个从设备隔离开来,以便解决噪声、接地和安全等问题。另外,虽然可以把 128 个外设连接到总线,但在某一部位,地电位差和总线电容过大会使噪声余量和定时余量变小。本设计思路表明如何利用用一种符合 400kHz 增强型 I2C 总线规范要求的方法,对 I2C 或 SMBus 信号进行快速的、无毛刺光隔离。I2C 总线由双向时钟和数据线(SCL 和 SDA)组成,SCL和SDA 均用电阻器或电流源来拉高电平。各器件均用集电极开路的I/O 引脚连接到总线。有一种隔离I2C信号的办法是用图1所示电路的变种来实现的,图1仅仅示出了 SDA;SCL 工作原理与SDA相同。

图1,本电路是一种简单的I2C隔离器。
  图 1 所示电路的工作原理是,把非隔离 的SDA 线路电位拉低的一个器件会使一个光耦合器 LED导通,从而使隔离的 SDA 线路电位拉低,并使隔离侧的光耦合器 LED不工作,反之亦然。然而,如果隔离势垒两侧的器件正在拉低各自的 SDA 线路的电位,则这些光耦合器就处于一种不确定状态,两个 LED 部分导通。当非隔离的器件释放其 SDA 线路时,SDA线路上的电压上升,直到隔离侧的 LED 能够完全导通为止。只有这样,非隔离的 SDA 线路才会再次变为低电平。这种情况在I2C通信期间的各个时候都会发生,其中包括时钟同步(在 SCL 线路上)、多主设备仲裁、SMBus 中断仲裁(在 SDA 线路上)。图 2 示出了图 1 所示电路的工作细节。 74HC125 三态非反相缓冲器仿真两个 I2C 器件的漏极开路输出。 线上的逻辑低电平迫使输出端变为低电平,而逻辑高电平则使输出端处于高阻抗状态。波形1 和波形 2 表示 SDA缓冲器 和隔离的 SDA 缓冲器的使能线的输入信号。波形3 和波形 4 则分别表示相应的输出信号。

图2,简单的 I2C 隔离器在某些情况下会产生大量毛刺。
  这类电路以多种形式发表在报刊上,而且通常配有需要 5 ~ 10 mA LED 驱动电流的慢速光耦合器。这些电路可在有限的设备中使用,但它们速度慢,而且仍然会产生毛刺。试图用高速元件来克服速度问题和驱动问题,只会使这些电路变得几乎无法使用。图 1 所示电路使用需要 500mA LED 驱动电流的高速 HCPL2300 光耦合器。如果两条 SDA 线都保持为低电平,然后同时释放,则两个光耦合器就会互相对抗,形成振荡器(图 3)。这种振荡的特性取决于上拉电阻、供电电压和电容型数据线路(去掉 9pF 示波器探头中的一个,就会使振荡停止,而用一个 10pF 电容器代替这一探头,就会再次开始振荡)。

图3,在图1所示电路中使用高速元件会导致不可预测的行为。

图4,改进的I2C隔离器速度快,不会产生毛刺。
  图 4 所示电路通过建立“高”(上拉至 5V)、“拉低”和“被拉低”三种逻辑电平来解决这些问题。当两侧都处于空闲高电平时,两个光耦合器均关断。当某一侧把其SDA线拉至低于 0.4V(适合于集电极开路输出和漏极开路输出的安全假定值)时,比较器使其 LED导通。另一侧的SDA线拉低至大约 0.6V,这仍被解释为逻辑低电平,但不会导致那一侧的 LED 导通。当两侧均在拉低各自SDA线电平时,两个 LED 都导通。在这种状态下,如果一侧释放其SDA线,那么它会很明显地从 I2C器件输出的低电平升至大约 0.6V。

图5,这一示波器照片示出了改进的I2C隔离器的工作情况。
  图 5 示出了图 4 所示电路的工作细节。LT1719 比较器和 Agilent公司 (www.agilent.com)的 HCPL2300 光隔离器的组合,能满足 400kHz 增强 I2C 总线规范的定时要求。总传输延迟大约为 100 纳秒,因此您可以调节逻辑阈值来适应其它要求。虽然您可以使用该电路来使SDA 和 SCL 线支持时钟完全同步,但只要主设备的通信速度不快于最慢的从设备,就不必使用这种额外的电路。如果您不需要时钟同步,则您可在SCL中 使用一个光耦合器。 [/TD][/TR]
[/TD][/TR]


-------
SMBus 是 System Management Bus 的缩写,是1995年由Intel提出的,应用于移动PC和桌面PC系统中的低速率通讯。它主要是希望通过一条廉价并且功能强大的总线(由两条线组成),来控制主板上的设备并收集相应的信息。 SMBus 为系统和电源管理这样的任务提供了一条控制总线,使用 SMBus 的系统,设备之间发送和接收消息都是通过 SMBus,而不是使用单独的控制线,这样可以节省设备的管脚数。 使用 SMBus,设备还可以提供它的生产信息,告诉系统它的型号,部件号等,针对一些事件的保存它的状态,报告不同类别的错误,接收控制参数,并返回它的状态等。 SMBus 最适用于笔记本电脑上,检测各元件状态并更新硬件设置引脚 (pull-high 或 pull-low)。例如,将不存在的 DIMM 时钟关闭,或检测电池低电压状态。 SMBus 的数据传输率只有 100Kbit/s;这允许单一主机与 CPU 和多个主从硬盘通讯并收发数据。SMBus 也可用于免跳线设计的主板上。 3: 太忽悠了!!!谢谢广西老乡... 4: 找到了:I2C和SMbus的区别(最后一段)
[/TD]

如何为数字温度传感器选择系统接口

上网时间 : 2005年12月08日
打 印 版    推 荐 给 同 仁    发 送 查 询


有助于获得精确的热管理加上免校准特性,将确保数字温度传感器继续受到人们的欢迎。为满足需多个主器件共存的高可靠性和系统冗余要求,以及对于要求轻松添加新温度传感器的应用而言,I2C总线或SMBus将继续保持其作为温度传感器系统接口主要选择的地位。

热敏电阻、热电偶、模拟硅温度传感器和镍/铂电阻式温度检测器(RTD),需要进行校准以达到所需的温度精度。作为混合信号器件的数字温度传感器则不需要进行校准,它们具有集成数字逻辑,工作温度范围为-55℃到50℃,采用绝对温度比例(PTAT)电路,通过检测二极管的基极-发射极电压(VBE)的变化来测量本地/远程温度。它具有简单的集成硬件来保存温度值并对温度设定点、器件工作模式、睡眠模式以及快/慢转换速率进行编程设定。数据通过IC间总线(I2C总线)、系统管理总线(SMBus)或串行外围接口(SPI)来通信。实际上,每个器件在生产时均会进行调整,温度检测精度达到±0.5℃以内或者更高,性价比和可靠性均很高。这些优点使得数字温度传感器在几乎任何可以想象到的应用中都受到欢迎,包括PC、通信设备、手持设备和工业控制设备等。

图1:数字温度传感器简化框图。


具体来说,数字温度传感器的主要构成包括一个双电流源、一个Δ-Σ A/D转换器、数字逻辑和一个通向数字器件(如与一个微处理器或微控制器连接)的串行接口(如I2C总线、SMBus或SPI)。数字温度传感器有两种:本地或远程温度传感器,它们均采用某种方法强制两个成比例的电流通过一个连接成二极管形式的NPN或PNP晶体管,均用于测量所导致的VBE变化,使用Δ-ΣA/D转换器对电压采样并将数值转换成数字格式。强制电流一般采用约10:1的比例。通过强制施加比例电流和测量两个VBE的差值,可消除二极管上IS这一与工艺相关参数的一阶效应。

每个温度传感器在生产过程中均会进行调整,以便与要使用的二极管的理想参数匹配。远程二极管的特性取自2N3904/6。由于本地温度传感器在硅衬底上只是一个简单的NPN或PNP结构,远程温度传感器几乎总是集成一个本地温度传感器。因此,远程传感器的作用几乎总是像两个传感器一样。本地温度传感器在同一封装集成了一个热二极管。对于本地传感器,根据封装和位于IC衬底上的本地二极管,热时间常数(即达到最终温度的63.2%所需的时间)为几分钟。总线负载过重或转换过快会造成器件自加热并影响温度精度。

温度数据变为可用所需的时间称为转换速率。该速率由器件内部振荡器和A/D分辨率决定,一般低于100Hz或长于10ms。转换速率越快,温度数据可检索的速度就越快,同时温度传感器消耗的功率也就越大。由于存在自加热效应,转换速率通常较低。图1显示了一个远程温度传感器和/或本地温度传感器的简化框图。

I2C总线或SMBus温度传感器的优点

最流行的数字温度传感器是那些带有串行总线接口的传感器。温度传感器总线的选择很大程度上取决于所选微处理器或控制器上有哪些可用的接口。控制器的选择取决于工程师对其拥有的经验多少。对于需要经常进行数据流传输的系统数据,SPI是首选,因为它拥有较快的时钟速率,速率可从几兆赫兹到几十兆赫兹。然而,对于系统管理活动,如读取温度传感器的读数和查询多个从器件的状态,或者需要多个主器件共存于同一系统总线上(系统冗余常会要求这一点),或者面向低功耗应用,这时I2C 或 SMBus

图2:SPI 典型读/写周期。
将是首选接口。下面几部分将介绍每种串行总线及其优缺点。

1. SPI

SPI 是一种四线制串行总线接口,为主/从结构,四条导线分别为串行时钟(SCLK)、主出从入(MOSI)、主入从出(MISO)和从选(SS)信号。主器件为时钟提供者,可发起读从器件或写从器件操作。这时主器件将与一个从器件进行对话。当总线上存在多个从器件时,要发起一次传输,主器件将把该从器件选择线拉低,然后分别通过 MOSI 和 MISO 线启动数据发送或接收。

SPI 时钟速度很快,范围可从几兆赫兹到几十兆赫兹,且没有系统开销。SPI 在系统管理方面的缺点是缺乏流控机制,无论主器件还是从器件均不对消息进行确认,主器件无法知道从器件是否繁忙。因此,必须设计聪明的软件机制来处理确认问题。同时,SPI 也没有多主器件协议,必须采用很复杂的软件和外部逻辑来实现多主器件架构。每个从器件需要一个单独的从选择信号。总信号数最终为 n+3 个,其中 n 是总线上从器件的数量。因此,导线的数量将随增加的从器件的数量按比例增长。同样,在 SPI 总线上添加新的从器件也不方便。对于额外添加的每个从器件,都需要一条新的从器件选择线或解码逻辑。图 2 显示了典型的 SPI 读/写周期。在地址或命令字节后面跟有一个读/写位。数据通过 MOSI 信号写入从器件,通过 MISO 信号自从器件中读出。图 3显示了 I2C总线/SMBus以及SPI的系统框图。

2. I2C总线

图3:(左)I2C总线/SMBus系统接口;(右)SPI 系统接口。


I2C 是一种二线制串行总线接口,工作在主/从模式。二线通信信号分别为开漏 SCL 和 SDA 串行时钟和串行数据。主器件为时钟源。数据传输是双向的,其方向取决于读/写位的状态。每个从器件拥有一个唯一的 7 或 10 位地址。主器件通过一个起始位发起一次传输,通过一个停止位终止一次传输。起始位之后为唯一的从器件地址,再后为读/写位。

I2C总线速度为从0Hz到3.4MHz。它没有SPI 那样快,但对于系统管理器件如温度传感器来说则非常理想。I2C 存在系统开销,这些开销包括起始位/停止位、确认位和从地址位,但它因此拥有流控机制。主器件在完成接收来自从器件的数据时总是发送一个确认位,除非其准备终止传输。从器件在其接收到来自主器件的命令或数据时总是发送一个确认位。当从器件未准备好时,它可以保持或延展时钟,直到其再次准备好响应。

I2C允许多个主器件工作在同一总线上。多个主器件可以轻松同步其时钟,因此所有主器件均采用同一时钟进行传输。多个主器件可以通过数据仲裁检测哪一个主器件正在使用总线,从而避免数据破坏。由于 I2C总线只有两条导线,因此新从器件只需接入总线即可,而无需附加逻辑。图4 显示了典型的 I2C总线读/写操作。

3. SMBus

图4: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超时功能决定的。

作者:Phil Luu

飞利浦半导体公司
5: 老乡继续呀 6: 继续什么?里面的图错了我还不知道去哪找呢

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]