澳彩网机械设备有限公司欢迎您!

Linux上的I2C驱动结构【澳彩网网注册登录】

时间:2021-01-16
本文摘要:2I2C总线是包含在数据线SDA和时钟SCL中的串行总线,可以发送和接收数据,并说明每个设备都有唯一的地址识别。图1Linux内核I2C总线驱动体系结构在Linux驱动程序I2C文件夹中有三个文件夹:algos、busses和chips,以及i2c-core

设备

I2C总线具有结构非常简单、易于使用的特点。本文介绍了Linux上的I2C驱动结构,并在此基础上构建了I2C设备驱动和应用程序。第一章I2C(I2C(Integrated circuit)总线是由PHILIPS开发的双线串行总线,用作连接的微控制器和外围设备。

I2C公交车最大的优点是非常简单有效。由于模块必须在组件上,I2C总线的空闲空间非常小,电路板上的空间和芯片针脚数量增加,从而降低网络成本。I2C总线最初是为音频和视频设备开发的,现在应用于多种服务和管理情况,建立具备或控制电源、系统风扇、系统温度等组件的功能状态,从而降低系统安全性,简化管理。2I2C总线是包含在数据线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文件构建I2C核心框架,是Linux内核用于保修和管理的I2C的核心部分,其中两个静态List分别记录了系统的I2C驱动程序结构和I2C适配器结构。I2Ccore在初始化I2Cadatper、I2Cdriver和I2Cclient时,获得了在I2Ccore上展开和解散注册时执行取消的接口函数。

还确保了I2C总线读写访问的通用模块,主要用于I2C设备驱动程序。Busses文件夹下的i2c-mpc.c文件在PowerPC上构建i2c总线适配器驱动程序,定义明确的I2C总线适配器的i2c_adapter数据结构,并构建采访I2C总线的更基本方法。I2C适配器结构是I2C核心层模块的数据结构,通过接口函数在I2C核心注册控制器。I2C适配器主要构建用于采访I2C总线的算法。

iic_xfer()函数是I2C适配器底部I2C总线读取方法的构建。I2C控制器中断的处理函数也构建在I2Cadpter上。

在I2C-dev.c文件上构建I2C驱动程序,获得标准化的I2C设备驱动程序,构建字符类型设备采访模块,获得用户应用层的模块,通过open、release、read构建Open函数关闭I2C的设备文件。可以通过ioctl函数采访原始从设备的地址,然后通过read和write函数完成对I2C设备的读写操作。通过I2Cdriver获得的标准化方法可以采访所有I2C设备,但构建在其中的read、write、ioctl等功能几乎基于通用设备构建,所有操作员数据都基于字节流,没有具体的格式和意义。您可以开发特定的I2C设备驱动程序,以便更方便高效地用于I2C设备,完成对特定数据格式的说明,并构建特定功能。


本文关键词:澳彩网,函数,用于,设备,适配器

本文来源:澳彩网-www.yaboyule89.icu