Linux系统驱动之编写设备驱动之i2c_client

资料下载和参考

要下载相关资料,无法通过浏览器直接访问,必须使用git工具进行下载:

git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git

视频观看可以访问百问网驱动大全。

编写设备驱动之i2c_client的参考资料包括:

  • Linux内核文档:Documentationi2cinstantiating-devices.rst 和 Documentationi2cwriting-clients.rst
  • Linux内核驱动程序示例:drivers/eeprom/at24.c
  • 本节代码可在GIT仓库中找到:
    • IMX6ULLsource4_I2C3_ap3216c_ok
    • STM32MP157sourceA74_I2C3_ap3216c_ok

I2C总线-设备-驱动模型

Linux系统驱动之编写设备驱动之i2c_client

步骤

  1. 编译i2c_driver
  2. 编写测试程序
  3. 多种方法生成i2c_client并测试

4.1 在用户态生成示例:

// 在I2C BUS0下创建i2c_client # echo ap3216c 0x1e > /sys/bus/i2c/devices/i2c-0/new_device <p>// 删除i2c_client</p><h1>echo 0x1e > /sys/bus/i2c/devices/i2c-0/delete_device

4.2 编写代码

使用以下函数:

  • i2c_new_device
  • i2c_new_probed_device
  • i2c_register_board_info

注意:内核没有EXPORT_SYMBOL(i2c_register_board_info),使用这个函数的驱动必须编进内核里去。

4.3 使用设备树生成

在某个I2C控制器的节点下,添加如下代码:

ap3216c@1e {</h1><pre class="brush:php;toolbar:false">compatible = "lite-on,ap3216c"; reg = <0x1e>;

};

平台测试

  1. STM32MP157

    Linux系统驱动之编写设备驱动之i2c_client

  2. IMX6ULL4.4

    上机测试以下命令在开发板中执行。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享