一、I2C在硬件上的接法
I2C在硬件上的接法如下图所示,主控芯片引出两条线SCL(serial clock),SDA(erail data)线,在一条I2C总线上可以接很多I2C设备,我们还会放一个上拉电阻(放一个上拉电阻的原因以后我们再说)。
主从结构–> 一主多从
二、s信号 p信号 ACK信号是怎么表示的?
随便打开一个有IIC的芯片
(1)开始信号(S):SCL为高电平时,SDA山高电平向低电平跳变,开始传送数据。
(2)结束信号(P):SCL为电平时,sDA由低电平向高电平跳变,结束传送数据。
(3)响应信号(ACK):接收器在接收到8位数据后,在第9个时钟周期,拉低SDA
三、怎么双向传输
我们怎么传输数据,我们需要发数据从主设备发送到从设备上去,也需要把数据从从设备传送到主设备上去,数据涉及到双向传输。
1.问题:如何在SDA上实现双向传输?
答:主芯片通过一根SDA线既可以把数据发给从设备,也可以从SDA上读取数据,连接SDA线的引脚里面必然有两个引脚(发送引脚/接受引脚)。
2.问题:主设备(从设备)发送数据时,从设备(主设备)的发送引脚,不影响数据的发送,怎么做到呢?
答:里面放一个三极管,使用开极(极电集开发出去作为输出)电路,如下图
- 从真值表和电路图我们可以知道,当某一个芯片不行影响SDA线时,那就不驱动这个三极管。
- 想输出高电平时;都不驱动(高电平就由上拉电阻决定)。
- 想输出低电平,就驱动三极管。