Android I2C精析.doc

上传人:豆**** 文档编号:29962067 上传时间:2022-08-02 格式:DOC 页数:4 大小:144.50KB
返回 下载 相关 举报
Android I2C精析.doc_第1页
第1页 / 共4页
Android I2C精析.doc_第2页
第2页 / 共4页
点击查看更多>>
资源描述

《Android I2C精析.doc》由会员分享,可在线阅读,更多相关《Android I2C精析.doc(4页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Android I2C精析基于linux内核开发的arm系统,会用到很多components。要让这些components正常的工作,我们必须了解它们的接口,懂得如何去注册总线,初始化芯片,进而让芯片正常的工作。下面我会介绍在arm开发过程中使用最频繁的一些接口和总线的原理,以及如何在开发的过程中去使用它们。1 I2C总线与接口I2C总线具有结构简单,使用方便的特点。下面我会描述linux下I2C驱动的结构,幷给出I2C设备驱动和应用的实现。1.1 I2C总线概述 I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及外围设

2、备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据,每个器件都有一个惟一的地址识别。I2C 规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。主器件和从器件都可以工作于接收和发送状态。总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL)控制总线的传输方向,并产生起始和停止条件。SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始

3、和停止条件。 从理论上说一根I2C总线上可以挂载128个I2C设备,但是通常情况下,由于有些设备在传输数据时占用的I2C总线带宽频繁,所以我们在一根I2C总线上挂载的设备是越少越好。下面给出I2C总线的连线图: 1.2 I2C总线工作原理1.2.1 I2C通信专业术语发送器:发送数据到总线的器件;接收器:从总线接收数据的器件;主机:初始化发送产生时钟信号和终止发送的器件;从机:被主机寻址的器件;多主机:同时有多于一个主机尝试控制总线但不破坏传输;仲裁:是一个在有多个主机同时尝试控制总线但只允许其中一个控制总线并使传输不被破坏的过程;同步:两个或多个器件同步时钟信号的过程。1.2.2 I2C接口

4、电路结构前面我们说过I2C总线是由数据线SDA和时钟SCL构成的串行总线,在现实的产品开发过程当中,各种被控制器件均并联在这条总线上,每个器件都有一个唯一的地址识别,可以作为总线上的一个发送器件或接收器件(具体由器件的功能决定)。I2C总线的接口电路结构如图所示:1.2.3 I2C总线信号状态I2C总线有下面几种信号状态:1空闲状态:SDA和SCL都为高电平。2开始条件(S):SCL为高电平时,SDA由高电平向低电平跳变,开始传输数据。3结束条件(P):SCL为高电平时,SDA由低电平向高电平切换,表示传输结束。4数据有效:在SCL的高电平期间,SDA保持稳定,数据有效。5ACK信号: 数据传

5、输的过程中,接收器件每接收一个字节数据要产生一个ACK信号,向发送器件发出特定的低电平脉冲,表示已经收到数据。1.2.4 I2C总线基本操作I2C总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL),同时控制总线的传输方向,并产生开始和停止条件。数据传输中,首先主器件产生开始条件,随后是器件的控制字节(前七位是从器件的地址,最后一位为读写位 )。接下来是读写操作的数据,以及 ACK响应信号。数据传输结束时,主器件产生停止条件。具体的过程如下图所示:1.3 Linux内核的I2C驱动架构1.3.1 I2C驱动架构 Linux系统对I2C设备具有很好的支持,linux系统下的I2C

6、驱动程序从逻辑上可以分成3个部分:1 I2C总线的驱动 I2C core :实现对I2C总线、I2C adapter及I2C driver的管理。2 I2C控制器的驱动 I2C adapter :针对不同类型的I2C控制器 ,实现对I2C总线访问的具体方法。3 I2C设备的驱动 I2C driver :针对特定的I2C设备,实现具体的功能,包括read, write以及ioctl等对用户层操作的接口。这三个部分的层次关系下图所示:1.3.2 I2C 总线驱动 I2C core I2C core是Linux内核用来维护和管理的I2C的核心部分,其中维护了两个静态的List,分别记录系统中的I2C

