




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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总线上AsDevice CFC总线连残图挂载的设备是越少越好。下面给出I2C总线的连线图:Serial Daia <SDA! Serial Clod< (SCL)精品1.2 I2C总线工作原理1.2.1 I2C通信专业术语发送器:发送数据到总线的器件;接收器:从总线接收数据的器件;主机:初始化发送产生时钟信号和终止发送的器件;从机:被主机寻址的器件;多主机:同时有多于一个主机尝试控制总线但不破坏传输;仲裁
4、:是一个在有多个主机同时尝试控制总线但只允许其中一个控制总线并使传输不被破坏的过程;同步:两个或多个器件同步时钟信号的过程。1.2.2 I2C接口电路结构前面我们说过I2C总线是由数据线 SDA和时钟SCL构成的串行总线,在现实的产品开发过程当中,各种被控制器件均并联在这条总线上,每个器件都有一个唯一的地址识别,可以作为总线上的一个发送器件或接收器件(体由器件的功能决定)。I2C总线的接口电路结构如图所示:精品1.2.3 I2C总线信号状态I2C总线有下面几种信号状态:1 .空闲状态:SDA和SCL都为高电平。2 .开始条件(S): SCL为高电平时,SDA由高电平向低电平跳变,开始传输数据3
5、 .结束条件(P): SCL为高电平时,SDA由低电平向高电平切换,表示传输结束4 .数据有效:在SCL的高电平期间,SDA保持稳定,数据有效。精品5 . ACK信号:数据传输的过程中,接收器件每接收一个字节数据要产生一个 ACK信号,向发送器件发出特定的低电平脉冲,表示已经收到数据1.2.4 I2C总线基本操作I2C总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL),同时控制总线的传输方向,并产生开始和停止条件。数据传输中,首先主器件产生开始条件,随后是器件的控制字节(前七位是从器件的地址,最后一位为读写位)。接下来是读写操作的数据,以及 ACK响应1.3 Linux内核的
6、I2C驱动架构1.3.1 I2C驱动架构Linux系统对I2C设备具有很好的支持,linux系统下的I2C驱动程序从逻辑上可以分成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 coreI2C co
7、re是Linux内核用来维护和管理的I2C的核心部分,其中维护了两个 静态的List,分别记录系统中的I2C driver结构和I2C adapter结构。I2C core提供 接口函数,允许一个I2C adatper, I2C driver和I2C client初始化时在I2C core中 进行注册,以及退出时进行注销。同时还提供了 I2C总线读写访问的一般接口 (具 体的实现在与I2C控制器相关的I2C adapter中实现),主要应用在I2C设备驱动 中。1.3.3 I2C控制器的驱动I2C adapterI2C adapter是针对不同类型I2C控制器硬件,实现比较底层的对I2C总线访
8、 问的具体方法。I2C adapter构造一个对I2C core层接口的数据结构,并通过接口 函数向I2C core注册一个控制器。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的设备文件,通过ioctl函 数设定要访问从设备的地址,然后就可以通过read和write函数完成对I2C设备 的读写操作。通过I2C driver提供的通用方法可以访问任何一个I2C的设备,但是其中实 现的read, write及ioctl等功能完全是基于一般设备的实现,所有的操作 数据都 是基于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程建设合同价格形式
- 农业设施农业建设方案
- 安防行业智能监控系统解决方案
- 建筑结构设计理论与应用实践题集解析
- 在线教育平台课程设计与开发报告
- 农产品深加工产业培育方案
- 教育培训行业线上教育培训平台搭建方案
- 工程结构设计工作指导书
- 山东省菏泽外国语学校2024-2025学年高一下学期第一次月考历史试题(原卷版+解析版)
- 湖北省汉阳一中、江夏一中、洪山高中2024-2025学年高一下学期3月联考生物试卷(原卷版+解析版)
- 2025年天翼云笔试试题及答案
- 2025年山东省中小学生海洋知识竞赛参考试指导题库500题(含答案)
- 2025年高考语文备考之DeepSeek与《哪吒2》相关语言文字运用题训练
- 2024年广东省公务员《申论(行政执法)》试题真题及答案
- (市质检三检)泉州市2025届高中毕业班质量监测 (三)历史试卷
- 山东2025年山东师范大学招聘153人笔试历年参考题库附带答案详解
- 电子烟管理办法培训课件
- 2025湖北省建筑安全员《C证》考试题库及答案
- 标准日本语初级教材上册
- 2025云南昆明空港投资开发集团招聘7人易考易错模拟试题(共500题)试卷后附参考答案
- 政务信息化可行性研究报告
评论
0/150
提交评论