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