在學(xué)習(xí)嵌入式的過程當(dāng)中,大家會接觸到各種各樣的功能接口,IIC就是最常用的接口之一,本篇文章小編就給大家介紹一下IIC接口:
為了避免總線信號的混亂,要求各設(shè)備連接到總線的輸出端時必須是漏極開路(OD)輸出。設(shè)備上的串行數(shù)據(jù)線 SDA 接口電路應(yīng)該是雙向的,輸出電路用于向總線上發(fā)送數(shù)據(jù),輸入電路用于接收總線上的數(shù)據(jù)。而串行總線也應(yīng)該是雙向的,作為控制總線數(shù)據(jù)傳送的主機(jī),一方面要通過 SCL 輸出電路發(fā)送時鐘信號,另一方面還要檢測總線上的 SCL 電平,以決定什么時候發(fā)送下一個時鐘脈沖電平;作為接受主機(jī)命令的從機(jī),要按照總線上的 SCL 信號發(fā)出或接受 SDA 上的信號,也可以向 SCL 線發(fā)出低電平信號以延長總線時鐘信號周期??偩€空閑時,因各設(shè)備都是開漏輸出,上拉電阻使SDA 和 SCL 都保持高電平。
任一設(shè)備輸出的低電平都將使相應(yīng)的總線信號線變低,也就是說:各設(shè)備的 SDA 是“與”關(guān)系,SCL 也是“與”關(guān)系。在 IIC 總線上的數(shù)據(jù)傳輸速率可高達(dá) 100Kbit/s (cl<400),高速方式時在 400Kbit/s(cl<200)以上。另外,總線上允許連接的設(shè)備數(shù)以其電容量(cl)不超過 400PF 為限。當(dāng) SCL 保持“高”時,SDA 由“高”變?yōu)椤暗汀睘殚_始條件;當(dāng) SCL 保持“高”且 SDA 由“低”變?yōu)椤案摺睍r為停止條件。開始和停止條件均由主控制器產(chǎn)生,SDA 線上的數(shù)據(jù)在時鐘“高”期間必須是穩(wěn)定的,只有當(dāng) SCL 線上的時鐘信號為低時,數(shù)據(jù)線上的“高”或“低”狀態(tài)才可以改變。輸出到 SDA線上的每個字節(jié)必須是 8 位,每次傳輸?shù)淖止?jié)不受限制,但每個字節(jié)必須要有一個應(yīng)答 ACK。如果一個接收器件在完成其他功能(如一內(nèi)部中斷)前不能接收另一數(shù)據(jù)的完整字節(jié)時,它可以保持時鐘線 SCL 為低,以促使發(fā)送器進(jìn)入等待狀態(tài);當(dāng)接收器準(zhǔn)備好接收數(shù)據(jù)的其它字節(jié)并釋放時鐘 SCL 后,數(shù)據(jù)傳輸繼續(xù)進(jìn)行。
為了進(jìn)行通訊,每個接到 IIC 總線的設(shè)備都有一個唯一的地址,一般為7位,因此理論上一條 IIC總線最多可以掛載127個設(shè)備。如溫濕度傳感器為 0X38,光線傳感器為 0X29。上拉電阻(rp):阻值越大,速率越低,功耗越小。
IIC總線數(shù)據(jù)與時鐘信號上拉電阻保持設(shè)備“與”關(guān)系。