我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

1引言I2C总线仅使用SCL和SDA两条信号线实现设备间的数据交互,大大简化了硬件资源和PCB板布线空间的占用,因此I2C总线被广泛应用于实时时钟、小型LCD等设备与CPU之间的接口。驱动程序在没有专门的I2C芯片的情况下,利用GPIO口模拟I2C总线时序完成Linux与I2C设备的通信过程。使用两个GPIO分别用来模拟SDA和SCL。它与使用i2c芯片的驱动程序的区别在于传输算法的实现,GPIO模拟i2c驱动程序有自己的一套传输算法。GPIO模拟I2C占用CPU资源,而使用I2C芯片不占用CPU资源。使用i2c子系统代替普通的字符设备有以下优点:1)使用子系统,不需要过于详细地了解I2C的操作。2)驱动程序编写可移植性强。 3)可以使用内核资源,面对复杂的I2C设备时,工作量相对来说就少很多。I2C的工作原理:I2C总线标准有两条传输线,SDA为数据线,Scl为时钟线。当SCL为高,SDA由高变低时,发送起始信息,同时发送9个脉冲,1-7为地址,8为读写控制位,9为ACK应答位。所以,挂在I2C上的受控设备接受发送的信息,将收到的7位地址与自己的地址进行比较,如果相同,ACK就会反馈应答。

当SCL为低电平时,SDA由低电平变为高电平,则发送停止信号。 2 体系结构Linux的I2C体系结构分为三个部分: 1)ore框架提供了核心数据结构和相关接口函数的定义,用来实现I2C适配器驱动和设备驱动的注册、注销管理以及上层的I2C通信方法,与具体的适配器无关,为系统中每种I2C总线添加相应的读写方法。ore框架具体实现在i2c--)I2C总线驱动定义中,描述了具体I2C总线适配器的数据结构,在具体I2C适配器上实现的I2C总线通信方法,通过该数据结构来描述。通过I2C总线驱动的代码可以控制I2C产生起始位、停止位、读写周期、对从设备读写、产生ACK等。I2C总线驱动具体实现在//i2c目录下的文件夹中。例如:。 例如:)I2C设备驱动是具体的I2C硬件驱动的实现,I2C设备驱动通过I2C适配器与CPU进行通信,主要包括and数据结构,结构体对应一组具体的驱动方法,比如:probe等,需要自己声明,数据结构体由内核根据具体的设备注册信息自动生成,设备驱动根据具体的硬件情况进行填充。

下面介绍具体的使用。I2C设备驱动的具体实现放在//i2c目录下的chips文件夹中。 3 设备注册 下面以GPIO模拟i2c总线驱动为例介绍设备注册。使用i2c芯片的驱动都差不多,主要区别在传输算法上。首先选择i2c-gpio这样才能编译进内核。设备注册包括i2c-gpio总线和i2c设备驱动两类设备的注册。 1)i2c-gpio总线注册 //i2c//-gpio总线驱动源码。 这里可以看到i2c-gpio的注册:er={.={.name="i2c-gpio",//=,},.probe=,.=(),};(void){;ret=ster(&);//注册为平台设备if(ret)("i2c-gpio::%d\n",ret);;}();它是linux虚拟的总线,叫做总线,对应的设备就叫总线,对应的驱动就叫驱动。我们知道i2c总线也对应着设备,这里就是对应的结构体,后面会详细介绍。这里可以看到它将i2c总线驱动注册为平台设备驱动ster(&)。将设备注册为

二维码
扫一扫在手机端查看

本文链接:https://by928.com/2926.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线