色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > TMS320VC5410A I/O口的多種擴(kuò)展與I2C接口模擬

          TMS320VC5410A I/O口的多種擴(kuò)展與I2C接口模擬

          ——
          作者:兵器工業(yè)第58研究所 左顥睿 時間:2007-01-26 來源:《單片機(jī)與嵌入式系統(tǒng)應(yīng)用》 收藏

          ti公司的dsp芯片tms320vc5410a(簡稱5410a)是性能卓越的低功耗定點16位dsp,在嵌入式系統(tǒng)中有著廣泛應(yīng)用,5410a沒有專門的通用i/o引腳,僅有xf引腳可以作為單向輸出,/bio引腳作為單向輸入,同時5410a的片上外設(shè)沒有i2c接口,所以,當(dāng)5410a需要控制外圍芯片或與其他芯片進(jìn)行通信時(如i2c通信),必須擴(kuò)展通用i/o口,本文首先介紹5410通用i/o口的多種擴(kuò)展方式,然后針對每種擴(kuò)展方式實現(xiàn)與語音芯片tlv320aic23的i2c通信。

          1 通用i/o口的多種擴(kuò)展方式

          1.1 使用多通道緩沖串行接口擴(kuò)展通用 i/o口

          5410a具有3個多通道緩沖串行(簡稱mcbsp)接口,每個mcbsp接口有6個引腳,在通常情況下,可以靈活地與外圍設(shè)備進(jìn)行串行通信。在需要的時候,可以配置為通用i/o口。

          mcbsp的6個引腳分別是bclkr、bclkx、bfsr、bfsx、bdr和bdx,通過配置mcbsp的子寄存器pcr來實現(xiàn)通用i/o口的擴(kuò)展,下面對圖1所示的pcr寄存器的配置進(jìn)行闡述。

          本文引用地址:http://cafeforensic.com/article/21279.htm

          1)15位與16位。保留。

          2)第13位xioen和12位rioen,控制著mcbsp的功能,分別對應(yīng)著3個引腳,xioen控制bclkx、bfsx和bdx,rioen控制bclkr、bfsr和bdr,其中bdx只能作為單向輸出,bdr只能作為單向輸入,當(dāng)這兩位置0時,mcbsp作為普通的串行接口與外部通信,當(dāng)這兩位置1時,把mcbsp置為通用i/o口。xioen和rioen對引腳的控制是分開的,例如xioen=1,rioen=0時,bclkx、bfsx和bdx三個引腳是作為同月i/o口的,而bclkr、bfsr和bdr依然可以作為通用串行口的接收。

          3)11位-8位,控制著相應(yīng)引腳的輸入/輸出,配置為輸入時置0,配置為輸出時置1,例如bclkr引腳為輸出,則置第8位clkrm為1,bclkx引腳為輸入,則置第9位clkxm為0。

          4)第7位與6位,與通用i/o口無關(guān)。

          5)第5位lx_state,作為bdx引腳的輸出控制,置1輸出高電平,置0輸出低電平。

          6)第4位dr_state,表示bdr引腳的輸入狀態(tài),讀入1表示輸入高電平,讀入0表示輸入低電平。

          7)第3-0位,在輸出時控制著相應(yīng)引腳的高低電平,而作為輸入時,可以從對應(yīng)引腳讀出電平的高低狀態(tài),在這里要注意:在配置mcbsp為通用i/o口時,要首先停止串行接口的收發(fā),即配置spcr1中的rrst位為0,spcr2中的xrst位為0。

          1.2 使用主機(jī)接口(hpi)擴(kuò)展通用i/o口

          5410a具有增強(qiáng)型8位和16位主機(jī)接口(簡稱hpi),通常情況下用來與主機(jī)進(jìn)行高速率的數(shù)據(jù)通信,需要時可以禁止主機(jī)接口的功能,擴(kuò)展為通用i/o口。
          hpi接口有8位數(shù)據(jù)線hd0-h(huán)d7可以用來作為通用i/o口,通用i/o口的擴(kuò)展是通過兩個專用寄存器gpiocr(通用i/o口控制寄存器)和gpiosr(通用i/o口狀態(tài)寄存器)的控制來實現(xiàn)的。下面對圖2和圖3所示的兩個寄存器的配置進(jìn)行闡述。


          圖2和圖3中的dir7-dir0和hd7-h(huán)d0引腳一一對應(yīng),gpiocr用來控制通用i/o口的讀/寫方向。當(dāng)7-0中的某一位置0時,對應(yīng)的引腳配置為輸入,當(dāng)置為1時,對應(yīng)引腳配置為輸出,例如dir7置為0時,dh7作為輸入引腳,dir6置為1時,dh6作為輸出引腳,gpiosr在作為輸出時是用來控制i/o口的高低電平,置為1高電平,置0為低電平,在作為輸入時,相應(yīng)的位用來反應(yīng)對應(yīng)引腳上的電平狀態(tài)。在這里要注意:在配置hpi接口為通用i/o口時,在硬件設(shè)計上需要將5410a的第92引腳(hpiena)懸空或者接地,來禁止hpi接口。

          1.3 使用xio2接口擴(kuò)展通用i/o口

          5410具有片上增強(qiáng)型外部并行接口(xio2),該接口具有23位地址線(a22-a0)和16位數(shù)據(jù)線(d15-d0),通常該接口用來與sram或其他并行設(shè)備進(jìn)行通信,在需要的時候可以被用作通用i/o口來使用。作為i/o口使用時,使用portw合powtr指令來發(fā)出和讀入數(shù)據(jù)。在這里需要注意的是,23根地址線只能作為輸出引腳,16位數(shù)據(jù)線可以被用作通用雙向i/o引腳來使用。

          2 模擬i2c接口與tlv320aic23的通信

          2.1 i2c接口和tlv320aic23簡介

          i2c(inter-integrated circuit)總線是一種由philips公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備。i2c總線是由數(shù)據(jù)線sda和時鐘scl構(gòu)成的串行總線,可發(fā)送和接收數(shù)據(jù),在cpu與被控ic之間,ic與ic之間進(jìn)行雙向傳送。各種被控制電路均并聯(lián)在這條總線上,但就象電話機(jī)一樣只有撥通各自的號碼才能工作,所以每個電路和模塊都有唯一的地址。i2c總線主要的優(yōu)點是其簡單性和有效性,由于接口直接在組件之上,因此i2c總線占用的空間非常小,減少了電路板的空間和芯片引腳的數(shù)量,降低了互聯(lián)成本,總線的長度可高達(dá)25英尺,i2c總線的另一個優(yōu)點是:支持多主控(multimastering),任何能夠進(jìn)行發(fā)送和接收的設(shè)備都可以成為主總線,圖4給出了與i2c接口通信的數(shù)據(jù)流程。有關(guān)i2c總線的詳細(xì)資料請查閱參考文獻(xiàn)[1]。

          tlv320aic23(簡稱aic23)是ti公司推出的一款高性能的立體聲音頻編/解碼芯片,可以在8-96khz的頻率范圍內(nèi)提供16位、20位、24位和32位的采樣,adc和dac的輸出信噪比可以分別達(dá)到90db和100db;具有很低的功耗,回放模式下功率僅為23mw,省電模式下更是小于15μw,因此aic23是一款非常理想的音頻模擬i/o器件,可以很好地應(yīng)用在數(shù)字音頻領(lǐng)域,有關(guān)aic23的詳細(xì)資料請查閱參考文獻(xiàn)[2],aic23的配置有spi和i2c兩種方式,這里介紹以通用i/o口模擬i2c通信來配置aic23。aic23的i2c時序圖如圖5所示。

          2.2 用mcbsp接口作為通用i/o模擬i2c接口

          使用mcbsp和aic23的i2c接口的原理如圖6所示,在這里使用5410a的mcbsp1的bclkx1和bfsx1引腳與aic23的sclk和sdin引腳連接。bclkx1作為i2c的時鐘,bfsx1作為i2c的數(shù)據(jù)線。需要注意的是,必須把aic23的mode引腳接地。才能選中aic23的i2c模式;而且當(dāng)cs引腳為低電平時,aic23的i2c地址為0011010。在3種接口方式中,5410a都作為i2c總線上的主設(shè)備,aic23作為i2c總線上的從設(shè)備。

          使用mcbsp端口擴(kuò)展通用i/o口時,每次都要先寫入pcr寄存器的入口地址0eh,然后才能操作pcr寄存器。

          2.3 使用hpi接口作為通用i/o模擬i2c接口

          使用hpi接口和aic23的i2c接口的原理如圖7所示,在這里使用5410a的hd0和hd1引腳與aic23的sclk和sdin引腳連接,hd1作為i2c的時鐘,hd0作為i2c的數(shù)據(jù)線,要注意的是,必須把5410a的hpiena引腳接地,才能將hpi端口作為通用i/o口使用。

          使用hpi端口擴(kuò)展通用i/o口時,首先要配置控制寄存器確定端口的輸入/輸出方式,然后再操作數(shù)據(jù)寄存器。

          2.4 使用xio2接口作為通用i/o模擬i2c接口

          使用xi02接口和aic23的i2c接口的原理如圖8所示,在這里使用5410a的a0和d0引腳與aic23的sclk和sdin引腳連接,a0作為i2c的時鐘,d0作為i2c的數(shù)據(jù)線。需要注意的是:5410a的a0引腳只能作為輸出,在這種情況下,5410a只能作為i2c總線上的主設(shè)備。

          2.5 三種擴(kuò)展方法的比較

          上述介紹的3種方法中,使用mcbsp接口來擴(kuò)展通用i/o口,有配置靈活,收發(fā)端口可以獨立操作,最多4個引腳(bclkr、bclkx、bfsr和bfsx)可以作為雙向i/o口的優(yōu)點。但是從程序代碼的長度也可以看到,編程比較煩瑣,而且引腳數(shù)較少,使用起來不太方便,使用hpi接口來擴(kuò)展通用i/o口,由于有專用的寄存器來控制通用i/o口擴(kuò)展,具有配置靈活控制方便的優(yōu)點,而且全部8個引腳都可以作為雙向i/o口使用,但是hpi接口作為通用i/o口后,就不再具有hpi功能,如果i/o引腳需要不多,則會造成資源的浪費,而且在某些dsp芯片(如tms320vc5410)上不支持hpi作為通用i/o口使用。使用xio2接口擴(kuò)展通用i/o口,具有引腳多(有38個引腳,)操作方便的優(yōu)點,但是xio2接口一般都是和sram或其他并行設(shè)備進(jìn)行通信使用,復(fù)用xio2接口作通用i/o口時要格外謹(jǐn)慎,而且作為i/o口時地址線只能單向輸出,應(yīng)用起來具有局限性,所以在擴(kuò)展通用i/o口的時候,需要根據(jù)系統(tǒng)的需要選擇擴(kuò)展的方式。

          結(jié)語

          ti公司的c5000系列dsp多都沒有專用的通用i/o引腳,本文介紹的3種方法可以有效地擴(kuò)展dsp的通用i/o口,在設(shè)計時可以靈活地選擇擴(kuò)展方式,其中hpi擴(kuò)展方式適用于支持?jǐn)U展功能的芯片,mcbsp擴(kuò)展方式和xio2擴(kuò)展方式適用于大多數(shù)c5000系列芯片,使用這些方法,可以省掉外圍的控制電路和芯片,降低系統(tǒng)成本和功耗,具有較高的實用價值。



          關(guān)鍵詞:

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