I2C 协议
2015-09-14 10:55
267 查看
1、 IIc 概述
是由philips 公司推出的串行总线,应用非常广泛。
特点:1、2线,上拉电阻,共地,协议可以进行软件的模拟。
2、寻址方式无须片选, 主从方式中,从器件地址:器件编写地址+引脚地址。 (器件编写地址有I2C委员会分配,引脚地址:有芯片PCB 不嫌决定)
3、工作方式:多主,主从方式。主控制器提供起始信号,停止信号,时钟信号
4、 总线还具有仲裁功能,当一个以上的主器件同时试图控制总线时,只允许一个有效,从而保证数据不被破坏
5、当主机发送寻址字节时,总线上所有器件都将该寻址字节中的高7位地址与自己器件的地址比较,若两者相同,则该器件认为被主机寻址,并根据读/写位确定是
从发送器还是从接收器
6、当器件内部有连续的子地址空间时,对这些空间进行N个字节的连续读/写,子地址会自动加1。
总线:
I2C 电器特性:
1、SCL,SDA 均为双向传输,平时都处在高电平状态。
2、SCL为高电平时 SDA才有效。SCL 为低电平时,允许SDA 发生状态的改变, start 信号与stop信号 显然比较特殊。
I2C 总线协议:
1、主控制器发起起始信号与时钟信号
2、主控制器发送从机地址(7 bit)与读写方向位(1 bit)
3、从机根据地址与方向位确定自己的模式,并向主机发送ACK信号
4、数据传输并均有ACK 信号
5、最好一次没有ACK 信号
6、主机发送停止信号
I2C 数据传输:
I2C 每次传输一个位都需要对应的一个时钟脉冲,数据数据为8位,高位在前,传输8位后都一个ACK位(第9位)
MSB :从地址构成BIT7~BIT1,BIT0 是R/W 位。
BIT7~BIT4:I2C 委员会给出,器件地址
BIT3~BIT1:器件pin脚连接方式决定。
BIT0: R/W 0:从主机写到从机,1:从机写到主机
应答信号与非应答信号:(接收器在SDA线上输出低电平为应答信号(A),输出高电平为非应答信号(非A))
[align=left]
[/align]
[align=left] IIC 完整数据传输格式:[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left] IIC 主控器写数据过程:[/align]
[align=left] S:开始信号 [/align]
[align=left] P:停止信号[/align]
[align=left] A: 应答信号,非A:非应答信号[/align]
[align=left] SLA:为寻址地址写[/align]
[align=left] :为主控器发送, :为被控制设定ACK[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left] IIC 主控器读数据过程:[/align]
[align=center]
[/align]
[align=left]
[/align]
[align=left] 注:主控器发送停止信号前,先向被控制器发送非应答信号,向被控制器说明read 过程结束[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left] IIC 主控器读写数据过程(先读后写):[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left] Sr: 重复起始信号 (R/W 方向不同,因此需要Sr 信号)[/align]
[align=left] 注:无论在何种方式起始信号,停止信号,寻址地址都是由主控器发送,被控器接收[/align]
[align=left] [/align]
实际调试波形NOACK:
是由philips 公司推出的串行总线,应用非常广泛。
特点:1、2线,上拉电阻,共地,协议可以进行软件的模拟。
2、寻址方式无须片选, 主从方式中,从器件地址:器件编写地址+引脚地址。 (器件编写地址有I2C委员会分配,引脚地址:有芯片PCB 不嫌决定)
3、工作方式:多主,主从方式。主控制器提供起始信号,停止信号,时钟信号
4、 总线还具有仲裁功能,当一个以上的主器件同时试图控制总线时,只允许一个有效,从而保证数据不被破坏
5、当主机发送寻址字节时,总线上所有器件都将该寻址字节中的高7位地址与自己器件的地址比较,若两者相同,则该器件认为被主机寻址,并根据读/写位确定是
从发送器还是从接收器
6、当器件内部有连续的子地址空间时,对这些空间进行N个字节的连续读/写,子地址会自动加1。
总线:
I2C 电器特性:
1、SCL,SDA 均为双向传输,平时都处在高电平状态。
2、SCL为高电平时 SDA才有效。SCL 为低电平时,允许SDA 发生状态的改变, start 信号与stop信号 显然比较特殊。
I2C 总线协议:
1、主控制器发起起始信号与时钟信号
2、主控制器发送从机地址(7 bit)与读写方向位(1 bit)
3、从机根据地址与方向位确定自己的模式,并向主机发送ACK信号
4、数据传输并均有ACK 信号
5、最好一次没有ACK 信号
6、主机发送停止信号
I2C 数据传输:
I2C 每次传输一个位都需要对应的一个时钟脉冲,数据数据为8位,高位在前,传输8位后都一个ACK位(第9位)
MSB :从地址构成BIT7~BIT1,BIT0 是R/W 位。
BIT7~BIT4:I2C 委员会给出,器件地址
BIT3~BIT1:器件pin脚连接方式决定。
BIT0: R/W 0:从主机写到从机,1:从机写到主机
应答信号与非应答信号:(接收器在SDA线上输出低电平为应答信号(A),输出高电平为非应答信号(非A))
[align=left]
[/align]
[align=left] IIC 完整数据传输格式:[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left] IIC 主控器写数据过程:[/align]
[align=left] S:开始信号 [/align]
[align=left] P:停止信号[/align]
[align=left] A: 应答信号,非A:非应答信号[/align]
[align=left] SLA:为寻址地址写[/align]
[align=left] :为主控器发送, :为被控制设定ACK[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left] IIC 主控器读数据过程:[/align]
[align=center]
[/align]
[align=left]
[/align]
[align=left] 注:主控器发送停止信号前,先向被控制器发送非应答信号,向被控制器说明read 过程结束[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left] IIC 主控器读写数据过程(先读后写):[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left] Sr: 重复起始信号 (R/W 方向不同,因此需要Sr 信号)[/align]
[align=left] 注:无论在何种方式起始信号,停止信号,寻址地址都是由主控器发送,被控器接收[/align]
[align=left] [/align]
实际调试波形NOACK:
相关文章推荐
- WEB项目转为Maven项目的两种方式
- spring源代码的批量操作
- gprof注意事项
- Android基础控件ToggleButton→ Switch→ SeekBar→ProgressBar 控件
- 聚类:dbscan,密度最大值
- AFNetworking读取和设置cookie的解决方案
- android ViewSwticher
- LaunchImage
- php---mysql+ajax 表格(table)分页实现
- iOS UI基础-6.0 UIActionSheet的使用
- c#获取当前日期时间
- 样本有偏时的思考
- Spring MVC textarea example
- htm和html
- 内存池、进程池、线程池
- [LeetCode-203] Remove Linked List Elements(链表节点删除)
- IOS IPA打包和真机测试
- IOS 更新版本后出现错误:could not find a storyboard named 'Main' in bundle NSBundle
- 检查对象属性是否有空值
- 浅谈JAVA集合框架