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