I2C总线的SDA和SCL
串行數(shù)據(jù)線SDA——負(fù)責(zé)在設(shè)備間傳輸串行數(shù)據(jù)?
串行時鐘線SCL——負(fù)責(zé)產(chǎn)生同步時鐘脈沖
SCL\SDA是I2C總線的信號線。
I2C總線是共享的總線系統(tǒng),因此可以將多個I2C設(shè)備連接到該系統(tǒng)上。連接到I2C中總線上的設(shè)備既可以用作主設(shè)備,也可以用作從設(shè)備。
主設(shè)備負(fù)責(zé)控制通信,通過對數(shù)據(jù)傳輸進(jìn)行初始化/終止化,來發(fā)送數(shù)據(jù)并產(chǎn)生所需的同步時鐘脈沖。從設(shè)備則是等待來自主設(shè)備的命令,并響應(yīng)命令的接收。且同步時鐘信號只能由主設(shè)備產(chǎn)生。
當(dāng)總線空閑時,SDA和SCL都處于高電平狀態(tài),當(dāng)主機(jī)要和某個從機(jī)通訊時,會先發(fā)送一個開始條件,然后發(fā)送從機(jī)地址和讀寫控制位,接下來傳輸數(shù)據(jù)秘數(shù)據(jù)傳輸結(jié)束時,主機(jī)會發(fā)送停止條件。傳輸?shù)拿總€字節(jié)為8位,高位在前,低位在后。(SDA是雙向數(shù)據(jù)線,SCL是時鐘線SCL。在I2C總線上傳送數(shù)據(jù),首先送最高位,由主機(jī)發(fā)出啟動信號,SDA在SCL高電平期間由高電平跳變?yōu)榈碗娖?#xff0c;然后由主機(jī)發(fā)送一個字節(jié)的數(shù)據(jù)。數(shù)據(jù)傳送完畢,由主機(jī)發(fā)出停止信號,SDA在SCL高電平期間由低電平跳變?yōu)楦唠娖健?#xff09;
開始信號:SCL為高電平時,SDA由高電平向低電平跳變,開始傳送數(shù)據(jù),數(shù)據(jù)傳輸過程中只有在SCL線為低電平期間,SDA上的電平允許變化。
從機(jī)地址:主機(jī)發(fā)送的第一個字節(jié)為從機(jī)地址,高7位表示地址,最低位為R/W讀寫控制位,1表示讀操作,0表示寫操作。
應(yīng)答信號:每傳輸完成一個字節(jié)的數(shù)據(jù),接收方就需要回復(fù)一個ACK(acknowledge)。寫數(shù)據(jù)時由從機(jī)發(fā)送ACK,讀數(shù)據(jù)時由主機(jī)發(fā)送ACK。當(dāng)主機(jī)讀到最后一個字節(jié)時,可發(fā)送NACK然后跟結(jié)束信號。
數(shù)據(jù):從機(jī)地址發(fā)送完后可能會發(fā)送一些指令,依從機(jī)而定,然后開始傳輸數(shù)據(jù),由主機(jī)或者從機(jī)發(fā)送,每個數(shù)據(jù)為8位,數(shù)據(jù)的字節(jié)數(shù)沒有限制。在開始信號之后,SDA和SCL先都處于低電平,當(dāng)要傳輸數(shù)據(jù)時SDA先為高,之后SCL再跳變?yōu)楦?#xff0c;才可進(jìn)行數(shù)據(jù)的傳輸:
重復(fù)開始信號:在一次通信過程中,主機(jī)可能需要和不同的從機(jī)傳輸數(shù)據(jù)或者需要切換讀寫操作時,主機(jī)可以再發(fā)送一個開始信號。
結(jié)束信號:SCL為高電平時,SDA由低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)。
總結(jié)
以上是生活随笔為你收集整理的I2C总线的SDA和SCL的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 地铁与日本移动互联网
- 下一篇: 广东省科技进步奖二等奖!天翼物联NB-I