产品展示

Products Classification

Linux下I2C设备驱动开发和实现

  • 产品时间:2022-03-13 01:07
  • 价       格:

简要描述:I2C总线具备结构非常简单使用方便的特点。本文叙述了Linux下I2C驱动的结构,并在此基础上得出了I2C设备驱动和应用于的构建。 1章节 I2C(Inter-IntegratedCircuit)总线是一种由PHILIPS公司研发的两线式串行总线,用作相连微控制器及其外围设备。I2C总线最主要的优点是其非常简单性和有效性。 由于模块必要在组件之上,因此I2C总线闲置的空间十分小,增加了电路板的空间和芯片管脚的数量,减少了网络成本。...

详细介绍
本文摘要:I2C总线具备结构非常简单使用方便的特点。本文叙述了Linux下I2C驱动的结构,并在此基础上得出了I2C设备驱动和应用于的构建。 1章节 I2C(Inter-IntegratedCircuit)总线是一种由PHILIPS公司研发的两线式串行总线,用作相连微控制器及其外围设备。I2C总线最主要的优点是其非常简单性和有效性。 由于模块必要在组件之上,因此I2C总线闲置的空间十分小,增加了电路板的空间和芯片管脚的数量,减少了网络成本。

欧宝体育官网

I2C总线具备结构非常简单使用方便的特点。本文叙述了Linux下I2C驱动的结构,并在此基础上得出了I2C设备驱动和应用于的构建。

  1章节  I2C(Inter-IntegratedCircuit)总线是一种由PHILIPS公司研发的两线式串行总线,用作相连微控制器及其外围设备。I2C总线最主要的优点是其非常简单性和有效性。

由于模块必要在组件之上,因此I2C总线闲置的空间十分小,增加了电路板的空间和芯片管脚的数量,减少了网络成本。I2C总线最初为音频和视频设备研发,现应用于各种服务与管理场合,来构建配备或掌控组件的功能状态,如电源、系统风扇、系统温度等参数,减少了系统的安全性,便利了管理。  2I2C总线阐述  I2C总线是由数据线SDA和时钟SCL包含的串行总线,可发送到和接收数据,每个器件都有一个惟一的地址辨识。

I2C规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。主器件和从器件都可以工作于接管和发送到状态。

总线必需由主器件(一般来说为微控制器)掌控,主器件产生串行时钟(SCL)掌控总线的传输方向,并产生接续和暂停条件。SDA线上的数据状态仅有在SCL为低电平的期间才能转变,SCL为高电平的期间,SDA状态的转变被用来回应接续和暂停条件。

  I2C总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、完结信号和接收者信号。  开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。  完结信号:SCL为低电平时,SDA由低电平向高电平跳变,完结传送数据。

  接收者信号:接收数据的IC在接管到8bit数据后,向发送数据的IC收到特定的低电平脉冲,回应已接到数据。CPU向可控单元收到一个信号后,等候可控单元收到一个接收者信号,CPU接管到接收者信号后,根据实际情况做出否之后传送信号的辨别。

若并未接到接收者信号,由辨别为可控单元经常出现故障。  3Linux的I2C驱动架  Linux中I2C总线的驱动分成两个部分,总线驱动(BUS)和设备驱动(DEVICE)。其中总线驱动的职责,是为系统中每个I2C总线减少适当的读取方法。

但是总线驱动本身并会展开任何的通讯,它只是不存在那里,等候设备驱动调用其函数,参看图1。  设备驱动则是与悬挂在I2C总线上的明确的设备通讯的驱动。通过I2C总线驱动获取的函数,设备驱动可以忽视有所不同总线控制器的差异,不考虑到其构建细节地与硬件设备通讯。

    图1Linux内核I2C总线驱动程序构架  在我们的Linux驱动的i2c文件夹上有algos,busses,chips三个文件夹,另外还有i2c-core.c和i2c-dev.c两个文件。其中i2c-core.c文件构建了I2Ccore框架,是Linux内核用来确保和管理的I2C的核心部分,其中确保了两个静态的List,分别记录系统中的I2Cdriver结构和I2Cadapter结构。

I2Ccore获取接口函数,容许一个I2Cadatper,I2Cdriver和I2Cclient初始化时在I2Ccore中展开登记,以及解散时展开吊销。同时还获取了I2C总线读写访问的一般模块,主要应用于在I2C设备驱动中。

  Busses文件夹下的i2c-mpc.c文件构建了PowerPC下I2C总线适配器驱动,定义叙述了明确的I2C总线适配器的i2c_adapter数据结构,构建较为底层的对I2C总线采访的具体方法。I2Cadapter结构一个对I2Ccore层模块的数据结构,并通过接口函数向I2Ccore登记一个控制器。I2Cadapter主要构建对I2C总线采访的算法,iic_xfer()函数就是I2Cadapter底层对I2C总线读取方法的构建。

同时I2Cadpter中还构建了对I2C控制器中断的处理函数。  i2c-dev.c文件中构建了I2Cdriver,获取了一个标准化的I2C设备的驱动程序,构建了字符类型设备的采访模块,构建了对用户应用层的模块,获取用户程序采访I2C设备的模块,还包括构建open,release,read,write以及最重要的ioctl等标准文件操作者的接口函数。我们可以通过open函数关上I2C的设备文件,通过ioctl函数原作要采访从设备的地址,然后就可以通过read和write函数已完成对I2C设备的读写操作。  通过I2Cdriver获取的标准化方法可以采访任何一个I2C的设备,但是其中构建的read,write及ioctl等功能几乎是基于一般设备的构建,所有的操作者数据都是基于字节流,没具体的格式和意义。

为了更加便利和有效地用于I2C设备,我们可以为一个明确的I2C设备研发特定的I2C设备驱动程序,在驱动中已完成对特定的数据格式的说明以及构建一些专用的功能。


本文关键词:Linux,下,I2C,设备驱动,开发,和,欧宝体育官网,实现,I2C,总线

本文来源:欧宝体育app-www.tancoon.com

 


产品咨询

留言框

  • 产品:

  • 留言内容:

  • 您的单位:

  • 您的姓名:

  • 联系电话:

  • 常用邮箱:

  • 详细地址:


推荐产品

Copyright © 2003-2021 www.tancoon.com. 欧宝体育app科技 版权所有 备案号:ICP备33758951号-8

在线客服 联系方式 二维码

服务热线

057-653838040

扫一扫,关注我们