linux IIC子系统分析(二)—— linux i2c 架构概述

I2C总线因为它及简单的硬件连接和通讯方式,在现在的很多设备上它是一种不可或缺的通讯总线。如果用当单片机直接操作I2C,其实很简单,只要正确把握IIC的操作时序就可以了。但是在linux系统中,I2C子系统结构是比较复杂的,因为它涉及到很多linux内核相关的知识,理解起来十分费劲。

(一)I2C架构概述

Linux 的I2C体系架构分为3个组成部分:

(1)I2C核心:I2C核心提供了I2C总线驱动和总线设备注册,注销,通信方法。还提供了与适配器无关的代码以及探测代码等。

(2)I2C总线驱动:I2C总线驱动是对I2C硬件体系结构中适配器驱动的实现。(IIC使用的是平台设备驱动模型)

(3)I2C设备驱动:I2C设备驱动是对设备端的实现(客户驱动),比如EEPROM设备。

(二)linux中I2C驱动架构图

Hardware 是我们的硬件设备,调试设备的时候我们经常在这用示波器来跟踪I2C通讯波形。

根据I2C架构概述的介绍,可以知道:

I2C核心:I2C核心层

I2C总线驱动(platform bus):硬件实现控制层,访问抽象层

I2C设备驱动(device driver):driver层

注意:在我们linux I2C子系统中,有使用到平台设备驱动机制。使用平台设备驱动的主要目是:将硬件/平台相关的东西分离出来,以提高程序的可移植性。

接下来按照linux i2c子系统的注册顺序进一步分析I2C子系统架构,总共分为下面几篇文章

《 linux IIC子系统分析(一)——AT24C02 芯片简介》

《linux IIC子系统分析(三)——I2c子系统初始化顺序分析》

《 linux IIC子系统分析(四)——I2c bus初始化》

《linux IIC子系统分析(五)——I2C plaform device 初始化》

《linux IIC子系统分析(六)——I2c plaform driver 初始化》

《 linux IIC子系统分析(七)——实例分析通过i2c-dev操作I2C设备》

《 linux IIC子系统分析(八)——实例分析通过sysfs访问I2c设备》

《linux IIC子系统分析(九)——实例分析通过设备节点访问I2c设备》

(三)(四)(五)(六)介绍I2C总线驱动

(七)(八)(九)实例介绍三种不同的方式驱动i2C 设备

说明:

1.分析的内核版本是linux2.6.32.2

2.开发板为友善之臂的mini2440, 用的是ARM9(S3C2440A)处理器

3.链接的IIC设备是EEPROM(AT24C02)

4.按照内核I2C子系统的注册顺序分析。

---------------------------------------2022.08.20:21:19更新----------------------------------------

由于各种原因,后续文章内容将更新到公众号,本平台将不再做更新。

CSDN上相关文章的测试工程代码,也统一放到了公众号上,可以免费免积分下载

可以通过主页上的二维码,也可以通过搜索微信公众号 liwen01 进入公众号

liwen01   2022.08.20

---------------------------------------2022.08.20:21:19更新----------------------------------------

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
LinuxI2C系统是用于在Linux内核中管理和操作I2C总线的系统。它提供了一组API和驱动程序,允许用户空间应用程序与连接到I2C总线上的设备进行通信。 在Linux中,I2C系统由以下几个主要组件组成: 1. I2C核心驱动程序:这是I2C系统的核心部分,负责管理I2C总线和设备的注册、协议处理等功能。它提供了一组API供其他驱动程序或用户空间应用程序使用。 2. I2C适配器驱动程序:这些驱动程序用于支持特定的硬件I2C适配器,如FPGA、SOC等。它们与I2C核心驱动程序紧密配合,负责将硬件特定的操作转换为通用的I2C操作。 3. I2C设备驱动程序:这些驱动程序用于支持连接到I2C总线上的具体设备。每个I2C设备都有一个对应的设备驱动程序,负责处理设备的初始化、通信协议等。在Linux中,这些设备驱动程序通常作为内核模块存在。 4. I2C工具和库:除了内核驱动程序外,Linux还提供了一些用户空间工具和库,用于与I2C设备进行交互。例如,`i2cdetect`工具用于检测I2C总线上的设备地址,`i2cget`和`i2cset`工具用于读取和写入I2C设备的寄存器值。 用户空间应用程序可以使用I2C系统提供的API和工具来访问和控制连接到I2C总线上的设备。通过打开适当的设备节点文件,并使用相应的读写操作,可以向设备发送命令和数据,以及从设备读取响应和数据。 总而言之,LinuxI2C系统提供了一套完整的解决方案,使用户能够方便地在Linux环境中操作和管理I2C设备。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

li_wen01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值