Chinaunix首页 | 论坛 | 博客
  • 博客访问: 141913
  • 博文数量: 39
  • 博客积分: 26
  • 博客等级: 民兵
  • 技术积分: 20
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-11 09:54
个人简介

hehe.

文章分类
文章存档

2015年(12)

2014年(27)

我的朋友

分类:

2015-01-20 11:08:28

原文地址:IIC总线协议 作者:ranxiaokang

I2CPhilips公司推出的芯片间串行传输总线,以两根连线(SDASCL)即可实现完善的全双工同步数据传送,具有规范完整、结构独立和使用简单等特点。I2C总线的时钟线SCL和数据线SDA均为双向传输线。数据线上每传输一位数据都要求时钟线上有1个时钟脉冲与其相对应。标准的IIC总线协议数据传输速率为100 kbit/s7位设备地址。

 

IIC总线协议最重要的是起始信号,终止信号和应答信号。起始信号和终止信号由主机产生,应答信号是每次传输完成一个字节数据后必须有的,用于确认传输是否完成,主机向设备发一个字节数据后需要设备作应答,确认设备是否收到数据,主机收一个字节数据后需要向设备发一个应答信号,告诉设备数据是否收到。

(1) 起始信号:在时钟线保持高电平期间,数据线出现由高电平向低电平变化时启动I2C总线;
(2)
终止信号:在时钟线保持高电平期间,数据线出现由低电平向高电平变化时停止I2C总线
;
(3)
应答信号:应答信号在第9个时钟位上出现,接收器输出低电平为应答信号(A),输出高电平则为非应答信号(/A)

 

IIC数据传输:SCL为高电平时将SDA上数据发走,所以SDA上数据必须在SCL为高电平期间保持稳定,IIC总线首先传输的是数据最高位,最后是最低位。

 

设备地址:在起始信号后,需要向设备发送一个字节的设备地址,其中高七位为设备的地址,表示同哪个设备进行通信,最低位为数据传输方向,1表示读(接收)0表示写(发送)

1.发送()一个字节数据流程

a.起始信号

b.发送一个设备地址,这里为0,表示发送()),设备应答

c.发送设备的写的基地址,设备应答

d.发送数据到设备基地址,设备应答

e.停止信号

 

2.接收()一个字节数据流程

a.起始信号

b.发送一个设备地址,这里为0,表示发送()),设备应答

c.发送从设备要读数据的基地址,设备应答

d.起始信号

e.发送一个设备地址,这里为1,表示接收()),设备应答

f.从设备基地址处接收到一个字节的数据,主机应答

g.停止信号

 

从设备地址读或写一个字节数据后,设备读写地址会自动加1

3.连续发送()多个字节数据

a.起始信号

b.发送一个设备地址,这里为0,表示发送()),设备应答

c.发送设备的写的基地址,设备应答

d.发送数据到设备基地址,设备应答

e.发送数据到设备(基地址+1),设备应答

f.发送数据到设备(基地址+2),设备应答

g.发送数据到设备(基地址+n),设备应答

h.停止信号

 

4.连续接收()多个字节数据

a.起始信号

b.发送一个设备地址,这里为0,表示发送()),设备应答

c.发送从设备要读数据的基地址,设备应答

d.起始信号

e.发送一个设备地址,这里为1,表示接收()),设备应答

f.从设备基地址处接收到一个字节的数据,主机应答

g.从设备(基地址处+1)接收到一个字节的数据,主机应答

h.从设备(基地址处+2)接收到一个字节的数据,主机应答

i.从设备(基地址处+n)接收到一个字节的数据,主机应答

j.停止信号

阅读(892) | 评论(0) | 转发(0) |
0

上一篇:linux DLL

下一篇:DDD调试opencore/stagefright

给主人留下些什么吧!~~