I2C 的核心内容
(请先去了解开漏输出,和I2C的物理层)
I2C协议层要求:I2C 总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。
起始:SCL为高,SDA为高到低
结束:SCL为高,SDA为低到高
应答:有着特定的电平信号
空闲:SCL和SDA都上拉
初始状态:就采用空闲。将SCL和SDA都上拉。
void IIC_init() //IIC初始化
{
SCL=1; //首先把时钟线拉高
delay_us(4);//延时函数
SDA=1; //在SCL为高的情况下把SDA拉高
delay_us(4); //延时函数
}
开始状态:
//产生IIC起始信号
//1.先拉高SDA,再拉高SCL,空闲状态
//2.拉低SDA
void IIC_Start() //启动信号
{
SDA=1; //确保SDA线为高电平
delay_us(5);
SCL=1; //确保SCL高电平
delay_us(5);
SDA=0; //在SCL为高时拉低SDA线,即为起始信号
delay_us(