IIC(Inter-Intergrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线。用于衔接微控制器及其外围设备。IIC只需两根线SDA(数据线),SCL(时钟)。IIC支撑多主控,当然,在任何时刻点上只能有一个主控,而SPI是一主多从。IIC各种被控制电路均并联在这条总线上,每个模块和电路都有仅有的地址。SPI是经过CS进行片选,有多少个SPI就要占用多少口。IIC总线在传输数据进程中有3个信号,它们分别是:开端信号,完毕信号和应对信号。
IIC总线的硬件结构图:
IIC支撑多主和主从工作方式,一般为主从工作方式。在主从工作方式中,体系中只要一个主器材(单片机),其它器材都是具有IIC总线的外围从器材。在主从工作方式中,主器材发动数据的发送(宣布发动信号),发生时钟信号,宣布中止信号。 开端信号:SCL为高电平,SDA由高电平向低电平跳变,开端传送数据 完毕信号:SCL为高电平,SDA由低电平向高电平跳变,完毕传送数据 应对信号:承受数据的IC在承受到8bit数据后,向发送数据的IC发送特定的低电平脉冲,表明现已接收到数据。CPU向受控单元发送一个信号后,等候受控单元宣布一个应对信号,CPU接收到应对信号后,依据实际情况做出是否持续传送数据的判别。若未收到应对信号,由判别为受控单元呈现毛病。
这些信号中开端信号是有必要的,完毕信号和应对信号都可以不要。
IIC总线进行数据传送时,时钟信号为高电平期间,数据线上的数据有必要保持稳定,只要在时钟信号为低电平期间,数据线上的高电平或低电平状况才答应改变。
IIC总线协议规则,每传送一个字节数据后,都要有一个应对信号,以确认数据传送是否被对方收到。应对信号由承受设备发生,在SCL信号为高电平期间,承受设备将SDA拉为低电平,表明数据传输正确,发生应对。
IIC总线的时序图:
许多单片机并不具有IIC总线接口,如51单片机。
单片机模仿I%&&&&&%总线通讯:
发动代码: void start(){
SDA = 1;
delay();
SCL = 1;
delay();
SDA = 0;
delay();
}
中止代码:
void stop(){
SDA = 0;
delay();
SCL = 1;
delay();
SDA = 1;
delay();
}