具体芯片的I2C_Adapter驱动分析


文章目录

  • 具体芯片的I2C_Adapter驱动分析
  • 参考资料:
      • 一、 I2C控制器内部结构
      • 1.1 通用的简化结构
      • 1.2 IMX6ULL的I2C控制器内部结构
    • 二、 I2C控制器操作方法
    • 三、 分析代码
      • 3.1 设备树
      • 3.2 驱动程序分析
  • 致谢

参考资料:

  • Linux内核真正的I2C控制器驱动程序

    • IMX6ULL: Linux-4.9.88\drivers\i2c\busses\i2c-imx.c

一、 I2C控制器内部结构

1.1 通用的简化结构

1.2 IMX6ULL的I2C控制器内部结构

二、 I2C控制器操作方法

  • 使能时钟、设置时钟
  • 发送数据:
    • 把数据写入tx_register,等待中断发生
    • 中断发生后,判断状态:是否发生错误、是否得到回应信号(ACK)
    • 把下一个数据写入tx_register,等待中断:如此循环
  • 接收数据:
    • 设置controller_register,进入接收模式,启动接收,等待中断发生
    • 中断发生后,判断状态,读取rx_register得到数据
    • 如此循环

三、 分析代码

3.1 设备树

  • IMX6ULL: arch/arm/boot/dts/imx6ull.dtsi

    i2c1: i2c@021a0000 {#address-cells = <1>;#size-cells = <0>;compatible = "fsl,imx6ul-i2c", "fsl,imx21-i2c";reg = <0x021a0000 0x4000>;interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;clocks = <&clks IMX6UL_CLK_I2C1>;status = "disabled";   // 在100ask_imx6ull-14x14.dts把它改为了"okay"
    };
    

3.2 驱动程序分析

读I2C数据时,要先发出设备地址,这是写操作,然后再发起读操作,涉及写、读操作。所以以读I2C数据为例讲解核心代码。

  • IMX6ULL:函数i2c_imx_xfer分析:

致谢

以上笔记源自韦东山老师的视频课程,感谢韦老师,韦老师是嵌入式培训界一股清流,为嵌入式linux开发点起的星星之火,也愿韦老师桃李满园。聚是一团火,散是满天星!

在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!

仅此向嵌入行业里的每一个认真做技术的从业者致敬!


具体芯片的I2C_Adapter驱动分析相关推荐

  1. Linux驱动分析——I2C子系统

    stm32mp157  盘古开发板  Linux内核版本4.19 目录 1.朱有鹏老师视频笔记 2.I2C子系统的4个关键结构体 3.关键文件 4.i2c-core.c初步分析 ​4.1.smbus代 ...

  2. linux mipi驱动分析_寒武纪社招内推数字IC设计、DSI驱动、软件架构、产品经理、芯片架构、工具链开发、深度学习、FAE工程师...

    点击上方蓝字关注我吧! 为什么内推更靠谱?内推是基于人脉关系链的推荐,其背后有一定的信用背书,靠谱的人推荐的人相对也会比较靠谱,所以企业一般职位都是从内部开始分享的,相较于自己海投简历,内推的效率和成 ...

  3. hisi3516dv300芯片基于hwmon驱动框架的温度获取驱动源码分析

    1.内核hwmon驱动框架 参考博客:<内核hwmon驱动框架详解以及海思芯片温度驱动分析>: 2.驱动实现的效果 /sys/devices/virtual/hwmon/hwmon0 # ...

  4. 【转】android电池(四):电池 电量计(MAX17040)驱动分析篇

    关键词:android 电池  电量计  MAX17040 任务初始化宏 power_supply 平台信息: 内核:linux2.6/linux3.0 系统:android/android4.0  ...

  5. s5k4ba摄像头驱动分析

    s5k4ba摄像头驱动分析 注释: 本驱动是基于S5PV310的,但是全天下的摄像头驱动都是采用V4L2,因此驱动框架流程基本差不多.其中fimc_init_camera()函数会回调.init函数, ...

  6. I2C驱动分析,好文!!

    登录 | 注册 小雷的学习空间 用硬件包围软件 最终实现软硬通吃 目录视图 摘要视图 订阅 Linux I2C驱动完全分析(二) 标签: clinuxstructalgorithmtable 2011 ...

  7. zz-linux-i2c驱动分析am335x框架调用150103d

    //zz//####################################################################### zz-linux-i2c驱动分析am335x ...

  8. i2c驱动架构 davinc dm368 i2c驱动分析

    预备知识 在阅读本文最好先熟悉一种i2c设备的驱动程序,并且浏览一下i2c-core.c以及芯片提供商的提供的i2c总线驱动(i2c-davinci.c).标题党请见谅! 其实i2c接口非常的简单,即 ...

  9. 高通 android平台LCD驱动分析

    目前手机芯片厂家提供的源码里包含整个LCD驱动框架,一般厂家会定义一个xxx_fb.c的源文件,注册一个平台设备和平台驱动,在驱动的probe函数中来调用register_framebuffer(), ...

最新文章

  1. linux的本地时间命令
  2. 寻找阿姆斯特朗数c语言程序,C程序检查阿姆斯特朗数
  3. Linux通常把设备对象抽象为,linux 设备模型(1)
  4. javaWEB开发中get方式请求的乱码问题解决
  5. Delphi 关键字详解[整理于 橙子 的帖子]
  6. 正则匹配 http或者 https开头的网络地址
  7. 网络登录_发布猫系统登录免费网络推广-绥芬河推广资讯
  8. 【渝粤教育】国家开放大学2018年春季 8126-21T制药工程 参考试题
  9. SpringCloud 入门教程(一): 服务注册
  10. JavaScript 基本语法及面试注意点
  11. AndroidStudio安卓原生开发_Activity和AppCompatActivity的区别认识---Android原生开发工作笔记127
  12. 海康摄像头近距离不能对焦模糊问题
  13. 谭浩强c语言程序设计 在线,C语言程序设计_谭浩强.pdf
  14. MYSQL授权root远程访问
  15. 用代码做一个浪漫的“3D照片墙”
  16. 如何快速把kux格式转换成mp4
  17. 海底捞“清疮”300店:千亿龙头的虚与实
  18. Elasticsearch搜索引擎一些参数含义和用法
  19. 【干货】游戏开发团队部门岗位
  20. vue-父子组件传参以及无限级评论

热门文章

  1. 想要成为黑客?那你需要学会这些知识
  2. C# 计算太阳倾角、太阳高度角
  3. 前端高频面试题汇总(css,html)
  4. 安卓手机来电防火墙_手机号变“广告号”?来电显示暗藏黑色利益链!你可能也被卷入其中...
  5. 天气相关免费数据集下载
  6. 怎样在视频流媒体服务器里实现RTSP h265转RTMP?
  7. 迁移学习一、基本使用
  8. 1546B - AquaMoon and Stolen String
  9. 构造函数能否被继承,为什么?
  10. 计算机设置用户权限的风险,电脑安全设置_当前安全设置会使计算机有风险怎么关掉...