文章目录
前言
本文对I2C分两部分探讨
1、I2C总线结构:研究它的传输机制
2、I2C软件驱动:包括总线驱动和设备驱动
一、IIC总线结构
I2C 采⽤的GPIO⼀般为开漏模式,⽀持线与,但是开漏模式⽆法输出⾼电平,所以需要外部上拉。
2.1 开漏结构和推挽结构
这时候提出一个问题:总线必须为开漏结构吗,推挽结构行不行?
我们首先介绍下这两种结构,下图是推挽输出电路:使⽤两个三极管或 MOS管,当上面的MOS管导通时,GPIO输出高电平1,称为“推”,当下面MOS管导通时,GPIO输出低电平0,称为“挽”。
如图是开漏输出电路,当MOS管导通时,输出为低电平0,当MOS管关闭时,输出为高阻态(所以I2C使用开漏结构需要上拉电阻来改变电平状态)。
然后我们回到I2C电路,I2C总线为多个开漏结构,MOS管导通的时候OUT输出低电平,MOS管不通的时候就是高阻态,电平就由上拉电平决定。当总线上接了多个I2C设备(DECICE1和DECICE2),DECICE1输出高,DECICE2输出低,VDD和地之间有一个上拉电阻限流不会损坏设备,同时整条总线电平为低,这也被称为线与。