嵌入式linux系统下i2c设备驱动程序的开发

嵌入式linux系统下i2c设备驱动程序的开发

ID:30857028

大小:157.86 KB

页数:6页

时间:2019-01-03

嵌入式linux系统下i2c设备驱动程序的开发_第1页
嵌入式linux系统下i2c设备驱动程序的开发_第2页
嵌入式linux系统下i2c设备驱动程序的开发_第3页
嵌入式linux系统下i2c设备驱动程序的开发_第4页
嵌入式linux系统下i2c设备驱动程序的开发_第5页
资源描述:

《嵌入式linux系统下i2c设备驱动程序的开发》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、嵌入式Linux系统下I2C设备驱动程序的开发【摘要】I2C总线是一种很通用的总线,具有简单、高效等特点,广泛应用在各种消费类电子产品及音视频设备上,在嵌入式系统的开发屮也经常用到。本文分析了嵌入式linux系统中12C驱动程序的结构,并结合一个具休的12C时钟芯片DS1307,说明在嵌入式linux系统下开发I2C设备驱动程序的一般流程。【关键字】I2C总线嵌入式linux驱动开发1、I2C总线简介12C(Inter-IntegratedCircuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线最

2、主要的优点就是简单性和有效性。1I2C总线工作原理I2C总线是由数据线SDA和时钟SCL构成的串行总线,齐种被控制器件均并联在这条总线上,每个器件都有一个唯一的地址识别,可以作为总线上的一个发送器伴或接收器件(具体由器件的功能决定)[1]。I2C总线的接口电路结构如图1所力£o上拉(SDA电阻'•+VCC①SCL干肚申:辛TF垸网sci一L綸人匕scly军岀L输人*—DATAy输岀L:aif■■■■•乩comSCI1—綸人匕sei・Y输岀—■1DATArJDATA虫辂出*■器件1器件2图1I2C总线接口电路[1]ࠀI2C总线的几种信号状态[1]空闲

3、状态:SDA和SCL都为高电平。开始条件(S):SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。结束条件(P):SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。数据有效:在SCL的高电平期间,SDA保持稳定,数据有效。SDA的改变只能发生在SCL的底电平期间。ACK信号:数据传输的过程中,接收器件每接收一个字节数据要产生一个ACK信号,向发送器件发出特定的低电平脉冲,表示已经收到数据。3I2C总线基本操作I2C总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL),同时控制总线的传输方向,并产生开始和停止条件。

4、数据传输中,首先主器件产生开始条件,随后是器件的控制字节(前七位是从器件的地址,最后一位为读写位)。接下来是读写操作的数据,以及ACK响应信号。数据传输结束时,主器件产生停止条件[1]。具体的过程如图2所示。图2完整的I2C数据传输过程[1]2・Linux下I2C驱动程序的分析1Linux系统I2C驱动的层次结构Linux系统对I2C设备具有很好的支持,Linux系统下的I2C驱动程序从逻辑上可以分为3个部分:1.I2C总线的驱动I2Ccore:实现对I2C总线、I2Cadapter及I2Cdriver的管理。2.I2C控制器的骡动I2Cadapt

5、er:针对不同类型的I2C控制器,实现对I2C总线访问的具体方法。3.I2C设备的驱动T2Cdriver:针对特定的I2C设备,实现具体的功能,包括read,write以及ioctl等对用户层操作的接口。这三个部分的层次关系如图3和图4所示。LinuxkernelI2CCoreI2CI2Cadapterdriver注册管理2I2C总线驱动I2CcoreI2Ccore是Linux内核用来维护和管理的I2C的核心部分,其中维护了两个静态的List,分别记录系统中的T2Cdriver结构和T2Cadapter结构。T2Ccore提供接口函数,允许一个I2

6、Cadatpcr,I2Cdriver和I2Cclient初始化时在I2Ccom中进行注册,以及退出时进行注销。同时还提供了I2C总线读写访问的一般接口(具体的实现在与12C控制器相关的12Cadapter中实现),主要应用在I2C设备駆动中。I2C控制器的驱动I2CadapterT2Cadapter是针对不同类型T2C控制器硬件,实现比较底层的对T2C总线访问的貝•体方法。I2Cadapter构造一个对I2Ccore层接口的数据结构,并通过接口函数向12Ccore注册一个控制器。I2Cadapter主要实现对I2C总线访问的算法,iic_xfer(

7、)函数就是I2Cadapter底层对I2C总线读写方法的实现。同吋I2Cadpter屮还实现了对I2C控制器屮断的处理函数。2.4I2C设备的驱动I2Cdriver12Cdriver中捉供了一个通用的12C设备的驱动程序,实现了字符类型设备的访问接口,对设备的具体访问是通过I2Cadapter来实现的。I2Cdriver构造一个对I2Ccore层接口的数据结构,通过接口函数向I2CCore注册一-个I2C设备驱动。同时T2Cdriver构造一个对用户层接口的数据结构,并通过接口函数向内核注册为一个主设备号为89的字符类型设备。12Cdriver实现

8、用户层对12C设备的访问,包括open,read,write,ioctl,release等常规文件操作,我们可以通过ope

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。