IIC详解
IIC:Inter-Integrated Circuit (内部集成电路总线)
IIC数据线是双向的
· 主机发送数据到7位地址从机的时序图:
起始信号:在无数据通信时,IIC总线的SCL和SDA都是高电平;当主机要发送数据时,SDA在SCL为高电平时拉低发送起始信号
从机地址:而后,主机在SDA上发出从机的7位地址(高位在前、低位在后)。这里只是以7位地址从设备为例,目前IIC总线支持7位地址和10位地址两种设备
写标志:起始信号后的首字节的位(第8位)是读/写信号,其中0表示写数据到从机、1表示由从机读数据
应答信号:当从机接收到主机发出的从机地址后,与自己的地址做比较,若发现呼叫的是自己,则在SCL的第9个时钟信号时拉低SDA,以表示应答(ACK)
数据传输:主机收到应答信号后,接下来发送要传输的数据给从机,每次从机收到数据后,发送一个应答信号确认收到数据。
停止信号:数据发送完成之后,主机发出停止信号,告诉从机数据通信结束。
· 主机从7位地址从机读取数据的时序图:
起始信号 → 从机地址 → 读标志"1" → 从机应答 → 从机发送数据 →主机应答 → … →从机发送数据 → 主机无应答 → 主机发送停止信号
· 完整的时序图:
电气特性:
· 起始位:当SCL=1 时,SDA上有下降沿
· 终止位:当SCL=1 时,SDA上有上升沿
起始位之后总线被认为忙,即有数据在传输。
· SCL =1 时,SDA的数据必须保持稳定,否则由于起始位和终止位的特性,SDA上数据发生改变将被识别成起始位或终止位。
· SCL=0 时,SDA上的数据才允许改变
停止位之后总线被认为闲,空闲状态时SDA和SCL都为高电平。
当一个字节发送或接收完毕需要CPU干预的时候,SCL一直保持低电平
起始位和终止位都是主设备产生的,主设备为数据传输产生时钟信号:
主设备在传输每个数据位时都会产生一个时钟脉冲