
linux i2c子系统
追风de人
这个作者很懒,什么都没留下…
展开
-
linux下 i2c设备驱动开发(1)
3.编写驱动需要完成的工作 编写具体的I2C驱动时,工程师需要处理的主要工作如下:1).提供I2C适配器的硬件驱动,探测,初始化I2C适配器(如申请I2C的I/O地址和中断号),驱动CPU控制的I2C适配器从硬件上产生。2).提供I2C控制的algorithm, 用具体适配器的xxx_xfer()函数填充i2c_algorithm的master_xfer指针,并把i2c_algorithm指针赋给i2c_adapter的algo指针。3).实现I2C设备驱动中的i2c_driver接口,用转载 2017-06-17 01:49:08 · 1396 阅读 · 0 评论 -
linux I2C 设备驱动学习笔记
linux下的驱动思路:内核态驱动和用户态驱动 一是把I2C设备当作一个普通的字符设备来处理,用i2c-dev.c文件提供的API,封装设备时序数据,直接操作i2c适配器驱动对应的设备文件,实现与设备的通讯。属于用户态驱动。 二是利用linux下I2C子系统框架体系来实现。属于内核态度驱动,用户空间的应用程序直接操作从器件对应的设备文件,既可用通用的API实现与从器件的数据交互。原创 2017-06-16 00:02:14 · 7416 阅读 · 4 评论 -
很清晰的解读i2c协议
很清晰的解读i2c协议。I2C协议:2条双向串行线,一条数据线SDA,一条时钟线SCL。 SDA传输数据是大端传输,每次传输8bit,即一字节。 支持多主控(multimastering),任何时间点只能有一个主控。i2c起始信号、结束信号、应答信号。i2c读写流程概述。转载 2017-06-17 02:15:29 · 85622 阅读 · 7 评论 -
linux下 i2c设备驱动开发(2)
I2C设备驱动的编写方式: 一种是直接操作CPU的I2C控制器,正对于某一个设备写一个字符驱动,这种驱动相对来说比较直接,不需要太依赖于内核相关配置,但是这类设备驱动依赖CPU,可移植性较差。 一种是基于linux内核I2C子系统完成设备驱动的编写,一般内核会继承相关CPU的控制器驱动即使没有也可以通过技术支持可以获得,所以我们只需要使用linux下I2C子系统提供的相关接口来构建我们的设备驱动就行了。这样我们的设备驱动并不依赖于某一个特定的CPU,可移植性较好。转载 2017-06-17 01:58:15 · 1842 阅读 · 0 评论