IIC协议基础

一、IIC信号波形

1.启动信号(Start)

Master将SDA从高电平切换到低电平(此时SCL保持高电平),随后SCL从高电平切换到低电平,传输开始。

注:两个Master同时发送启动条件,先将SDA拉低者获得优先权。

2.停止信号(Stop)

Master将SCL从低电平切换到高电平(此时SDA保持低电平),随后SDA从低电平切换到高电平,传输结束。

注:数据读写期间,当SCL为高电平时,SDA上的值不应更改,因为这可能会导致错误的停止信号。

3.数据读写(Read/Write)

在SCL为低电平时,更改SDA数据;在SCL为高电平时,传输SDA数据。所以在数据传输时需保证SCL为高电平,SDA数据稳定。

4.重新启动(Restart)

在没有Stop的情况下,重新发送Start即为Restart。接着发送地址和读写位,可重新指定读写方向,多用于读取数据(见下文第三节读字节部分)。

5.应答/非应答信号(Acknowledge/No Acknowledge)

1个字节传输完成之后,第9个SCL时钟周期内,Master释放SDA总线,控制权交由Slave(由于总线上拉电阻作用,此时SDA为高电平)。Slave若正确接收到数据,则拉低SDA,表示应答(ACK);未正确接收到数据,则没有拉低SDA,保持高电平,表示非应答(NACK)。

注:NACK的产生,其一可能是Slave没收到数据或其他意外状况。其二则是Master主动产生NACK,通知Slave数据传输结束,不再发数据(见下文第三节读字节部分)。

————————————————————————————————————————

二、数据位类型

1.设备地址(Device address)

也即从机地址(Slave address),包含地址位+读写位(Adress+R/W)。地址位支持7bit、10bit,为Slave地址。后跟着读写位,“1”表示读操作,“0”表示写操作。

下图为地址位7bit+读写位1bit。

2.字地址(Word address)

也即寄存器地址(Register address),一般跟在设备地址后边。读写数据前首先发送的都是字地址(寄存器),告知芯片接下来准备要操作的地址(寄存器)位置。

3.数据(Data)

准备写入到寄存器中,或从寄存器读取出来的数据内容。

————————————————————————————————————————

三、读写操作

1.写单个字节(Single Byte Write)

Device address:设备地址,相当于Slave地址。

Word address:字地址,相当于寄存器地址。将Data数据写入到该地址中。

Data:数据,要写入的数据内容。

2.写多个字节(Multiple Byte Write)

Data(n):数据,多个数据会自动偏移地址写入到寄存器中。

注:并不是所有Slave都支持写多个字节,具体查看用户手册。

3.读字节(Byte Read)

读数据稍有不同,需先用写操作告知芯片准备读取哪个字地址(寄存器)的内容。然后再Restart(前边无Stop,所以第二个Start为Restart)读操作读取数据。

Dummy write:伪写入,并未准备真正往寄存器写入数据,仅告知Slave要操作的寄存器。

Data n:数据,读取的数据。可以单个也可以连续多个,直到Master发送NACK告知Slave停止传输数据为止。

No ACK:非应答,当Master已经接收到足够多个寄存器的数据,发送NACK告知Slave停止传输。

————————————————————————————————————————

四、IIC锁死

IIC锁死主要表现为:SCL为高电平,SDA一直为低电平。

1.ACK异常锁死

在每个字节传输结束,第9个SCL拉低时,Slave回复ACK拉低SDA。此时Master异常复位,SCL被释放恢复成高电平。复位后Master检测到SDA一直为低电平,会认为有其他Master在占用总线而进行等待(实际上是Slave的ACK信号并未释放)。

2.Read Data异常锁死

在进行读操作,Slave输出数据时,且传输的数据位恰好是“0”(SDA为低电平)。此时Master异常复位释放SCL,复位后检测到SDA一直为低电平,则同样会导致IIC总线锁死。

  • 12
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值