Linux I2C驱动体系结构主要由3部分组成,即I2C设备驱动,I2C核心层、I2C总线驱动。设备驱动层主要是针对不同的I2C硬件从设备编写的驱动程序,I2C总线驱动是对I2C硬件体系结构中适配器端的实现,适配器可以理解为软件上抽象出来的i2c接口,这个接口可以对应I2C总线控制器接口,也可以对应用用GPIO模拟的I2C控制器接口。I2C核心层是I2C总线驱动和I2C设备驱动的中
转载
2023-07-11 22:58:10
166阅读
i2c设备驱动,在i2c子系统中的实现分为三部分,最上层是i2c驱动,中间层是i2c核心层,底层是i2c的总线,如果细分,底层i2c的总线还可以分离出i2c的适配器,所以也可以将i2c设备驱动的子系统分为四个部分,i2c驱动,i2c核心层,i2c的总线,i2c适配器。在i2c子系统中所有的i2c驱动都挂在i2c的总线上,实现i2c的驱动的时候,分为左右两个部分,左边链表挂i2c设备的客户端即实现了
转载
2023-12-30 20:01:07
518阅读
I2C驱动框架Linux的I2C体系结构分为3个组成部分,分别是I2C核心、I2C总线驱动和I2C设备驱动。 I2C控制器的驱动程序称为总线驱动(包含两部分,硬件相关、硬件无关),将I2C设备的驱动程序称为设备驱动(包含两部分,I2C设备匹配相关、I2C设备操作方法集)。I2C驱动设计过程简述:I2C设备注册: 首先要向I2C核心层注册一个I2C设备,I2C总线会将其添加到总线的设备链表中,然后遍
本文基于i2c总线,简述了设备树的使用方式
@目录博客说明开发环境1. 如何使用设备树1.1 u-boot支持设备树1.2 Linux内核支持设备树1.3 如何在开发板中使用设备树2. 设备树介绍2.1 设备树中的设备驱动节点2.2 设备树匹配流程2.2.1 以i2c匹配为例2.2.2 设备树匹配下的程序模板2.3 设备树中的设备节点转换附录参考资料博客
转载
2023-07-16 22:05:28
430阅读
一、 I2C简介I2C(Inter-Integrated Circuit)总线是一种由 Philips 公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C 总线最主要的优点就是简单性和有效性,简单体现在接线简单,只有两根线数据线(SCL)和时钟线(SDA),而且 控制简单。所以一些封装较小的器件多使用I2C总线,常见的使用I2C总线的设备有EEP
转载
2023-09-11 21:06:31
310阅读
客户加了一个MCU来控制主板电源,该MCU作为pnx8735的一个i2C从设备,接收来自pnx8735的i2C的命令。因此,需要增加一个设备驱动程序,用来控制该MCU工作。. 在stb225/src/open/comps/下增加新的设备驱动模块,phStbMCU. 把该模块加入到linux编译列表中 stb225/etc/roster.mk 增加phStbMCU,_phSt
原创
2010-05-04 17:24:59
4621阅读
手把手教你写i2c驱动注意: i2c_driver里面的probe函数需要实现1 字符设备类的注册2 字符设备文件的生成(需要研究一下)
原创
2022-07-26 14:56:14
142阅读
本文分析 mpu6050_drv.c 中 I2C 驱动部分的module_i2c_driver()这个宏来注册i2c_driver,这个宏在/include/linux/i2c.h定义,注释上说用它来注册一个i2c_driver,并通过调用它代替module_init() 我们可以看下它的原形:#define module_i2c_driver(__i2c_driver) \module_dr
原创
2022-02-24 16:09:03
1209阅读
本文分析 mpu6050_drv.c 中 I2C 驱动部分的module_i2c_driver()这个宏来注册i2c_driver,这个宏在/include/linux/i2c.h定义,注释上说用它来注册一个i2c_driver,并通过调用它代替module_init()我们可以看下它的原形:#define module_i2c_driver(__i2c_drive...
原创
2021-07-09 13:44:47
4227阅读
Linux I2C设备驱动
在现代计算机系统中,I2C(Inter-Integrated Circuit)是一种广泛应用的串行总线,用于在不同设备之间传输数据。Linux操作系统为开发人员提供了许多I2C设备驱动程序,以支持各种硬件设备的通信。本文将探讨Linux中的I2C设备驱动及其功能。
首先,让我们了解一下I2C是什么。I2C是一种多主多从的通信协议,允许多个设备通过共享两个数据线进行
原创
2024-01-30 19:34:07
107阅读
当提供I2C设备文件时,用户空间可以通过设备文件直接操作设备。这里需要配置CONFIG_I2C_CHARDEV。static int __init i2c_dev_init(void){ int res; printk(KERN_INFO "i2c /dev entries driver\n"); res = register_chrdev_region(MKDEV(I2C_MAJ
原创
2023-06-01 10:25:59
461阅读
I2C系统驱动程序模型 文章目录I2C系统驱动程序模型参考资料:一、 I2C驱动程序的层次二、 I2C总线-设备-驱动模型2.1 i2c_driver2.2 i2c_client致谢 参考资料:Linux内核文档:
Documentation\i2c\instantiating-devices.rstDocumentation\i2c\writing-clients.rstLinux内核驱动
转载
2023-08-17 11:50:51
133阅读
了解I2C的同志都知道,常规I2C驱动中的最重点就是这4个结构体:i2c_driver、i2c_client、i2c_adapter 和i2c_algorithm,而且他们之间的关系错综复杂,我看了好长一段时间,也没看出多少头绪来,而且代码的可移植性很差劲,换个平台,要该的地方一大堆,改了之后还不一定对呢,所以,下面介绍的通用I2C驱动就很必要了。
转载
2023-10-20 10:48:44
158阅读
内核:4.20 芯片:HYM8563 RTC下面的代码分析主要都在注释中,会按照驱动中函数的执行顺序分析。 一、加载和卸载函数static const struct i2c_device_id hym8563_id[] = { { "hym8563", 0 }, {},};MODULE_DEVICE_TABLE(i2c, hym8563_id);static const struct of_d
原创
2021-12-08 09:44:08
4668阅读
写在开始,因工作需要,对I2C的spec文档进行研读,主要工作就是将规范翻译为中文并补充自己的理解,根据每个章节内容进行划分,便于以后查阅,如有错误和疑问欢迎指正交流。目录1.规范介绍:INTRODUCTION TO THE I2C-BUS SPECIFICATION2.基本概念:THE I2C-BUS CONCEPT3.一般特征:GENERAL CHARACTERISTICS4.位传输:BIT
转载
2023-10-17 18:03:59
256阅读
内核:4.20芯片:HYM8563 RTC下面的代码分析主要都在注释中,会按照驱动中函数的执行顺序分析。一、加载和卸载函数static const struct i2c_device_id hym8563_id[] = { { "hym8563", 0 }, {},};MODULE_DEVICE_TABLE(i2c, hym8563_id);static const str...
原创
2022-01-29 15:00:22
1641阅读
Linux I2C 驱动框架简介
原创
2021-11-09 10:09:28
2287阅读
1、通过platform_data 进行数据注册 2、I2C涉及主要的四个数据结构 i2c_adapter, i2c_algor、i2c_client、i2c_driver, 这四者的关系 1、i2c_adapter是总线驱动 i2c_algor 是总线驱动,用于封装具体的下发内容 i2c_clie ...
转载
2021-11-01 18:53:00
1577阅读
2评论
继续上一篇博文没讲完的内容“针对 RepStart 型i2c设备的驱动模型”,其中涉及的内容有:i2c_client 的注册、i2c_driver 的注册、驱动程序的编写。一、i2c 设备的注册分析:在新版本内核的i2c驱动模型中,支持多种方式来注册 i2c 设备,在Documentation/i2c/instantiating-devices文件中有讲到,在内核中对应的抽象数据结构就是 stru
转载
2023-07-09 15:26:20
149阅读
<Android开发> Android开发工具- 之-I2C TOOLS工具使用前言:在底层开发时,有时需要借助一些工具对驱动进行调试验证。这次讲解的使用的工具是I2C_TOOLS,该工具主要是用来调试验证I2C设备的。接下来看看如何使用吧。1、获取I2C工具 下载地址:I2C_TOOLS 可以根据自己的需要下载相应的版本,作者为了在android编译,编写的android.mk文件能使用,选择了
转载
2023-10-10 18:48:32
415阅读