I2C相关函数.docVIP

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

Linux I2C核心、总线与设备驱动II2C总线仅仅使用SCL、SDA两根信号线就实现了设备之间的数据交互,极大地简化对硬件资源和PCB板布线空间的占用。因此,I2C总线被非常广泛地应用在EEPROM、实时钟、小型LCD等设备与CPU的接口中。 Linux定义了系统的I2C驱动体系结构,在Linux系统中,I2C驱动由3部分组成,即I2C核心、I2C总线驱动和I2C设备驱动。这3部分相互协作,形成了非常通用、可适应性很强的I2C框架。 本章第1节将对Linux I2C体系结构进行分析,讲明3个组成部分各自的功能及相互联系。 第2节将对Linux I2C核心进行分析,解释i2c-core.c文件的功能和主要函数的实现。 第3、4节将分别详细介绍I2C总线驱动和I2C设备驱动的编写方法,给出可供参考的设计模板。 第5、6节将以第3、4节给出的设计模板为基础,讲解S3C2410 ARM处理器I2C总线驱动及挂接在上的SAA7113H视频模拟/数字转换芯片设备驱动的编写方法。 15.1 Linux I2C体系结构 Linux的I2C体系结构分为3个组成部分: ? I2C核心 I2C 核心提供了I2C总线驱动和设备驱动的注册、注销方法,I2C通信方法(即“algorithm”,笔者认为直译为“运算方法”并不合适,为免引起误解, 下文将直接使用“algorithm”)上层的、与具体适配器无关的代码以及探测设备、检测设备地址的上层代码等。 ? I2C总线驱动 I2C总线驱动是对I2C硬件体系结构中适配器端的实现,适配器可由CPU控制,甚至直接集成在CPU内部。 I2C总线驱动主要包含了I2C适配器数据结构i2c_adapter、I2C适配器的algorithm数据结构i2c_algorithm和控制I2C适配器产生通信信号的函数。 经由I2C总线驱动的代码,我们可以控制I2C适配器以主控方式产生开始位、停止位、读写周期,以及以从设备方式被读写、产生ACK等。 ? I2C设备驱动 I2C设备驱动是对I2C硬件体系结构中设备端的实现,设备一般挂接在受CPU控制的I2C适配器上,通过I2C适配器与CPU交换数据。 I2C设备驱动主要包含了数据结构i2c_driver和i2c_client,我们需要根据具体设备实现其中的成员函数。 图15.1 Linux I2C体系结构 图15.1 Linux I2C体系结构在Linux 2.6内核中,所有的I2C设备都被在sysfs文件系统中显示,存在于/sys/bus/i2c/目录,以适配器地址和芯片地址的形式列出,如: $ tree /sys/bus/i2c/ /sys/bus/i2c/ |-- devices | |-- 0-0048 - ../../../devices/legacy/i2c-0/0-0048 | |-- 0-0049 - ../../../devices/legacy/i2c-0/0-0049 | |-- 0-004a - ../../../devices/legacy/i2c-0/0-004a | |-- 0-004b - ../../../devices/legacy/i2c-0/0-004b | |-- 0-004c - ../../../devices/legacy/i2c-0/0-004c | |-- 0-004d - ../../../devices/legacy/i2c-0/0-004d | |-- 0-004e - ../../../devices/legacy/i2c-0/0-004e | `-- 0-004f - ../../../devices/legacy/i2c-0/0-004f `-- drivers |-- i2c_adapter `-- lm75 |-- 0-0048 - ../../../../devices/legacy/i2c-0/0-0048 |-- 0-0049 - ../../../../devices/legacy/i2c-0/0-0049 |-- 0-004a - ../../../../devices/legacy/i2c-0/0-004a |-- 0-004b - ../../../../devices/legacy/i2c-0/0-004b |-- 0-004c - ../../../../devices/legacy/i2c-0/0-004c |-- 0-004d - ../../../../devices/legacy/i2c-0/0-004d |-- 0-004e - ../../../../devices/

文档评论(0)

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

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

1亿VIP精品文档

相关文档