具体芯片的I2C_Adapter驱动分析
具体芯片的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
- IMX6ULL:
一、 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驱动分析相关推荐
- Linux驱动分析——I2C子系统
stm32mp157 盘古开发板 Linux内核版本4.19 目录 1.朱有鹏老师视频笔记 2.I2C子系统的4个关键结构体 3.关键文件 4.i2c-core.c初步分析 4.1.smbus代 ...
- linux mipi驱动分析_寒武纪社招内推数字IC设计、DSI驱动、软件架构、产品经理、芯片架构、工具链开发、深度学习、FAE工程师...
点击上方蓝字关注我吧! 为什么内推更靠谱?内推是基于人脉关系链的推荐,其背后有一定的信用背书,靠谱的人推荐的人相对也会比较靠谱,所以企业一般职位都是从内部开始分享的,相较于自己海投简历,内推的效率和成 ...
- hisi3516dv300芯片基于hwmon驱动框架的温度获取驱动源码分析
1.内核hwmon驱动框架 参考博客:<内核hwmon驱动框架详解以及海思芯片温度驱动分析>: 2.驱动实现的效果 /sys/devices/virtual/hwmon/hwmon0 # ...
- 【转】android电池(四):电池 电量计(MAX17040)驱动分析篇
关键词:android 电池 电量计 MAX17040 任务初始化宏 power_supply 平台信息: 内核:linux2.6/linux3.0 系统:android/android4.0 ...
- s5k4ba摄像头驱动分析
s5k4ba摄像头驱动分析 注释: 本驱动是基于S5PV310的,但是全天下的摄像头驱动都是采用V4L2,因此驱动框架流程基本差不多.其中fimc_init_camera()函数会回调.init函数, ...
- I2C驱动分析,好文!!
登录 | 注册 小雷的学习空间 用硬件包围软件 最终实现软硬通吃 目录视图 摘要视图 订阅 Linux I2C驱动完全分析(二) 标签: clinuxstructalgorithmtable 2011 ...
- zz-linux-i2c驱动分析am335x框架调用150103d
//zz//####################################################################### zz-linux-i2c驱动分析am335x ...
- i2c驱动架构 davinc dm368 i2c驱动分析
预备知识 在阅读本文最好先熟悉一种i2c设备的驱动程序,并且浏览一下i2c-core.c以及芯片提供商的提供的i2c总线驱动(i2c-davinci.c).标题党请见谅! 其实i2c接口非常的简单,即 ...
- 高通 android平台LCD驱动分析
目前手机芯片厂家提供的源码里包含整个LCD驱动框架,一般厂家会定义一个xxx_fb.c的源文件,注册一个平台设备和平台驱动,在驱动的probe函数中来调用register_framebuffer(), ...
最新文章
- linux的本地时间命令
- 寻找阿姆斯特朗数c语言程序,C程序检查阿姆斯特朗数
- Linux通常把设备对象抽象为,linux 设备模型(1)
- javaWEB开发中get方式请求的乱码问题解决
- Delphi 关键字详解[整理于 橙子 的帖子]
- 正则匹配 http或者 https开头的网络地址
- 网络登录_发布猫系统登录免费网络推广-绥芬河推广资讯
- 【渝粤教育】国家开放大学2018年春季 8126-21T制药工程 参考试题
- SpringCloud 入门教程(一): 服务注册
- JavaScript 基本语法及面试注意点
- AndroidStudio安卓原生开发_Activity和AppCompatActivity的区别认识---Android原生开发工作笔记127
- 海康摄像头近距离不能对焦模糊问题
- 谭浩强c语言程序设计 在线,C语言程序设计_谭浩强.pdf
- MYSQL授权root远程访问
- 用代码做一个浪漫的“3D照片墙”
- 如何快速把kux格式转换成mp4
- 海底捞“清疮”300店:千亿龙头的虚与实
- Elasticsearch搜索引擎一些参数含义和用法
- 【干货】游戏开发团队部门岗位
- vue-父子组件传参以及无限级评论
热门文章
- 想要成为黑客?那你需要学会这些知识
- C# 计算太阳倾角、太阳高度角
- 前端高频面试题汇总(css,html)
- 安卓手机来电防火墙_手机号变“广告号”?来电显示暗藏黑色利益链!你可能也被卷入其中...
- 天气相关免费数据集下载
- 怎样在视频流媒体服务器里实现RTSP h265转RTMP?
- 迁移学习一、基本使用
- 1546B - AquaMoon and Stolen String
- 构造函数能否被继承,为什么?
- 计算机设置用户权限的风险,电脑安全设置_当前安全设置会使计算机有风险怎么关掉...