打印
[MM32硬件]

I2C通信

[复制链接]
130|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主


I2C(Inter-integrated Circuit)总线是由Philips公司开发的一种简单、双向二线制同步串行总线。

I2C总线支持设备之间的短距离通信,它只需要两根信号线来完成信息交换。

它是两根线之间通过复杂的逻辑关系传输数据的,通信速度不高,程序写起来也比较复杂。用于处理器和一些外围设备之间的接口,常用于单片机系统里主要用来和24C02等小容易存储器连接。

1)工作原理

SDA(串行数据线)和SCL(串行时钟线)都是双向I/O线,接口电路为开漏输出.需通过上拉电阻接电源VCC.当总线空闲时.两根线都是高电平,连接总线的外同器件都是CMOS器件,输出级也是开漏电路.在总线上消耗的电流很小,因此,总线上扩展的器件数量主要由电容负载来决定,因为每个器件的总线接口都有一定的等效电容.

主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下.主机负责产生定时时钟和终止数据传送。数据传输和地址设定由软件设定,非常灵活。


使用特权

评论回复
沙发
小小蚂蚁举千斤|  楼主 | 2025-5-26 19:26 | 只看该作者
2)I2C 主要特点

A.简单的双向两线总线(漏极开路模式):

B.串行数据(SDA)串行时钟(SCL)

C.带仲裁功能的多主机的总线

D.总线上的每个设备都具有不同的识别地址

E.每次数据传输都是由主机发起,且时钟总是由主机提供

使用特权

评论回复
板凳
小小蚂蚁举千斤|  楼主 | 2025-5-26 19:27 | 只看该作者
3)主设备从从设备读数据,如下图


SCL是时钟,SDA承载的是数据。当SDA从1变动到0,而SCL还是1时,表示开始数据传输。接下来的7位,就是设备的地址。紧接着的是读写标志,其为1时是读取,为0则是写。如果I2C总线上存在着和请求的地址相对应的设备,则从设备会发送一个ACK信号通知主设备,可以发送数据了。接到ACK信号后,主设备则发送一个8位的数据。当传输完毕之后,SCL保持为1,SDA从0变换到1时,标明传输结束。

使用特权

评论回复
地板
小小蚂蚁举千斤|  楼主 | 2025-5-26 19:28 | 只看该作者
4)主从设备通信

master是指启动数据传输的设备并在总线上生成时钟信号以驱动该传输,而被寻址的设备都作为slaves。

和SPI不同的是,I2C可以支持mul-master系统,允许有多个master并且每个master都可以与所有的slaves通信(master之间不可通过I2C通信,并且每个master只能轮流使用I2C总线)。



I2C的数据传输速率位于串口和SPI之间,大部分I2C设备支持100KHz和400KHz模式。使用I2C传输数据会有一些额外消耗:每发送8bits数据,就需要额外1bit的元数据(ACK或NACK)。I2C支持双向数据交换,由于仅有一根数据线,故通信是半双工的。

使用特权

评论回复
5
小夏天的大西瓜| | 2025-5-27 09:12 | 只看该作者
I2C总线支持设备之间的短距离通信,它只需要两根信号线来完成信息交换。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

218

主题

2403

帖子

1

粉丝