I2C的原理及应用

时间:2024-05-23 19:21:44

I2C与SPI都是串行总线

SPI:4根线,1x 时钟,1x 片选,2x 信号

SPI2根信号线,全双工,两根信号线完全独立

SPI是主从模式,一主多从

I2C:2根线,硬件的简单通过软件的复杂弥补;没有片选

I2C也是主从工作模式,一主多从,每一个设备都可当作主设备,只是同一时刻只有一个允许当作主设备;

I2C如何选择与哪个从设备进行通信?软件里面需要定义一个地址,即I2C中通常会先发送从设备的地址信号,只是没有片选信号。

I2C只有一根信号线,半双工通信,采用应答方式。即主设备给从设备发送信号,等待从设备应答,等到应答后才再发。如果主设备想要从从设备读数据,即从设备向主设备发数据时,从设备也要等待主设备发的应答。

尤其是从设备I2C软件模拟,更复杂。

I2C起始信号:当clock为高电平时,如果信号线上出现下降沿,就认为是起始信号。

I2C的原理及应用

I2C停止信号:当clock为高电平时,如果信号线上出现上升沿,就认为是停止信号。

I2C的原理及应用

发送数据时,一般以起始信号开始,接着发地址信号(主设备发从设备的地址),接着等待从设备发回的应答。

I2C的应答分为两种,从设备给主设备发送的应答是一个低电平,主设备给从设备发送的应答是高电平(应答非/非应答)

时钟下降沿:作为发送端发数据的时刻,时钟上升沿进行读数

I2C的原理及应用

第一帧发地址(clock下降沿开始发数据,时钟沿上升沿读数据),下图读出的地址刚好为1010

I2C的原理及应用

开始后,主设备先发地址AA(10101010),从设备收到以后,接着一根低电平应答,下面蓝色的部分,之后开始发数据

I2C的原理及应用

发送0xCC,发完后,停止

I2C的原理及应用