首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux驱动开发的IIC设备驱动的投机取巧

前言 Linux的IIC驱动想必大家都耳熟能详,网上也有很多相关的教程。 网上的教程总结,比如: 方法问题描述Linux 3.X.X版本之后,设备树+驱动此方法是比较符合linux驱动的写法的。...他将会操作多个文件 上面的做法都有些困难及弊端存在,经过摸索了一遍Linux的I2C驱动框架,我发现可以很精简的写一个I2C设备的设备驱动。...分析I2C总线驱动说明 I2C总线驱动的代码在linux的源码中--i2c-dev.c中。 在代码中可以看到他提供一套文件操作接口,open,read,write,close接口。...; i2c_msg[0].flags = 0; i2c_msg[0].len = 1; i2c_msg[0].buf = (uint8_t *)®_addr;...i2c_msg[1].addr = 0x69; i2c_msg[1].flags = I2C_M_RD; i2c_msg[1].len = 1; i2c_msg[1].buf =

1.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    第019课 I2C协议详解及裸机程序分析

    但是,读某个地址的数据时,就要用两个i2c_msg结构体来描述它,因为一个i2c_msg结构体只能描述一个传输方向(读/写),我们读取ac24ccxx某个地址上的数据时,要先写出要读取的地址,然后来读取设备地址上的数据...我们要发出I2c传输时,要构造出i2c_msg,把构造出的i2c_msg扔给下面的i2c_controller.c,i2c_controller.c会选择某一个i2c控制器,使用里面的master_xfer.../* 实现 i2c_transfer 接口函数 */ int i2c_transfer(i2c_msg msgs, int num) { return p_i2c_con_selected->...3).调用i2c接口函数,传输构造i2C_msg结构体,我们传输指针只需要传输四个字节,我们需要把以前的参数都改成传输指针的格式。...从设备读函数和写函数类似,读函数需要构造两个i2c_msg(每个i2c_msg只能表示一个传输方向) ,因为在读操作之前,需要把要读的地址告诉从设备。

    1.4K20

    Regmap 框架:简化慢速IO接口优化性能

    简介 Regmap 机制是在 Linux 3.1 加入进来的特性。主要目的是减少慢速 I/O 驱动上的重复逻辑,提供一种通用的接口来操作底层硬件上的寄存器。其实这就是内核做的一次重构。...比如如下这个读取寄存器的函数: static int xxx_i2c_read_reg(struct i2c_client *client, u8 reg, u8 *val) { struct i2c_msg...这个结构体的定义在 include/linux/regmap.h,其中包含该设备的寄存器数量,寄存器位宽,缓存类型,读写属性等。 这一层是直接和驱动对接的。...unsigned int max); int (*drop)(struct regmap *map, unsigned int min, unsigned int max); }; 在最新 Linux...LZO(Lempel–Ziv–Oberhumer) 是 Linux 中经常用到的一种压缩算法,Linux 编译后就会用这个算法来压缩。

    88820

    Linux的I2C驱动框架分析

    Linux总线设备框架的工作原理 如果想要弄清楚I2C驱动框架,必须深刻的理解Linux的总线设备框架。之所以会形成这样的框架,很重要的原因是为了代码的复用性。...为了提高驱动的可移植性,Linux抽象出一套管理资源的函数。设备是存在的硬件,在设备里包含自己的属性,也包含需要用到的资源。...3.Linux下I2C驱动程序的体系结构 ---- 对于Linux下的I2C驱动,其体系结构的组成主要分为三个部分 (1)I2C核心:I2C核心提供了I2C总线驱动和设备驱动的注册,注销方法,I2C通信方法...struct i2c_algorithm{ //i2c模式下,收发函数接口 int (*master_xfer)(struct i2c_adapter *adap, struct i2c_msg...struct i2c_algorithm{ //i2c模式下,收发函数接口 int (*master_xfer)(struct i2c_adapter *adap, struct i2c_msg

    4.7K11
    领券