没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Linux kernel 2.6 I2C 设备驱动程序介绍
Linux kernel 2.6 I2C 设备驱动程序介绍
Version history
Index Version Author Date Comment
1 V1.0.0 Wen Xiaoyong 2011-12-7 Draft, Linux kernel version: 2.6.31
(come from Freescale iMX515 BSP)
1
Linux kernel 2.6 I2C 设备驱动程序介绍
目录
Linux kernel 2.6 I2C设备驱动程序介绍 .........................................................................................1
Version history ..................................................................................................................................1
目录 ..................................................................................................................................................2
1. I2C /SMBus是什么.......................................................................................................................3
1.1 I2C/SMBus的历史..............................................................................................................3
1.2 I2C总线连接电路原理图...................................................................................................3
1.3 I2C协议简介.......................................................................................................................4
2. Linux kernel 2.6 中,I2C框架 .....................................................................................................6
2.1 Linux的I2C子系统 .............................................................................................................6
2.2 I2C设备驱动框架...............................................................................................................7
3. Linux kernel 2.6 中的内核中,I2C接口函数 .............................................................................7
4. I2C设备驱动框架.........................................................................................................................8
4.1 I2C设备驱动接口和关键数据结构...................................................................................8
4.1.1 关键数据结构.........................................................................................................8
4.1.2 驱动接口...............................................................................................................11
4.2 一个I2C字符设备驱动例子............................................................................................12
4.3 应用程序访问I2C设备例子程序....................................................................................15
5. 参考资料....................................................................................................................................16
5.1 参考代码..........................................................................................................................16
5.2 参考文档..........................................................................................................................16
2
Linux kernel 2.6 I2C 设备驱动程序介绍
1. I2C /SMBus 是什么
1.1 I2C/SMBus 的历史
I2C(Inter-Integrated Circuit)是内部整合电路的称呼,是一种串行通讯总线,使用多主从架构,
由飞利浦公司在 1980 年代为了让主板、嵌入式系统或手机用以连接低速周边装置而发展。
1992 年完成了最初的标准版本释出,新增了传输速率为 400 kbit/s 的快速模式及长度为 10 位元的寻
址模式可容纳最多 1008 个节点。1998 年释出了 2.0 版,新增了传输速率为 3.4Mbit/s 的高速模式并
为了节省能源而减少了电压及电流的需求。2.1 版则在 2001 年完成,这是一个对 2.0 版做一些小修
正,version 3.0, 2007 年同时也是目前的最新版本。
系统管理总线(System Management Bus)是一种两条讯号所组成源自于 I2C 的一种总线。SMBus
由 Intel 于 1995 年所定义. 包含有 clock, data, 以及基于 Philips' I2C serial bus 协定的指令。其
时钟频率范围在 10 kHz 到 100 kHz. SMBus 是 I2C 协议的一个子集。
I2C 参考设计使用一个 7bits 地址空间但保留了 16 个地址(有些 I2C 设备地址可编程),所以在一组总
线最多可和 112 个节点通讯。常见的 I2C 总线依传输速率的不同而有不同的模式:标准模式(100
Kbit/s)、低速模式(10 Kbit/s),但时脉频率可被允许下降至零,这代表可以暂停通讯。而新一代
的 I2C 总线可以和更多的节点(支援 10 位元长度的位址空间)以更快的速率通讯:快速模式(400
Kbit/s)、高速模式(3.4 Mbit/s)。
1.2 I2C 总线连接电路原理图
上图中,SDA 是数据线,SCL 是时钟线。实际应用中,通常会上拉 Vcc (3.3V)。
3
Linux kernel 2.6 I2C 设备驱动程序介绍
1.3 I2C 协议简介
I2C 总线协议细节,参见附件[3]. I2C 协议文档。
注意,通常是 I2C 设备是 7 bits 地址(也有把地址扩展到 10 的情形,比较少见),但是 datasheet
中,会给出 8 bits 地址,所以编程要右移 1 位,即 i2c_slave_address >> 1。
第 0 位=0,表示写,即 I2C 总线控制器(也称适配器或者主机)把数据写入到 I2C 设备(也
称从机或者 I2C 从设备)。
第 0 位=1,表示读,即 I2C 总线控制器从 I2C 设备读出数据。
下面列出 Linux kernel 2.6.31 源代码目录树中的文档(Documentation\i2c\ i2c-protocol):
This document describes the i2c protocol. Or will, when it is finished :-)
Key to symbols
==============
S (1 bit) : Start bit
P (1 bit) : Stop bit
Rd/Wr (1 bit) : Read/Write bit. Rd equals 1, Wr equals 0.
A, NA (1 bit) : Accept and reverse accept bit.
Addr (7 bits): I2C 7 bit address. Note that this can be expanded as usual to
get a 10 bit I2C address.
Comm (8 bits): Command byte, a data byte which often selects a register on
the device.
Data (8 bits): A plain data byte. Sometimes, I write DataLow, DataHigh
for 16 bit data.
Count (8 bits): A data byte containing the length of a block operation.
[..]: Data sent by I2C device, as opposed to data sent by the host adapter.
Simple send transaction
======================
This corresponds to i2c_master_send.
S Addr Wr [A] Data [A] Data [A] ... [A] Data [A] P
Simple receive transaction
===========================
This corresponds to i2c_master_recv
4
剩余15页未读,继续阅读
Wenxy1
- 粉丝: 734
- 资源: 18
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 机器学习利用SKlearn中决策树和线性回归模型的身高数据集
- LinkedListS.py
- cesiumlab3-3.0.7安装包
- vsftpd 无依赖安装包
- 老照片修复教程(带资料),再也不用去照相馆修复了!-教程网盘链接提取码下载 .txt
- AI认知课+AI工具实战课,理论结合实操一门课全搞定-视频课程资源网盘链接提取码下载 .txt
- IP切片带货5.0,图文玩法,制作更加简单,流量更大,日入1000+-教程网盘链接提取码下载 .txt
- 2服务注册中心Nacos应用实践
- 2024年3月份GESP1~8级编程题题干+数据
- STM32单片机FPGA毕设电路原理论文报告一种建立单片机应用系统菜单的新方法
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
前往页