通信数量受限于地址空间和400Pf总线电容。
所有的数据传输过程中,SDA线的电平变化必须在SCL为低电平时进行,SDA线的电平在SCL线为高电平时要保持稳定。
I2C通讯协议软件模拟实现方法:
1、起使信号
1 void I2C_Start(){ 2 SDA_H; 3 delay(n); //电平切换时间 4 SCL_H; 5 delay(>4us); //初始状态必须保持4us以上 6 SDA_L; //在SCL为高时,拉低SDA线发送起始信号。 7 delay(>4.7us); 8 SCL_L; // 发完一位拉低SCL 9 }
2 、终止信号
void I2C_Stop(){ SCL_L; delay(n); //电平切换时间 SDA_L; delay(n); SCL_H; delay(>4us); SDA_H; delay(>4.7us); SCL_L; }
3、主机发送应答信号ACK
void I2C_Ack(){
SDA_Out(); SCL_L; delay(n); SDA_L; delay(n); SCL_H;
delay();
SCL_L; }