zl程序教程

您现在的位置是:首页 >  其他

当前栏目

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

2023-04-18 14:42:10 时间

资料下载

coding无法使用浏览器打开,必须用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

1. I2C总线-设备-驱动模型

2. 编译i2c_driver

3. 编写测试程序

4. 多种方法生成i2c_client并测试

4.1 在用户态生成

示例:

// 在I2C BUS0下创建i2c_client
# echo ap3216c 0x1e > /sys/bus/i2c/devices/i2c-0/new_device

// 删除i2c_client
# 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 {
			compatible = "lite-on,ap3216c";
			reg = <0x1e>;
		};
1. STM32MP157
2. IMX6ULL

4.4 上机测试

以下命令在开发板中执行。