《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 用單片機(jī)實現(xiàn)基于I2C串行總線的音頻處理系統(tǒng)
用單片機(jī)實現(xiàn)基于I2C串行總線的音頻處理系統(tǒng)
國外電子元器件
方劍鋒 陳文薌 關(guān)明杰
摘要: "/>用單片機(jī)實現(xiàn)基于I2C串行總線的音頻處理系統(tǒng)-單片機(jī)-電子工程世界網(wǎng)<linkhref="http://1.eewimg.cn/favicon.ico"rel="shortcuticon
Abstract:
Key words :

  目前,消費(fèi)類電子產(chǎn)品(如彩電、音響等)的功能多樣化使得控制電路變得更為復(fù)雜。而Philips公司推出的集成電路芯片間總線I2C" title="I2C">I2CBUS(Inter ICBUS)是目前眾多總線中最簡潔有效、使用也為廣泛的一種總線格式。I2C總線通常是以硬件來實現(xiàn)的,這就要求所選器件必須具有I2C總線接口,但目前廣泛使用的MCS-51系列單片機(jī)" title="單片機(jī)">單片機(jī)并不具備I2C總線的專用硬件部分。本文結(jié)合筆者采用單片機(jī)8031實現(xiàn)對具有I2C總線接口的立體聲音頻處理" title="音頻處理">音頻處理芯片TDA7313" title="TDA7313">TDA7313的控制,介紹了I2C總線以及基于I2C串行總線的單片機(jī)應(yīng)用系統(tǒng)的設(shè)計方法和程序。 

  1 I2C總線簡介

  1.1 I2C總線的組成

  I2C串行總線是用雙向數(shù)據(jù)線(SDA)和串行時鐘線(SCL)兩根信號線,在連接到該總線的器件之間傳送信息。它屬于多主控器總線,圖1所示是其組成框圖??偩€上的每個器件均可設(shè)置一個唯一地址,然后根據(jù)所設(shè)的功能進(jìn)行信息的發(fā)送或接收。除了作為發(fā)送器和接收器以外,在執(zhí)行數(shù)據(jù)傳輸時,總線的器件還可以設(shè)定為主控器和被控器。通常由主控器啟動總線上的數(shù)據(jù)傳輸,并產(chǎn)生數(shù)據(jù)傳輸所需的時鐘信號。而被其尋址的其它器件均為被控器,這意味著總線上可連接多個有控制總線的器件。 

組成框圖

  I2C總線上的數(shù)據(jù)傳輸率為100 kbit/s,快速方式下可達(dá)400 kbit/s。連接到總線上的器件數(shù)僅受400 pF的總線電容的限制。同時,為了避免總線信號的混亂,要求連接到總線上的各器件輸出端必須是集電極開路或漏極開路,以便產(chǎn)生“線與”功能。I2C總線上的SDA和SCL線都是雙向傳輸線,它們可通過一個電阻連接到正電源端,當(dāng)總線處于空閑狀態(tài)時,兩條線均為高電平。 

  1.2 I2C總線數(shù)據(jù)傳輸格式

  在I2C總線傳輸過程中,僅當(dāng)總線空閑(SCL線和SDA線均為高電平)時,數(shù)據(jù)傳送才能開始,此時總線上的任何器件均可以控制總線。圖2所示是兩種特定的開始和停止條件,其中當(dāng)SCL線為高電平且SDA線由高變低時為開始條件(S);而當(dāng)SCL線為高電平且SDA線由低變高時為結(jié)束條件(P)。在數(shù)據(jù)傳送過程中,當(dāng)SCL線為高電平時,SDA線必須是穩(wěn)定的高或低電平才能使數(shù)據(jù)有效。只有當(dāng)SCL線上的時鐘信號為低時,SDA線的狀態(tài)才能改變,且每位數(shù)據(jù)需一個時鐘脈沖。所有數(shù)據(jù)都是按字節(jié)發(fā)送的,每次發(fā)送的字節(jié)數(shù)不限。每發(fā)送完一個字節(jié),主控器釋放SDA線(呈高電平)并由受控器下拉SDA線,從而使SDA線為穩(wěn)定的低電平來作為有效應(yīng)答位以表示傳輸成功,此時主控器必須產(chǎn)生一個與此位相應(yīng)的額外時鐘脈沖。

兩種特定的開始和停止條件

  圖3為I2C 總線數(shù)據(jù)傳輸格式。其中第一部分為數(shù)據(jù)傳輸起始信號,即由此開始進(jìn)行數(shù)據(jù)傳送;第二部分為受控器地址,用來選擇向哪個受控器傳送數(shù)據(jù);第三部分為讀/寫控制位,用于指示受控器的工作方式,0表示寫,1表示讀;第四部分是被主控器選中的受控器向主控器回傳的確認(rèn)信號;第五部分是所傳送的數(shù)據(jù),每傳送一個字節(jié)數(shù)據(jù),都要求有一個應(yīng)答位;第六部分是數(shù)據(jù)傳輸?shù)慕Y(jié)束信號。 

I2C 總線數(shù)據(jù)傳輸格式

  每個具有I2C總線接口的受控器件都有唯一固定的地址,當(dāng)主控器發(fā)送數(shù)據(jù)時,I2C總線上掛接的受控器件都會將主控器發(fā)出的、位于起始信號后的8位地址信息與自己的地址進(jìn)行比較,如果兩者相同,則認(rèn)為該受控器件被選中,然后按照讀/寫位規(guī)定的工作方式接收或發(fā)送數(shù)據(jù)。 

  2 I2C總線在單片機(jī)中的實現(xiàn)

  本音頻處理系統(tǒng)中所使用的IC控制芯片為TDA7313,它是具有音量、高低音調(diào)的左右平衡及前后混頻調(diào)整的立體聲音頻數(shù)字處理器件,它的輸入通道可以選擇,并具有相應(yīng)的外部響度調(diào)整函數(shù)以及I2C串行總線接口,因此可廣泛應(yīng)用于汽車音響和高保真系統(tǒng)中。TDA7313與單片機(jī)8031的連線和基本的管腳定義如圖4所示。 

TDA7313與單片機(jī)8031的連線和基本的管腳定義

  由于單片機(jī)8031不具有I2C 總線硬件接口,因此只能通過編寫軟件產(chǎn)生串行時鐘信號。當(dāng)系統(tǒng)傳輸數(shù)據(jù)時,先由單片機(jī)給出一個啟始信號;接著送出器件TDA7313的7位地址及讀/寫控制位并等待應(yīng)答信號;當(dāng)收到應(yīng)答信號后,系統(tǒng)根據(jù)訪問要求進(jìn)行相應(yīng)操作。在實際操作過程中,一般都是通過CPU向TDA7313輸入一連串的特定數(shù)字命令來實現(xiàn)對整個系統(tǒng)的音頻處理,所以對TDA7313的操作主要是寫操作。 

 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。