1.总结
I2C and SMBus
=============
I2C是是飞利浦开发的一个协议,它是一个慢速双线协议(变速,最高400 kHz),高速可扩展(3.4兆赫)。他提供连接各种类型的需要很少数据需求或者低波特率传输需求的设备一个总线. I2C广泛使用于嵌入式系统.有些系统使用的变体不符合品牌要求,因此不会被宣传为I2C.
SMBus(系统管理总线)基于I2C协议,主要是I2C协议和信令的一个子集。许多I2C设备将在但是一些SMBus协议在实现I2C品牌化。现代PC主板依赖于SMBus。最常见的通过SMBus连接的设备是使用I2C EEPROM配置的RAM模块,以及硬件监控芯片。
由于SMBus主要是广义I2C总线的一个子集,我们可以在许多I2C系统上使用它的协议。然而,也有一些系统不同时满足SMBus和I2C电气约束;还有一些系统不能实现所有常见的SMBus协议语义或消息。
Terminology
===========
当我们谈论I2C时,我们使用以下术语:
Bus -> Algorithm
Adapter
Device -> Driver
Client
算法(Algorithm)驱动程序包含可用于整个类的通用代码I2C适配器(Adapter)。每个特定的适配器驱动程序都依赖于一个算法
驱动程序,或包含自己的实现.
驱动(Driver)包含访问某种设备的代码,每个检测到的设备都有自己的客户端(Client)结构中的数据。通常,Driver和Client更接近集成比Algorithm和Adapter。
对于给定的配置,您需要I2C总线的驱动程序,并且I2C设备的驱动程序(通常每个设备一个驱动程序)。此时,Linux只在主模式下操作I2C(或SMBus);您不能使用这些api使Linux系统表现为从机/设备,或者使用自定义协议或模拟其他设备。