<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > TMS320VC5402通用I/O資源及其應(yīng)用

          TMS320VC5402通用I/O資源及其應(yīng)用

          ——
          作者:鄒志革,黃聲華 時(shí)間:2007-01-26 來源:《電子工程師》 收藏

          1 引 言

          本文引用地址:http://www.ex-cimer.com/article/21025.htm

            隨著dsp芯片及相關(guān)技術(shù)的發(fā)展,dsp得到了人們的日益關(guān)注和越來越廣泛的應(yīng)用。德州儀器(ti)公司推出的tms320vc54x系列具有高性能、低功耗等優(yōu)良性能,受到用戶的歡迎,已廣泛地應(yīng)用于有線和無線通訊、儀器儀表、雷達(dá)、圖像處理、工業(yè)控制、語音處理等領(lǐng)域。

            tms320vc5402是c5000系列中性價(jià)比較高的一顆芯片。獨(dú)特的6總線哈佛結(jié)構(gòu),使其能夠6條流水線同時(shí)工作,工作頻率達(dá)到100mhz。vc5402除了使用vc54x系列中常用的通用i/o口(generalpurposei/o,簡(jiǎn)稱gpio)外,還為用戶提供了多個(gè)可選的gpio:hpi-8和mcbsp。本文將介紹vc5402的gpio資源,并結(jié)合實(shí)例,介紹其典型用法。

          2 vc54x系列的gpio

            gpio,即指能為外圍設(shè)備提供信號(hào)輸出和從外圍設(shè)備輸入信號(hào)到dsp的引腳。這些管腳能通過軟件提供多用途的輸入和輸出信號(hào)。所有的vc54x系列提供兩個(gè)gpio:和xf。即分支控制輸入引腳,被用來監(jiān)視外圍設(shè)備的狀態(tài)。在時(shí)間要求苛刻的循環(huán)中,在不允許受干擾的情況下,可根據(jù)引腳的狀態(tài)(即外圍設(shè)備的狀態(tài))來決定分支轉(zhuǎn)移的去向,以替代中斷。如:

            xc2,bio

          表示如果引腳為低電平,則執(zhí)行后面的1條雙字或2條單字指令;否則,執(zhí)行2條nop指令。

            xf即外部標(biāo)志輸出引腳,它受軟件控制,可以用來向外部器件發(fā)信號(hào)。用ssbx指令可以將st1的xf位置1,xf腳輸出高電平。同理,rsbx指令使xf腳輸出低電平。

            bio和xf通常被用作異步通信時(shí)的握手信號(hào)。

          3 hpi-8用在gpio

            vc54x系列提供有一個(gè)主機(jī)接口(host portinterface,hpi)。hpi是8位并行口,用來與主設(shè)備或主處理器接口。vc5402的hpi-8還有特殊的功能,即,當(dāng)hpi-8功能被禁止時(shí)(在啟動(dòng)復(fù)位時(shí),讓hpiena腳為0),其8位雙向數(shù)據(jù)總線hd可以用作gpio。

            有兩個(gè)存儲(chǔ)器映像寄存器來控制hpi-8口的gpio功能,它們是:通用i/o控制寄存器(gpiocr)和通用i/o狀態(tài)寄存器(gpiosr)。gpiocr的各個(gè)位段的符號(hào)如圖1所示。

          該寄存器的tout1位是timer1的輸出使能位。當(dāng)hpi-8功能被禁止后,tout1位允許或禁止timer1從hint腳輸出。當(dāng)系統(tǒng)只有一個(gè)定時(shí)器時(shí),該位被保留。dir7~0控制8個(gè)i/o口的方向。當(dāng)dir7~0的某位置為1時(shí),gpiosr的相應(yīng)位的值輸出到該引腳;同理,當(dāng)某位為0時(shí),相應(yīng)引腳的邏輯電平被讀入到gpiosr的相應(yīng)位。注意,當(dāng)某個(gè)hd引腳用作輸入功能,對(duì)gpiosr相應(yīng)位的寫操作將不起作用。gpiosr各位的含義見圖2(高8位全部保留)。

          io7~0的某位為0,表示在相應(yīng)的hd引腳輸出低電平,或者相應(yīng)的hd引腳讀入的外部信號(hào)為低。io7~0的某位為1時(shí),表示在相應(yīng)的hd引腳輸出高電平,或者相應(yīng)的hd引腳讀入的外部信號(hào)為高。

          4 mcbsp用作gpio

            vc5402是vc54x系列中最早引入多通道緩沖串行口(mcbsp)的芯片。vc5402及以后的vc54x系列芯片所引入的mcbsp功能除了用作一般的bsp外,在兩種情況下,其部分串口管腳(clkx、fsx、dx、clkr、fsr、dr)還可以被用作gpio,這兩種情況是:(1)相關(guān)的串口處在復(fù)位狀態(tài),即,串口控制寄存器spcr〔1、2〕的(r/x)rst位為0;(2)相關(guān)的串口被允許用作gpio,即,管腳控制寄存器pcr的(r/x)ioen位置1。

            管腳控制寄存器(pcr)給出了mcbsp的管腳作為通用i/o口時(shí)的配置情況,如圖3所示。

          表1給出了具體的配置情況。從表中可以得知,當(dāng)fs(r/x)m=0時(shí),fs(r/x)選作輸入管腳。同理,當(dāng)fs(r/x)m=1時(shí),fs(r/x)選作輸出管腳。當(dāng)選作輸出時(shí),fs(r/x)p中儲(chǔ)存著將要輸出的值。選作輸入時(shí),fs(r/x)p變成只讀位,反映了該引腳信號(hào)的高低。clk(r/x)m和clk(r/x)p的工作情況類似于clk(r/x)。當(dāng)mcbsp中具有發(fā)送功能的部分引腳被選作gpio時(shí),pcr中的dx stat位的值被送到dx。通常,將dr用作輸入,輸入值將被保存在pcr中的dr stat位。

            因?yàn)閏lks通常用作mcbsp的輸入,將影響到輸入器和輸出器的配置。所以,為了將clks配置成通用輸入口,發(fā)送器和接收器都必須復(fù)位,而且保證(r/x)ioen=1。

          5 實(shí) 例

            在一個(gè)dsp系統(tǒng)中,“看門狗”電路是必不可少的部分。“看門狗”和dsp的聯(lián)絡(luò)信號(hào)通常由dsp的gpio口提供。比較常用的“看門狗”有max706和x25043。x25043有很好的vcc電壓監(jiān)控、可編程看門狗定時(shí)器功能,還有4k字節(jié)的串行e2prom。在x25043內(nèi)部,有一個(gè)狀態(tài)寄存器,控制該寄存器,就能對(duì)x25043的e2prom進(jìn)行讀或?qū)?,并?duì)看門狗超時(shí)周期進(jìn)行設(shè)置。圖4為dsp和x25043的接口電路。

          “看門狗”的工作原理是:如果允許看門狗定時(shí)器工作,且cs保持低電平的時(shí)間長(zhǎng)于看門狗超時(shí)周期,則reset變?yōu)榈碗娖剑琧s的下降沿將復(fù)位看門狗定時(shí)器。因此,將vc5402的外部輸出引腳xf和看門狗的cs相連。在vc5402的mcbsp用作其它用途及hpi功能未被使用時(shí),可以選用hd作為gpio,用于和看門狗通訊:設(shè)置x25043的寄存器、對(duì)x25043的e2prom寫操作和讀操作。軟件設(shè)計(jì)思想為:在主程序中的初始化之后,將xf腳拉低。在主程序的最后或者是某一個(gè)最重要的中斷子程序中將xf拉高。軟件

          6 結(jié)束語

          本文詳細(xì)介紹了tms320vc5402的通用i/o資源,并結(jié)合dsp的外圍電路——“看門狗”給出了這些gpio的一般使用方法。



          關(guān)鍵詞:

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();