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