ap3216c驱动模块

之前做过一个网络监控的qt项目,现在准备为其添加一个ap3216c传感器采集环境光功能,本文为ap3216c驱动模块的驱动程序,明天会将更新的qt应用程序思路和源码上传。

此设备为i2c设备,此模块又使用iio子系统,regmap子系统。

0 I2C时序

写时序:

f0ce4c3027b049558f8fe78e1bb7cf83.png

读时序:

fe49170da69a46c69fed81a85f793d5a.png

1 i2c总线设备驱动:

1.1 I2c总线驱动

一般 SOC 的 I2C 总线驱动都是由半导体厂商编写的,比如 I.MX6U 的 I2C 适配器驱动 NXP 已经编写好了,这个不需要用户去编写。因此 I2C 总线驱动对我们这些 SOC 使用者来说是被屏蔽掉的,我们只要专注于 I2C 设备驱动即可。

I2C 总线驱动重点是 I2C 适配器(也就是 SOC 的 I2C 接口控制器)驱动,这里要用到两个重要的数据结构: i2c_adapteri2c_algorithm.

I2C 总线驱动,或者说 I2C 适配器驱动的主要工作就是初始化 i2c_adapter 结构体变量,然后设置 i2c_algorithm 中的 master_xfer 函数。

完成以后通过 i2c_add_numbered_adapter(静态)或 i2c_add_adapter(动态) 这两个函数向系统注册设置好的 i2c_adapter。

1.2 I2c设备驱动

I2C 设备驱动重点关注两个数据结构: i2c_client 和 i2c_driver,i2c_client 就是描述设备信息的, i2c_driver 描述驱动内容,类似于 platform_drive。

1.2.1 i2c_client 结构体

每检测到一个 I2C 设备就会给这个 I2C 设备分配一个i2c_client。

1.2.2 i2c_driver 结构体

里面就包含了,加载模块时自动运行的probe函数还有卸载模块时自动运行的remove函数、匹配设备树时使用的驱动结构体device_driver等等;

注册和删除i2c_dri

  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值