I2C相关知识

I2C是一种两线式串行总线,用于微控制器与外围设备间通信,支持Standard、Fast和High speed三种传输速度。每个设备通过独特地址识别,可作为发送器或接收器。主设备控制总线,同一时间仅一对设备通信。理解I2C的关键在于其同步通信方式、从设备地址和主从设备交互。应用中,通过配置I2C控制器寄存器与从设备建立连接,实现数据传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

I2C Inter Integrated Circuit)是一种两线式串行总线,用于连接微控制器及其外围设备。

 I2C只要求两条线路:串行数据总线 SDA和串行时钟线 SCL。 I2C标准定义了三种传输速度: Standard(100kb/ Fast(400kb/ High speed(3.4Mb/s)。连接在 I2C总线的设备通过 SCL和 SDA进行通信,每个设备都通过一个特定的地址进行识别,并且可以作为一个发送器或者接收器。当设备向总线发送数据时是一个发送器;当设备接收来自总线的数据时是一个接收器。发送器需要产生时钟信号 SCL,控制数据的发送,和产生 START和 STOP状态。接收器需要根据发送器发送的 START和 STOP状态开始和结束数据的读写操作。接收器还需要在接收到数据后发送一 个应答信号给发送器。

I2C主从通信双方本质上是通过时序在工作,但是时序会比较复杂不利于Soc软件完成,于是乎解决方案是soc内部内置了硬件的控制器来产生通信时序。这样我们写软件时只需要向控制器的寄存器中写入配置值即可,控制器会产生适当的时序在通信线上和对方通信。

主要了解以下特征:

1、I2C属于串行通信,所有的数据以位为单位在SDA线上串行传输。

2、同步通信就是通信双方工作在同一个时钟下,一般 通信的A方通过一根CLK信号线传输A自己的时钟给B,B工作在A传输的时钟下。所以同步通信的显著特征就是:通信线中有CLK。

I2C通信可以一对一(一个主设备对1个从设备),也可以一对多(一个主设备对多个从设备)

3、主设备负责调度总线,决定某一时间和哪个从设备通信。注意:同一时间内,I2C的总线上只能传输一对设备的通信信息,所以同一时间只能有一个从设备和主设备通信,如果违背此条规则,I2C通道将会阻塞,总有一方获取不到数据。

4、每一个I2C从设备在通信中都有一个I2C从设备地址,这个设备地址是从设备本身固有的属性,然后通信时主设备需要知道自己将要通信的那个从设备的地址,然后在通信中通过地址来甄别是不是自己要找的那个从设备。

怎么使用I2C进行数据传递,比如我们需要读取EEPROM信息,或者读取SPD信息,那么首先得知道I2C寄存器基地址,然后再获取从设备的地址,这样当初始化相应的从设备后主从设备就建立了连接,进行数据传递。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值