I2C總線與串口
I2C總線是一種串行數據總線,只有二根信號線,一根是雙向的數據線SDA,另一根是時鐘線SCL.在
I2C總線上傳送的一個數據字節(jié)由八位組成.總線對每次傳送的字節(jié)數沒有限制,但每個字節(jié)后必須跟一位應答位.數據傳送首先傳送最高位(MSB).首先由主機發(fā)出啟動信號“S”(SDA在SCL高電平期間由高電平跳變?yōu)榈碗娖?,然后由主機發(fā)送一個字節(jié)的數據.啟動信號后的第一個字節(jié)數據具有特殊含義:高七位是從機的地址,第八位是傳送方向位,0表示主機發(fā)送數據(寫),1表示主機接收數據(讀).被尋址到的從機設備按傳送方向位設置為對應工作方式.標準I2C總線的設備都有一個七位地址,所有連接在I2C總線上的設備都接收啟動信號后的第一個字節(jié),并將接收到的地址與自己的地址進行比較,如果地址相符則為主機要尋訪的從機,應在第九位答時鐘脈沖時向SDA線送出低電平作為應答.除了第一字節(jié)是通用呼叫地址或十位從機地址之外,第二字節(jié)開始即數據字節(jié).數據傳送完畢,由主機發(fā)出停止信號“P”(SDA在SCL高電平期間由低電平跳變?yōu)楦唠娖?.
個人覺得I2C總線思想有點像USB總線,都是廣播式的.
串口是一根線傳送數據,一根線接收數據
I2C是一根線是時鐘線,一根線是數據線,數據線是雙向的,可以接收,也可以發(fā)送.
I2C接口是"器件間"接口,是在一塊板子之內數據的,RS232串行接口是"設備間"接口,更多的是用于兩臺設備之間傳輸數據.從傳輸數據的距離來說,應該是RS232傳輸的距離較遠,但二者具體差別多少,我沒有做過專門的試驗.
有很大方式的不同.譬如i2c是帶地址的通訊,支持多方通訊,串口就搞不定;兩者通訊的機制原理也不同;另外速度上I2C相對會快一些,好像i2c是philips發(fā)明的,目的就是解決速度的瓶頸.網上有很多資料,自己搜一下吧!
i2c是同步串行傳輸,RS232(或曰UART,通用異步收發(fā)器)是異步串行傳輸.
同步方式必須有一根時鐘線連接傳輸的兩端,i2c里的scl就是這根時鐘線.因為同步方式不用花費額外的開銷對其數據,所以其傳輸速率一般比異步方式高





