IIC协议 1:空闲状态 IIC总线共有SDA和SCL两根线,规定当这两根线都为高电平时为空闲状态 2:起始位和停止位 起始信号:SCL为高电平期间,SDA产生一个下降沿(高电平到低电平)为起始信号 停止位 :SCL为高电平期间,SDA产生一个上升沿(低电平到高电平)为停止位 3:数据位 IIC数据在传送的时候,当时钟信号SCL为低电平期间允许数据信号SDA进行变化,当SCL为高电平期间数据被采集(此时数据不能再变化) 4:ACK IIC期间有主从机之分,主机发送8bit的数据给从机,从机此时要产生一个ACK信号告诉主机,表示数据接收成功,发送方在发送了8bit的数据后在第9个时钟周期释放数据线,等待接收方的ACK,如果接收方反馈一个低电平则为有效应答。如果为高电平则为无效应答 接收器在第9个时钟脉冲之前的低电平期间将SDA拉低,并确保在SCL为高电平期间SDA一直为低电平 如果接收方为主控器(在读数据的时候),主控器在接收到最后一个字节后,发送NOACK告知被控发送器结束数据发送,然后主控器再发送一个停止信号 5:数据传送过程 IIC器件有读和写两个过程,这两个过程通过上述的数据位信号进行一位一位的传输,在写数据的过程中主控器要接收应答信号,在读数据的过程中主控器要输出应答信号 写数据和读数据都有相同前奏过程来确定此次操作的器件的设备地址以及寄存器地址 起始位+器件设备地址写(等待ack应答)+寄存器地址(等待ack应答) 写数据过程: 1:起始位+器件设备地址写(等待ack应答)+寄存器地址(等待ack应答) 2:发送要写入的数据(等待)
3:发送停止位
读数据过程: 1:起始位+器件设备地址写(等待ack应答)+寄存器地址(等待ack应答) 2:起始位+器件设备地址读(等待ack应答)+读取数据(回复ack应答)+最后一个字节回复noack +停止位
|