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