目前,消費類電子產品(如彩電、音響等)的功能多樣化使得控制電路變得更為復雜。而Philips公司推出的集成電路芯片間總線I2CBUS(Inter ICBUS)是目前眾多總線中最簡潔有效、使用也為廣泛的一種總線格式。I2C總線通常是以硬件來實現的,這就要求所選器件必須具有I2C總線接口,但目前廣泛使用的MCS-51系列單片機并不具備I2C總線的專用硬件部分。本文結合筆者采用單片機8031實現對具有I2C總線接口的立體聲音頻處理芯片TDA7313的控制,介紹了I2C總線以及基于I2C串行總線的單片機應用系統的設計方法和程序。 1 I2C總線簡介 1.1 I2C總線的組成 I2C串行總線是用雙向數據線(SDA)和串行時鐘線(SCL)兩根信號線,在連接到該總線的器件之間傳送信息。它屬于多主控器總線,圖1所示是其組成框圖�?偩€上的每個器件均可設置一個唯一地址,然后根據所設的功能進行信息的發送或接收。除了作為發送器和接收器以外,在執行數據傳輸時,總線的器件還可以設定為主控器和被控器。通常由主控器啟動總線上的數據傳輸,并產生數據傳輸所需的時鐘信號。而被其尋址的其它器件均為被控器,這意味著總線上可連接多個有控制總線的器件。 ![]() I2C總線上的數據傳輸率為100 kbit/s,快速方式下可達400 kbit/s。連接到總線上的器件數僅受400 pF的總線電容的限制。同時,為了避免總線信號的混亂,要求連接到總線上的各器件輸出端必須是集電極開路或漏極開路,以便產生“線與”功能。I2C總線上的SDA和SCL線都是雙向傳輸線,它們可通過一個電阻連接到正電源端,當總線處于空閑狀態時,兩條線均為高電平。 1.2 I2C總線數據傳輸格式 在I2C總線傳輸過程中,僅當總線空閑(SCL線和SDA線均為高電平)時,數據傳送才能開始,此時總線上的任何器件均可以控制總線。圖2所示是兩種特定的開始和停止條件,其中當SCL線為高電平且SDA線由高變低時為開始條件(S);而當SCL線為高電平且SDA線由低變高時為結束條件(P)。在數據傳送過程中,當SCL線為高電平時,SDA線必須是穩定的高或低電平才能使數據有效。只有當SCL線上的時鐘信號為低時,SDA線的狀態才能改變,且每位數據需一個時鐘脈沖。所有數據都是按字節發送的,每次發送的字節數不限。每發送完一個字節,主控器釋放SDA線(呈高電平)并由受控器下拉SDA線,從而使SDA線為穩定的低電平來作為有效應答位以表示傳輸成功,此時主控器必須產生一個與此位相應的額外時鐘脈沖。 圖3為I2C 總線數據傳輸格式。其中第一部分為數據傳輸起始信號,即由此開始進行數據傳送;第二部分為受控器地址,用來選擇向哪個受控器傳送數據;第三部分為讀/寫控制位,用于指示受控器的工作方式,0表示寫,1表示讀;第四部分是被主控器選中的受控器向主控器回傳的確認信號;第五部分是所傳送的數據,每傳送一個字節數據,都要求有一個應答位;第六部分是數據傳輸的結束信號。 每個具有I2C總線接口的受控器件都有唯一固定的地址,當主控器發送數據時,I2C總線上掛接的受控器件都會將主控器發出的、位于起始信號后的8位地址信息與自己的地址進行比較,如果兩者相同,則認為該受控器件被選中,然后按照讀/寫位規定的工作方式接收或發送數據。 2 I2C總線在單片機中的實現 本音頻處理系統中所使用的IC控制芯片為TDA7313,它是具有音量、高低音調的左右平衡及前后混頻調整的立體聲音頻數字處理器件,它的輸入通道可以選擇,并具有相應的外部響度調整函數以及I2C串行總線接口,因此可廣泛應用于汽車音響和高保真系統中。TDA7313與單片機8031的連線和基本的管腳定義如圖4所示。 由于單片機8031不具有I2C 總線硬件接口,因此只能通過編寫軟件產生串行時鐘信號。當系統傳輸數據時,先由單片機給出一個啟始信號;接著送出器件TDA7313的7位地址及讀/寫控制位并等待應答信號;當收到應答信號后,系統根據訪問要求進行相應操作。在實際操作過程中,一般都是通過CPU向TDA7313輸入一連串的特定數字命令來實現對整個系統的音頻處理,所以對TDA7313的操作主要是寫操作。 |