linux之I2C解析-------OK6410(一)
2012-07-25 11:51
281 查看
转自http://blog.csdn.net/cjok376240497/article/details/6972305
I2C总线是由Philips公司开发的两线式串行总线,这两根线为时钟线(SCL)和双向数据线(SDA)。由于I2C总线仅需要两根线,因此在电路板上占用的空间更少,带来的问题是带宽较窄。I2C在标准模式下传输速率最高100Kb/s,在快速模式下最高可达400kb/s。属于半双工。
在嵌入式系统中,I2C应用非常广泛,大多数微控制器中集成了I2C总线,一般用于和RTC,EEPROM,智能电池电路,传感器,LCD以及其他类似设备之间的通信。
1.2 I2C总线传输时序
1.3 I2C总线的信号状态
1、 空闲状态:SDA和SCL都是高电平;
2、 开始条件(S):SCL为高电平时,SDA由高电平向低电平跳变,开始传输数据;
3、 结束条件(P):SCL为高电平时,SDA由低电平向高电平跳变,结束传输数据;
4、 数据有效:在SCL的高电平期间,SDA保持稳定,数据有效。SDA的改变只能发生在SCL的低电平期间;
5、 ACK信号:数据传输的过程中,接收器件每接收一个字节数据要产生一个ACK信号,向发送器件发出特定的低电平脉冲,表示已经收到数据。
1.4 从设备地址
I2C总线从设备使用7位地址,最后一个为读写控制位。下图是eeprom的原理图,我们可以计算出它的地址为0x50。
1.5 I2C读写方式
多字节写的时序
多字节读的时序
具体可参考datasheet
1 硬件特性
1.1 概述I2C总线是由Philips公司开发的两线式串行总线,这两根线为时钟线(SCL)和双向数据线(SDA)。由于I2C总线仅需要两根线,因此在电路板上占用的空间更少,带来的问题是带宽较窄。I2C在标准模式下传输速率最高100Kb/s,在快速模式下最高可达400kb/s。属于半双工。
在嵌入式系统中,I2C应用非常广泛,大多数微控制器中集成了I2C总线,一般用于和RTC,EEPROM,智能电池电路,传感器,LCD以及其他类似设备之间的通信。
1.2 I2C总线传输时序
1.3 I2C总线的信号状态
1、 空闲状态:SDA和SCL都是高电平;
2、 开始条件(S):SCL为高电平时,SDA由高电平向低电平跳变,开始传输数据;
3、 结束条件(P):SCL为高电平时,SDA由低电平向高电平跳变,结束传输数据;
4、 数据有效:在SCL的高电平期间,SDA保持稳定,数据有效。SDA的改变只能发生在SCL的低电平期间;
5、 ACK信号:数据传输的过程中,接收器件每接收一个字节数据要产生一个ACK信号,向发送器件发出特定的低电平脉冲,表示已经收到数据。
1.4 从设备地址
I2C总线从设备使用7位地址,最后一个为读写控制位。下图是eeprom的原理图,我们可以计算出它的地址为0x50。
1.5 I2C读写方式
多字节写的时序
多字节读的时序
具体可参考datasheet
相关文章推荐
- linux之I2C解析-------OK6410(二)
- linux之I2C解析-------OK6410(三)
- linux之I2C解析-------OK6410(四)
- OK6410之LINUX2.6.39.2之USB-HOST,MMC/SD,GIPO-KEYS,I2C,USB-STORAGE功能实现
- 在嵌入式Linux系统(OK6410)中移植Boa 服务器
- Win7下安装OK6410的USB驱动以及Linux下源码安装dnw
- OK6410的linux的LED驱动,GPIO驱动
- Linux3.6.7在OK6410平台的移植(十)USB
- OK6410开发板linux内核移植
- 手把手教你移植linux内核---------OK6410(一)
- linux下SPI驱动----OK6410(一)
- S3C6410嵌入式应用平台构建(六)——linux-3.14.4移植到OK6410-(Yaffs2文件系统移植)
- OK6410 linux3.0.1 外部中断组1~9无法request_irq的解决方法
- Linux3.0.1 OK6410B板无线wifi的使用
- OK6410 Linux DS18B20驱动
- Linux下I2C驱动框架全面解析
- Linux下ARM11在OK6410开发板的链接器脚本示例
- 手把手教你移植linux内核---------OK6410(三)
- ok6410-第05篇-Linux 下裸板程序的开发
- [Linux] Ubuntu13.04 搭建OK6410-A开发板的开发环境