前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux系统驱动之编写设备驱动之i2c_client

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

作者头像
韦东山
发布2021-12-08 10:53:02
8350
发布2021-12-08 10:53:02
举报
文章被收录于专栏:韦东山嵌入式

资料下载

coding无法使用浏览器打开,必须用git工具下载:

代码语言:javascript
复制
git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git

视频观看

百问网驱动大全

编写设备驱动之i2c_client

参考资料:

  • Linux内核文档:
    • Documentation\i2c\instantiating-devices.rst
    • Documentation\i2c\writing-clients.rst
  • Linux内核驱动程序示例:
    • drivers/eeprom/at24.c
  • 本节代码:GIT仓库中
    • IMX6ULL\source\04_I2C\03_ap3216c_ok
    • STM32MP157\source\A7\04_I2C\03_ap3216c_ok

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

在这里插入图片描述
在这里插入图片描述

2. 编译i2c_driver

3. 编写测试程序

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

4.1 在用户态生成

示例:

代码语言:javascript
复制
// 在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控制器的节点下,添加如下代码:

代码语言:javascript
复制
		ap3216c@1e {
			compatible = "lite-on,ap3216c";
			reg = <0x1e>;
		};
1. STM32MP157
在这里插入图片描述
在这里插入图片描述
2. IMX6ULL
4.4 上机测试

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/08/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 资料下载
  • 视频观看
  • 编写设备驱动之i2c_client
    • 1. I2C总线-设备-驱动模型
      • 2. 编译i2c_driver
        • 3. 编写测试程序
          • 4. 多种方法生成i2c_client并测试
            • 4.1 在用户态生成
            • 4.2 编写代码
            • 4.3 使用设备树生成
            • 4.4 上机测试
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档