一、IIC 总线概述:
IIC 即Inter-Integrated Circuit(集成电路总线)
I2C总线是PHLIPS公司推出的一种串行总线, I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。
每个接到I2C总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器。由总线上接收数据的器件则为接收器。
二、IIC 总线通信协议:
要掌握IIC的通信协议,需要掌握以下6个通信信号:
1.起始信号
2.终止信号
3.写数据
4.读数据
5.应答信号
6.非应答信号
起始和终止信号
SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。应答信号
IIC 总线协议规定,每传送一个字节数据后,都要有一个应答信号以确定数据传送是否被对方收到。应答信号由接受设备产生,在SCL为高电平期间,接受设备将SDA拉低为低电平,表示数据传输正确,产生应答(ACK)数据传送
I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。
根据AT24C02的芯片,可编写以下信号函数程序:
//1.起始信号 SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;
void IIC_Start(void)
{
SDA = 1;
SCL = 1;
delay_us(1); //15us >> 4.7us
SDA = 0;
delay_us(1);
SCL = 0;
}
//2.终止信号 SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。
void IIC_Stop(void)
{
SDA = 0;
SCL = 1;
delay_us(1); //15us >> 4.7us
SDA = 1;
delay_us(1);
SCL = 0;
}
vo