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