Linux IIC设备驱动开发.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux IIC设备驱动开发

目 录 1. I2C总线简介 1 1.1. I2C总线工作原理 1 1.2. I2C总线的几种信号状态 1 1.3. I2C总线基本操作 1 2. Linux系统I2C驱动程序 2 2.1. I2C驱动层次结构 2 2.2. I2C核心(I2C core) 3 2.3. I2C控制器驱动(I2C adapter) 3 2.4. I2C设备驱动(I2C driver) 3 3. 基于SUNXI平台的I2C控制器驱动 4 3.1. I2C驱动层次架构 4 3.2. I2C驱动源码结构 4 3.3. I2C驱动配置说明 5 4. I2C设备驱动程序的开发 7 4.1. I2C设备驱动一般结构 7 4.2. 常用数据结构解析 7 4.2.1. i2c_adapter 7 4.2.2. i2c_algorithm 8 4.2.3. i2c_msg 8 4.2.4. i2c_client 8 4.2.5. i2c_driver 9 4.3. 常用接口函数解析 9 4.3.1. i2c_add_driver 9 4.3.2. i2c_del_driver 10 4.3.3. i2c_set_clientdata 10 4.3.4. i2c_get_clientdata 10 4.3.5. i2c_master_send 10 4.3.6. i2c_master_resv 11 4.3.7. i2c_transfer 11 4.4. I2C设备驱动DEMO 11 I2C总线简介 I2C(Inter-Integrated Circuit)总线是一种由Philips公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线最主要的优点就是简单性和有效性。 I2C总线工作原理 I2C总线是由数据线SDA和时钟SCL构成的串行总线,各种被控制器件均并联在这条总线上,每个器件都有一个唯一的地址识别,可以作为总线上的一个发送器件或接收器件(具体由器件的功能决定)。I2C总线的接口电路结构如图1所示。 图1 I2C总线接口电路结构图 I2C总线的几种信号状态 空闲状态:SDA和SCL都为高电平。 开始条件(S):SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。 结束条件(P):SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。 数据有效:在SCL的高电平期间,SDA保持稳定,数据有效。SDA的改变只能发生在SCL的低电平期间。 ACK信号:数据传输的过程中,接收器件每接收一个字节数据要产生一个ACK信号,向发送器件发出特定的低电平脉冲,表示已经收到数据。 I2C总线基本操作 I2C总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL),同时控制总线的传输方向,并产生开始和停止条件。 数据传输中,首先由主器件产生开始条件,随后是器件的控制字节(前七位是从器件的地址,最后一位为读写位)。接下来是读写操作的数据,以及ACK响应信号。数据传输结束时,主器件产生停止条件。具体的过程如图2所示。 图2 I2C总线数据传输图 Linux系统I2C驱动程序 I2C驱动层次结构 Linux系统对I2C设备具有很好的支持,Linux系统下的I2C驱动程序从逻辑上可以分为3个部分: I2C核心(I2C core):实现对I2C总线、I2C adapter及I2C driver的管理。 I2C控制器驱动I2C adapter :针对不同类型的I2C控制器 ,实现对I2C总线访问的具体方法。 I2C设备驱动I2C driver:针对特定的I2C设备,实现具体的功能,包括read,write以及ioctl等对用户层操作的接口。 这三个部分的层次关系如图3和图4所示。 图3 Linux内核管理I2C原理图 图4 Linux I2C设备驱动工作原理图 I2C核心(I2C core) I2C core是Linux内核用来维护和管理I2C的核心部分,其中维护了两个静态的List,分别记录系统中的I2C driver结构和I2C adapter结构。I2C core提供接口函数,允许一个I2C adapter,I2C driver和I2C client初始化时在I2C core中进行注册,以及退出时进行注销。同时还提供了I2C总线读写访问的一般接口(具体的实现在与I2C控制器相关的I2C adapter中实现),主要应用在I2C设备驱动中。 I2C控制器驱动(I2C adapter) I2C adapter是针对不同类型I2C控制器硬件,实现比较底层的对I2C总线访问的具体方法。I2C adapter构造一个对I2C core层接口的数据结构,并通过接口函数向I2C core注册一个控制器。 I2C adapter主要实现对I2C

文档评论(0)

wuyuetian + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档