IIC(Inter-Intergrated Circuit)總線是一種由PHILIPS公司開發的兩線式串行總線。用于連接微控制器及其外圍設備。IIC只需兩根線SDA(數據線),SCL(時鐘)。IIC支持多主控,當然,在任何時間點上只能有一個主控,而SPI是一主多從。IIC各種被控制電路均并聯在這條總線上,每個模塊和電路都有唯一的地址。SPI是通過CS進行片選,有多少個SPI就要占用多少口。IIC總線在傳輸數據過程中有3個信號,它們分別是:開始信號,結束信號和應答信號。 IIC總線的硬件結構圖: IIC支持多主和主從工作方式,通常為主從工作方式。在主從工作方式中,系統中只有一個主器件(單片機),其它器件都是具有IIC總線的外圍從器件。在主從工作方式中,主器件啟動數據的發送(發出啟動信號),產生時鐘信號,發出停止信號。 開始信號:SCL為高電平,SDA由高電平向低電平跳變,開始傳送數據 結束信號:SCL為高電平,SDA由低電平向高電平跳變,結束傳送數據 應答信號:接受數據的IC在接受到8bit數據后,向發送數據的IC發送特定的低電平脈沖,表示已經接收到數據。CPU向受控單元發送一個信號后,等待受控單元發出一個應答信號,CPU接收到應答信號后,根據實際情況做出是否繼續傳送數據的判斷。若未收到應答信號,由判斷為受控單元出現故障。 這些信號中開始信號是必須的,結束信號和應答信號都可以不要。 IIC總線進行數據傳送時,時鐘信號為高電平期間,數據線上的數據必須保持穩定,只有在時鐘信號為低電平期間,數據線上的高電平或低電平狀態才允許變化。 IIC總線協議規定,每傳送一個字節數據后,都要有一個應答信號,以確定數據傳送是否被對方收到。應答信號由接受設備產生,在SCL信號為高電平期間,接受設備將SDA拉為低電平,表示數據傳輸正確,產生應答。 IIC總線的時序圖: 許多單片機并不具有IIC總線接口,如51單片機。 單片機模擬IIC總線通信: 啟動代碼: void start(){ SDA = 1; delay(); SCL = 1; delay(); SDA = 0; delay(); } 停止代碼: void stop(){ SDA = 0; delay(); SCL = 1; delay(); SDA = 1; delay(); } 李萬鵬 |