7、 driver结构和I2C adapter结构。I2C core提供接口函数,允许一个I2C adatper,I2C driver和I2C client初始化时在I2C core中进行注册,以及退出时进行注销。同时还提供了I2C总线读写访问的一般接口(具体的实现在与I2C控制器相关的I2C adapter中实现),主要应用在I2C设备驱动中。1.3.3I2C控制器的驱动 I2C adapter I2C adapter是针对不同类型I2C控制器硬件,实现比较底层的对I2C总线访问的具体方法。I2C adapter 构造一个对I2C core层接口的数据结构,并通过接口函数向I2C core注册一

8、个控制器。1.3.4 I2C设备的驱动 I2C driverI2C driver中提供了一个通用的I2C设备的驱动程序,实现了字符类型设备的访问接口,对设备的具体访问是通过I2C adapter来实现的。I2C driver构造一个对I2C core层接口的数据结构,通过接口函数向 I2C Core注册一个I2C设备驱动。同时I2C driver 构造一个对用户层接口的数据结构,并通过接口函数向内核注册一个字符类型设备。I2C driver实现用户层对I2C设备的访问,包括open,read,write,ioctl,release等常规文件操作,我们可以通过open函数 打开 I2C的设备文件

9、,通过ioctl函数设定要访问从设备的地址,然后就可以通过 read和write函数完成对I2C设备的读写操作。通过I2C driver提供的通用方法可以访问任何一个I2C的设备,但是其中实现的read,write及ioctl等功能完全是基于一般设备的实现,所有的操作 数据都是基于字节流,没有明确的格式和意义。为了更方便和有效地使用I2C设备,我们可以为一个具体的I2C设备开发特定的I2C设备驱动程序,在驱动中 完成对特定的数据格式的解释以及实现一些专用的功能。4 能的 些精现及式据的完中驱动设 特开 一可,设 效便更为和的有,基都 的,备一于能 实中备 个何访方的提 作写的 完 过通然地的访

10、设 通件的 打数 通们作件常 , ,的 层用 备备字册核函接通结的接对构 时。备 一 数接过构数 对构 。来 问具设口接备型现实动备 通一供 动设 .器控册 数接并据的层 个构 方的线 对底实,器 同针 驱控 .中驱设 要)中 的器控 实具接般问线 了同注进出册进 时初 , 个允数供 结 结 中记分 两维,部的的管来核 是 驱 .示示关的部口接作对等 , 包能体,备的对 的设法方具线 现,控的型不 动的控理的 线 对: 驱分分 以逻动 下系 持好具设 系 架动 架动 内 示示程的。停件,束输号响 以数的读下)写一最址从七(控器随,生器先中数。停始并向的总时) 行生主制制为常主必操操 .据到已,

11、平的出器发号 一据节个件接程的据: 效据定持 期平 在有束结示切平平 ,平 )束据输开跳平电由 电为: 始平平都 态态状几下状信 示图如口线 )能件体件器器发上总可识的个有器上线联均制种当过品现,行成 钟 据线 结电 程程信步器多程过坏传线控个允但总时机有一输坏但总尝个一同件的寻被件的发终时送化件器收接:件器到送术专 原工总 图连总 面好越设挂线 在我,宽总的占数传些,下是但设 载可线 根理件止和示用的 ,的高为,才期低 仅状上 。停起产方的线)(时生件,器控通器由线态收于可器件。收为数收,为义,总送器向双运程 。的惟有件,数和,行成 时 数是点等高信,封,简制少有,形的步是准种用广制通子备外制微于线行线开 由总) - ( 概总 现的应备 构动 描面点的用,结具接接 们用去的开及,线口些频用过发在介下工的芯进化,册何如口们了我工正 些要 会, 发核

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com