串行通讯 -- IIC通讯原理
前言
I2C是最常見的串行通訊,廣泛應用于芯片之間通訊。常見的有EEPROM,溫度傳感器,觸摸屏等。本文力求簡單明了把I2C通訊協議說清楚。后面文章會舉一些I2C器件示例,讓大家更深入理解I2C。
- I2C通訊規則
- 通訊說明
通訊的目的是主機把一個數據(8bit)傳給從機或者讀從機的一個數據。數據是一個bit一個bit傳輸,那么哪個是通信開始的第一個比特?I2C協議規定了一個起始信號。
起始信號:SCL高電平時,主機控制SDA從高->低。
? ??
主機發送給從機一個字節:
開始信號后,主機拉低SCL電平,然后主機輸出bit7的SDA電平(bit7==1,SDA輸出高,bit7==0,SDA輸出低)。
主機拉高SCL電平,此時從機會檢測SDA電平,從機就知道主機發送的bit7是0還是1?bit7發送完成。
主機再次拉低SCL電平,然后主機輸出bit6的SDA電平(bit6==1,SDA輸出高,bit6==0,SDA輸出低)。
主機再次拉高SCL電平,此時從機會檢測SDA電平,從機就知道主機發送的bit6是0還是1?bit6發送完成。
Bit5-bit0一樣發送。
當發送完成bit0后,需要一個從機的應答信號。
從機應答信號:主機再次拉低SCL,此時SDA線主機釋放(IO輸入模式),如果從機正確收到了數據,從機拉低SDA電平,表示收到數據正確。如果不正確,從機不會拉低SDA線,SDA線是高電平。
主機拉高SCL線,然后檢測SDA線電平,如果是低表示從機應答正確,繼續發送下一個字節數據,如果SDA高,從機應答不正確,結束通訊。
?????????結束信號:SCL高電平時,SDA從低->高。
????????總結:
????????1、虛線代表從機控制SDA總線,實線表示主機控制總線。
????????2、SCL高電平時,SDA電平變化代表開始信號或結束信號。所以在傳輸數據時,數據只能? ? ? ? ? ? 在SCL低電平時改變。
????????3、SCL上升沿后,從機讀取SDA電平,讀取1bit數據。
????????4、第9個bit是從機應答(ACK)信號,如果是低說明從機正確接收(ACK),如果是高說明沒? ? ? ? ? 有正確接收或從機故障(NAK)。
總結
以上是生活随笔為你收集整理的串行通讯 -- IIC通讯原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: maya基础1
- 下一篇: Paddle平台中搭建CNN模型,在训练