介绍:I2C是常见的一个串行通信接口,用于连接各种外设、传感器等。I2C 总线仅仅使用 SCL、SDA 这两根信号线就实现了设备之间的数据交互。

I2C的体系架构:由I2C核心,I2C总线驱动,I2C设备驱动三部分构成。

I2C核心:提供I2C总线驱动和设备驱动的注册,注销。

I2C总线驱动:I2C总线驱动是对硬件中适配器的实现,适配器可让CPU控制,也可以集成在CPU内部。

I2C 设备驱动:I2C 设备驱动是对 I2C 硬件体系结构中设备端的实现,设备一般挂接在受 CPU 控制的 I2C 适配器上,通过 I2C 适配器与 CPU 交换数据。

I2C 总线驱动

I2C 总线和 platform 总线差不多,只不过 platform 总线是虚拟出来的一条总线,而 I2C 总线是实际存在的。I2C 总线驱动的重点是 I2C 适配器驱动,主要涉及到两个结构体:i2c_adapter 和 i2c_algorithm。在 Linux 内核中用 i2c_adapter 结构体来表示 I2C 适配器。i2c_algorithm 就是 I2C 适配器与 IIC 设备进行通信的方法。

向系统注册设置好的 i2c_adapter有两个函数的原型如下:
int i2c_add_adapter(struct i2c_adapter *adapter)
int i2c_add_numbered_adapter(struct i2c_adapter *adap)

删除 I2C 适配器函数:

void i2c_del_adapter(struct i2c_adapter * adap)

I2C 设备驱动

在 I2C 设备驱动中主要有两个重要的结构体:i2c_client 和 i2c_driver。i2c_client 就是描述设备信息的,i2c_driver 描述驱动内容,类似于 platform_driver。

向 Linux 内核中注册 i2c 设备函数:

nt i2c_register_driver(struct module *owner,struct i2c_driver *driver)

向 Linux 内核中注销 i2c 设备函数:

void i2c_del_driver(struct i2c_driver *driver)

 I2C 核心

1 、i2c_adapter 注册/ 注销函数
int i2c_add_adapter(struct i2c_adapter *adapter)
int i2c_add_numbered_adapter(struct i2c_adapter *adap)
void i2c_del_adapter(struct i2c_adapter * adap)
2 、i2c_driver 注册/ 注销函数
int i2c_register_driver(struct module *owner, struct i2c_driver *driver)
int i2c_add_driver (struct i2c_driver *driver)
void i2c_del_driver(struct i2c_driver *driver)

I2C硬件配置:

工作频率:100K                     工作方式:半双工

地址:8位                               通信:主从机应答

Linux I2C驱动相关推荐

  1. linux下I2C驱动发送IO时序,Linux I2C 驱动阅读的碰到的一些网上没有提到的东西

    # re: Linux I2C 驱动阅读的碰到的一些网上没有提到的东西  回复  更多评论 2009-04-11 13:39 by 初学都 楼主,你好.我看了你那篇<Linux I2C核心.总线 ...

  2. linux I2C 驱动

    原文地址: http://hello2mao.github.io/2015/12/02/Linux_I2C_driver.html 目录 一.LinuxI2C驱动--概述 1.1 写在前面 1.2 I ...

  3. 【正点原子MP157连载】第四十章 Linux I2C驱动实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

  4. Linux I2C驱动框架(超详细)

    Linux I2C驱动框架 文章目录 Linux I2C驱动框架 一.几个重要的对象 1.I2C总线 2.I2C驱动 3.I2C设备 4.I2C设配器 小结 二.内核源码分析 1.注册I2C驱动 2. ...

  5. linux i2c 内核初始io,linux I2C驱动移植

    linux I2C驱动移植 I²C总线仅使用SCL,SDA两根信号线实现设备间的数据交互,被广泛应用于微控制领域芯片与芯片之间的通信,如EEPROM,实时时钟,小型LCD等与CPU之间的通信. I2C ...

  6. 《linux设备驱动开发详解》笔记——15 linux i2c驱动

    <linux设备驱动开发详解>笔记--15 linux i2c驱动 15.1 总体结构 如下图,i2c驱动分为如下几个重要模块 核心层core,完成i2c总线.设备.驱动模型,对用户提供s ...

  7. 【正点原子Linux连载】第六十一章 Linux I2C驱动实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  8. STM32MP157驱动开发——Linux I2C驱动

    相关文章:正点原子教程第四十章--Linux I2C驱动实验 0.前言   为了简化笔记的编写以及降低工作量,本节开始相关的基础知识部分通过引入原子哥的教材链接来完成,有兴趣的可以进入学习.   上一 ...

  9. linux I2C驱动架构解析

    I2C 概述 I2C是philips提出的外设总线. I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL ,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线. ...

  10. Linux i2c驱动框架分析 (二)

    Linux i2c驱动框架分析 (一) Linux i2c驱动框架分析 (二) Linux i2c驱动框架分析 (三) 通用i2c设备驱动分析 i2c core i2c核心(drivers/i2c/i ...

最新文章

  1. [31期] 第一个项目结束之际--俺很高调但很真诚地感谢一个人--涛爷
  2. C++11特性:override
  3. 线程本地ThreadLocal的介绍与使用!
  4. jqueryppt_jquery简单实现幻灯片的方法
  5. Oracle数据库体系结构
  6. Centos7 安装samba简单教程
  7. 美食合成海报,脑洞开得有点Hold不住!!
  8. css中的单位换算_GitHub - WangQiangrong/cssUnitTransform: css单位转换工具
  9. [收藏] Flash闪存颗粒和工艺知识深度解析
  10. 计算机在化学中的应用免费论文,计算机在化学化工中的应用
  11. 清华大学计算机刘云鹏,清华大学2017年在豫高招录取结束
  12. ms office excel2013教程 - 从网站加载数据
  13. android可看电视吗,不要VIP也能看电影,安卓手机这4款APP太赞了!
  14. JAVA-乐观锁更新失败或业务异常后接口重试
  15. 电脑中毒后常见的问题以及防毒的总结
  16. 【开源日记】宿舍断电自动关灯设备(二)
  17. 创业时全力以赴和留有后路的结果相同吗?
  18. 生成10位随机数(PHP)
  19. 阿里巴巴人工智能实验室(Ali A.I. Labs)负责人浅雪近期问答整理
  20. 【谷歌浏览器 -- Vimium 常用快捷键】

热门文章

  1. 淘宝用户行为分析(一):点击—加购—收藏—购买
  2. Window系统新手建站教程
  3. uniapp微信小程序使用自定义字体和外部字体
  4. 传统软件服务器与游戏服务器架构区别
  5. 团队管理之亮剑精神(转)
  6. ai将会怎样影响计算机的发展,AI再升级!人工智能会对我们的未来产生怎样的影响?...
  7. 吴洪声十问易名CEO金小刚:域名还有没有投资价值?
  8. 【Sentieon】基因测序数据NGS二级分析加速软件模块介绍
  9. mathmatica中ListLinePlot函数画图不能混合是咋回事啊
  10. QQ Account