i2c协议详解_i2c通信协议原理

i2c协议详解_i2c通信协议原理I2C物理层I2C通讯设备之间的常用连接方式如下图

I2C物理层

I2C通讯设备之间的常用连接方式如下图。

i2c协议详解_i2c通信协议原理

它的物理层有如下特点:

  • 一个I2C总线只使用两条总线线路,一条双向串行数据线(SDA) ,一条串行时钟线 (SCL)。 数据线即用来表示数据,时钟线用于数据收发同步。

  • 每个连接到总线的设备都有一个独立的设备地址,主机可以利用这个地址进行不同设备之间的访问。 其中地址是一个七位或十位的数字。

  • 总线通过上拉电阻接到电源。当I2C设备空闲时,会输出高阻态,而当所有设备都空闲, 都输出高阻态时,由上拉电阻把总线拉成高电平。

  • 多个主机同时使用总线时,为了防止数据冲突,会利用仲裁方式决定由哪个设备占用总线。

  • 具有三种传输模式:标准模式传输速率为100kbit/s ,快速模式为400kbit/s , 高速模式下可达 3.4Mbit/s,但目前大多I2C设备尚不支持高速模式。

  • 连接到相同总线的 IC 数量受到总线的最大电容 400pF 限制 。

通讯的起始和停止信号

  • 当 SCL 线是高电平时 SDA 线从高电平向低电平切换,这个情况表示通讯的起始。

  • 当 SCL 是高电平时 SDA 线由低电平向高电平切换,表示通讯的停止。

i2c协议详解_i2c通信协议原理

响应

 i2c的数据字节定义为8-bits长度,对每次传送的总字节数量没有限制,但对每一次传输必须伴有一个应答(ACK)信号, 其时钟由主设备提供,而真正的应答信号由从设备发出,在时钟为高时,通过拉低并保持SDA的值来实现。如果从设备忙, 它可以使 SCL保持在低电平,这会强制使主设备进入等待状态。当从设备空闲后,并且释放时钟线,原来的数据传输才会继续。

i2c协议详解_i2c通信协议原理

数据有效性

I2C使用SDA信号线来传输数据,使用SCL信号线进行数据同步,如下图。 SDA数据线在SCL的每个时钟周期传输一位数据。(scl=1时,sda的数据有效;scl=0,sda数据改变

  • 传输时,SCL为高电平的时候SDA表示的数据有效,即此时的SDA为高电平时表示数据“1”,为低电平时表示数据“0”。

  • 当SCL为低电平时,SDA的数据无效,一般在这个时候SDA进行电平切换,为下一次表示数据做好准备。

i2c协议详解_i2c通信协议原理

地址及数据方向

i2c协议详解_i2c通信协议原理

 

  • 读数据方向时,主机会释放对SDA信号线的控制,由从机控制SDA信号线,主机接收信号。

  • 写数据方向时,SDA由主机控制,从机接收信号。

 i2c数据读写

i2c协议详解_i2c通信协议原理

 对从设备进行写操作时,主设备发出开始标志(S)和写地址(地址位加一个R/W位,0为写)。 从设备产生应答信号。然后主设备开始传送寄存器地址(RA),接到应答后,开始传送寄存器数据, 然后仍然要有应答信号,连续写入多字节时依次类推。

 i2c协议详解_i2c通信协议原理

 对从设备进行读操作时,主设备发出开始标志(S)和读地址(地址位加一个R/W位,1为读)。 等待从设备产生应答信号。然后发送寄存器地址,告诉从设备读哪一个寄存器。 紧接着,收到应答信号后,主设备再发一个开始信号,然后发送从设备读地址。 从设备产生应答信号并开始发送寄存器数据。通信以主设备产生的拒绝应答信号(NACK)和结束标志(P)结束。

今天的文章i2c协议详解_i2c通信协议原理分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/78008.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注