I2C传输简概传输方式只要求两条总线:一条串行数据线SDA一条串行时钟线SCL。两条总线在传送过程中有三种信号:开始信号,结束信号和应答信号。开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据图解开始、结束信号:所以数据传输过程中,SCL为高电平时,SDA必须保持稳定,否则会判定为开始或结束。接发过程:1)主发从收:主START-主发地址-从ACK-(主发数据-从ACK(循环))-主STOP或主START启动下一次传输这一过程中,主控SCL线,从只在ACK时控SDA线,其他时刻主控SDA线。2)主收从发:主START-从发地址-主ACK-(从发数据-主ACK(循环))-接受至最后一个字节时,主NACK-主STOP或主START启动下一次传输附录:boolI2C_Start(void)//开始信号{SDA_H;SCL_H;I2C_delay();if(!SDA_read)returnFALSE;//SDA线为低电平则总线忙,退出SDA_L;//拉低SDA线(当SCL为高电平时,SDA由高电平向低电平跳变表示开始信号)I2C_delay();if(SDA_read)returnFALSE;//SDA线为高电平则总线出错,退出SDA_L;//数据为准备好时,拉低SCL线I2C_delay();returnTRUE;}voidI2C_Stop(void)//结束信号{SCL_L;I2C_delay();SDA_L;I2C_delay();SCL_H;//SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据I2C_delay();SDA_H;I2C_delay();}参考网址: