自然界的语言存在着不同的形式,中国人说汉语、英国人说英语、西班牙人说西班牙语…当然这些语言不是与生俱来的,而是为了方便交流而产生。语言可以说许许多多,但只有方便传播、方便使用、方便交流的语言才会生存下来。而IIC(Inter-Integrated Circuit)就是为了集成芯片而产生的语言,字面上的意思是集成电路之间,它其实是I²C Bus简称,所以中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构。
1.Why?为什么用IIC进行集成电路之间的交流?
1)硬件电路简单,仅仅需要两根数据线SCL和SDA
2)工作与主/从模式、数据可双向传输、可挂接多个从设备
3)稳定的数据传输(每个器件有相应的地址不会发错信息,根据时钟节奏传输每个bit)
总结:IIC就是因为简单、简单、简单才这么火热!但传输速度不及其他总线方式(标准模式下100kbit/s)。
2.What?什么地方用到IIC来信息交流?
现在许多单片机,都支持硬件IIC,但没有软件模拟稳定。还有许多模块,传感器也都支持IIC(例如:存储器AT24C02、温度传感器DS18B20、陀螺仪MPU6050等等),所以有很大必要去学习IIC通信,对将来的开发有很大帮助!
3.How?怎样去实现IIC通信?
根据IIC时序图可分为四步走,分别是:起始信号、数据信号、应答信号、终止信号。
1)起始信号
时钟线SCL为高电平期间,数据线SDA来一个下降沿。
2)终止信号
时钟线SCL为高电平期间,数据线SDA来一个上升沿。
void i2c_Start(void)
{
SDA_OUTPUT_Mode();
SCL_1; //通信状态
SDA_0;Delay1(100);
SDA_1;Delay1(500);//SDA 的下降沿表示开始通信
SDA_0;Delay1(500);
SCL_0;
}
void i2c_Stop(