Linux设备驱动程序架构分析之I2C Spec摘要.docVIP

Linux设备驱动程序架构分析之I2C Spec摘要.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux设备驱动程序架构分析之I2C Spec摘要

1、I2C总线介绍 I2C(Inter-Integrated Circuit,内置集成电路)总线是由PHILIPS公司提出的一种串行总线,用于连接处理器及其外围设备,它具有如下特点: l? 只有两条总线线路:一条串行数据线(SDA),一条串行时钟线(SCL)。 l? 每个连接到总线的器件都可以使用软件根据它的惟一的地址来识别。 l? 传输数据的设备间是简单的主/从关系。 l? 主机可以用作主机发送器或主机接收器。 l? 它是一个真正的多主机总线,两个或多个主机同时发起数据传输时,可以通过冲突检测和仲裁来防止数据被破坏。 l? 串行的8位双向数据传输,位速率在标准模式下可以达到100kbit/s,在快速模式下可达400kbit/s,在高速模式下可达3.4Mbit/s。 l? I2C总线上可挂接的设备数量受总线的最大电容400pF限制,如果所挂接的是相同型号的器件,则还受器件地址位的限制。 ? 基于微控制器的电路设计通常需要满足如下设计标准: 1.?? 一个完整的系统通常至少包括一个微控制器和其它一些外围设备,如内存,I/O扩展等。 2.?? 连接各种外围设备到系统所需的开销必须达到最小。 3.?? 执行控制功能的系统不需要很高的数据传输速率。 4.?? 系统整体性能取决于选择的外围设备和用于连接设备的总线的特性。 要设计一个满足以上要求的系统,一个串行总线结构是必须的。虽然串行总线的数据吞吐量不如并行总线,但是串行总线需要更少的线路并且占用更少的处理器引脚。然而,一个总线并不仅仅是连接线路,它包括与系统通信所需的所有的数据格式和协议。 串行总线上的设备进行通信必须遵守某些协议以避免出现数据混淆、丢失和阻塞。快速设备必须能够与慢速设备通信。整个系统必须不依赖于某个设备,否则就可能无法进行改动和升级。协议还应该能够决定哪个设备对总线进行控制和控制的时间。而且,如果具有不同时钟频率的设备连接到总线上,总线必须提供统一的时钟源。所有这些标准都包含在I2C总线规范中。 ? 2、I2C总线的概念 I2C总线支持任意IC设计工艺的设备(NMOS、CMOS、bipolar)。使用两条线路在设备间传递信息,一条串行数据线(SDA),一条串行时钟线(SCL)。每个设备由一个唯一的地址标识,不管它是微控制器、LCD控制器、存储器还是键盘接口。根据设备的功能,每个设备即可以是数据的发送者,也可以是数据的接收者。显然LCD控制器只能是数据的接收者,而存储器则即可以数据的接收者,也可以是数据的发送者。除了数据的发送者和接收者,设备可以也区分为主设备和从设备。主设备发起数据传输。接收主设备发送的数据的设备是从设备。 表一:I2C总线术语 术语 描述 Transmitter 发送者 向I2C总线上发送数据的设备 Receiver??? 接收者 从I2C总线上接收数据的设备 Master????? 主设备 发起传输,产生时钟信号,结束传输的设备。 Slave?????? 从设备 接收主设备发送的数据的设备 Multi-master 多主设备 多个主设备可以同时尝试取得总线控制权 Arbitration? 仲裁器 当多个主设备同时要求传输数据时,用来仲裁哪个主设备获得总线控制权的过程。 Synchronization 同步 同步多个设备的时钟信号的过程 I2C总线是多主设备总线,因为主设备通常是微控制器,所以我们来考虑连接两个微控制器的I2C总线数据传输的例子,如下图所示: 这个例子强调I2C总线上的主设备/从设备和发送者/接收者关系,需要注意的是这种关系并不是固定不变的,而是依赖于某一时刻数据传输的方向。传输数据的流程如下: 1)如果微控制器A想要发送数据给微控制器B: 微控制器A(master),探测(addresses)微控制器B(slave) 微控制器A(master-transmitter),发送数据到微控制器B(slave-receiver) 微控制器A结束数据传输。 2)如果微控制器A想要从微控制器B接收数据: 微控制器A(master),探测(addresses)微控制器B(slave) 微控制器A(master-receiver)从微控制器B(slave-transmitter)接收数据 微控制器A结束数据传输。 在这个例子中,master(即微控制器A)产生时钟信号,并结束传输。 因为I2C总线可以连接多个微控制器,所以可能出现多个master同时请求发起数据传输。为了避免可能由此引起的混乱,一种仲裁程序已经被开发出来。 I2C总线上的时钟信号总是由master设备产生。当在总线上传输数据时,每个master属于它自己的时钟信号。 ? 3、I2C总线特征 SDA和SCL都是双向线,通过一个电源或上拉电阻连到到正电压上。如下图所示

文档评论(0)

2017ll + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档