2條雙向串行線向拆,一條數(shù)據(jù)線SDA,一條時鐘線SCL偏陪。為MSB先傳抢呆,即大端傳輸。
IIC標準速率為100kbit/s笛谦。
1.I2C位傳輸?? 數(shù)據(jù)傳輸:SCL為高電平時抱虐,SDA線若保持穩(wěn)定,那么SDA上是在傳輸數(shù)據(jù)bit
數(shù)據(jù)改變:SCL為低電平時揪罕,SDA線才能改變傳輸?shù)腷it
I2C開始和結(jié)束信號??
開始信號:SCL為高電平時梯码,SDA由高電平向低電平跳變,開始傳送數(shù)據(jù)好啰。
結(jié)束信號:SCL為高電平時轩娶,SDA由低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)
?I2C應(yīng)答信號
? Master每發(fā)送完8bit數(shù)據(jù)后等待Slave的ACK框往。?? 即在第9個clock鳄抒,若從IC發(fā)ACK,SDA會被拉低。?? 若沒有ACK许溅,SDA會被置高瓤鼻,這會引起Master發(fā)生RESTART或STOP流程
I2C寫流程
?I2C寫流程寫寄存器的標準流程為:
1.??? Master發(fā)起START
2.??? Master發(fā)送I2C addr(7bit)和w操作0(1bit),等待ACK
3.??? Slave發(fā)送ACK
4.??? Master發(fā)送reg addr(8bit)贤重,等待ACK
5.??? Slave發(fā)送ACK
6.???Master發(fā)送data(8bit)茬祷,即要寫入寄存器中的數(shù)據(jù),等待ACK
7.??? Slave發(fā)送ACK
8.??? 第6步和第7步可以重復多次并蝗,即順序?qū)懚鄠€寄存器
9.??? Master發(fā)起STOP
?1.5 I2C讀流程讀寄存器的標準流程為:
1.??? Master發(fā)送I2Caddr(7bit)和W操作1(1bit)祭犯,等待ACK
2.??? Slave發(fā)送ACK
3.??? Master發(fā)送reg addr(8bit),等待ACK
4.??? Slave發(fā)送ACK
5. ? ??Master發(fā)起START
6.??? Master發(fā)送I2C addr(7bit)和R操作1(1bit)滚停,等待ACK
7.??? Slave發(fā)送ACK
8.???Slave發(fā)送data(8bit)沃粗,即寄存器里的值
9.???Master發(fā)送ACK
10.??? 第8步和第9步可以重復多次,即順序讀多個寄存器
inout端口?
一個輸出端口在高阻態(tài)的時候键畴,其狀態(tài)是由于其相連的其他電路決定的最盅,可以將其看作是輸入。