Linux I2C驱动
介绍: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驱动相关推荐
- linux下I2C驱动发送IO时序,Linux I2C 驱动阅读的碰到的一些网上没有提到的东西
# re: Linux I2C 驱动阅读的碰到的一些网上没有提到的东西 回复 更多评论 2009-04-11 13:39 by 初学都 楼主,你好.我看了你那篇<Linux I2C核心.总线 ...
- linux I2C 驱动
原文地址: http://hello2mao.github.io/2015/12/02/Linux_I2C_driver.html 目录 一.LinuxI2C驱动--概述 1.1 写在前面 1.2 I ...
- 【正点原子MP157连载】第四十章 Linux I2C驱动实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...
- Linux I2C驱动框架(超详细)
Linux I2C驱动框架 文章目录 Linux I2C驱动框架 一.几个重要的对象 1.I2C总线 2.I2C驱动 3.I2C设备 4.I2C设配器 小结 二.内核源码分析 1.注册I2C驱动 2. ...
- linux i2c 内核初始io,linux I2C驱动移植
linux I2C驱动移植 I²C总线仅使用SCL,SDA两根信号线实现设备间的数据交互,被广泛应用于微控制领域芯片与芯片之间的通信,如EEPROM,实时时钟,小型LCD等与CPU之间的通信. I2C ...
- 《linux设备驱动开发详解》笔记——15 linux i2c驱动
<linux设备驱动开发详解>笔记--15 linux i2c驱动 15.1 总体结构 如下图,i2c驱动分为如下几个重要模块 核心层core,完成i2c总线.设备.驱动模型,对用户提供s ...
- 【正点原子Linux连载】第六十一章 Linux I2C驱动实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...
- STM32MP157驱动开发——Linux I2C驱动
相关文章:正点原子教程第四十章--Linux I2C驱动实验 0.前言 为了简化笔记的编写以及降低工作量,本节开始相关的基础知识部分通过引入原子哥的教材链接来完成,有兴趣的可以进入学习. 上一 ...
- linux I2C驱动架构解析
I2C 概述 I2C是philips提出的外设总线. I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL ,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线. ...
- Linux i2c驱动框架分析 (二)
Linux i2c驱动框架分析 (一) Linux i2c驱动框架分析 (二) Linux i2c驱动框架分析 (三) 通用i2c设备驱动分析 i2c core i2c核心(drivers/i2c/i ...
最新文章
- [31期] 第一个项目结束之际--俺很高调但很真诚地感谢一个人--涛爷
- C++11特性:override
- 线程本地ThreadLocal的介绍与使用!
- jqueryppt_jquery简单实现幻灯片的方法
- Oracle数据库体系结构
- Centos7 安装samba简单教程
- 美食合成海报,脑洞开得有点Hold不住!!
- css中的单位换算_GitHub - WangQiangrong/cssUnitTransform: css单位转换工具
- [收藏] Flash闪存颗粒和工艺知识深度解析
- 计算机在化学中的应用免费论文,计算机在化学化工中的应用
- 清华大学计算机刘云鹏,清华大学2017年在豫高招录取结束
- ms office excel2013教程 - 从网站加载数据
- android可看电视吗,不要VIP也能看电影,安卓手机这4款APP太赞了!
- JAVA-乐观锁更新失败或业务异常后接口重试
- 电脑中毒后常见的问题以及防毒的总结
- 【开源日记】宿舍断电自动关灯设备(二)
- 创业时全力以赴和留有后路的结果相同吗?
- 生成10位随机数(PHP)
- 阿里巴巴人工智能实验室(Ali A.I. Labs)负责人浅雪近期问答整理
- 【谷歌浏览器 -- Vimium 常用快捷键】