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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > AVR和TMS320VC5402的HPI接口通信設計

          AVR和TMS320VC5402的HPI接口通信設計

          作者: 時間:2012-03-06 來源:網絡 收藏

          1.引言

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

          (簡稱VC5402)是TI公司的DSP處理器,具有高級的數(shù)據(jù)處理結構和豐富的片內資源。但是VC5402 DSP內部不具有可編程的非易失片內存儲器,所以為了保存程序代碼和參數(shù)表,一般情況下要外擴一片存儲器。VC5402可用的通用輸入輸出口(I/O port)少,軟件上對I/O口的控制不靈活,沒有對I/O口按位控制的指令,且具有流水線延遲。多不具有通用的如UART,CAN總線等,對控制的支持功能較少。(Advanced RISC Architecture)單片機是ATMEL公司的flash型單片機,廣泛應用于數(shù)據(jù)處理和控制領域,具有豐富的片內資源和靈活的接口形式。片內往往集成了幾十kB乃至幾百kB的flash存儲器,每個端口幾乎都可以通過軟件設置為通用的I/O口和具有特殊功能的端口。將單片機和VC5402處理器相結合,發(fā)揮各自的優(yōu)點將是一個很好的方案。本文詳細描述了型單片機ATMEL64L和VC5402的接口的硬件原理和軟件構架,同時詳細闡述了VC5402 形式的bootloader方法及AVR實現(xiàn)方法。

          2. 硬件設計原理

          2.1. VC5402的接口

          VC5402的HPI接口是一個增強版的8位并行的HPI接口簡稱為HPI-8[1]。在 HPI-8接口中VC5402是從機。主機可以訪問VC5402中位于0x60~0x3FFF存儲器空間的片內存儲器,這一區(qū)域是VC5402用戶可用的所有的片內存儲器資源。主機通過兩個寄存器:地址寄存器(HPIA)和數(shù)據(jù)寄存器(HPID)訪問VC5402內部的存儲器。還有一個控制寄存器(HPIC)包含有控制和狀態(tài)信息。HCNTL[0..1]是HPIA、HPID和HPIC的選址信號。同時,VC5402對 HCNTL[0..1]=“01”設置了特殊的訪問模式以加快主機訪問片內存儲器的速度。此時主機讀寫HPID的內容不用每次設置HPIA,當主機讀 HPID時VC5402將當前HPIA所指出的片內存儲器的數(shù)據(jù)傳送到HPID寄存器,同時HPIA的內容減1,當主機寫HPID時DSP先將當前 HPIA的內容加1,然后由此時HPIA所指出的片內存儲器的數(shù)據(jù)傳送到HPID寄存器。由此可見此種方式比較適合于主機訪問DSP內部的連續(xù)存儲器空間。由于DSP內部是按著16位的數(shù)據(jù)進行組織,所以主機通過8位的HPI口進行讀寫操作都必須由兩次操作組成,在兩次操作中由HBIL信號標明高低位字節(jié)。

          2.2. ATMEL64L簡介

          AVR單片機是ATMEL公司的8位高性能的低功耗微控制器。具有高級的精簡指令集結構,絕大多數(shù)指令都是單周期指令,執(zhí)行速度快。ATMEL64L是 Atmega103的升級版,具有64k字節(jié)在線可編程的flash存儲器,可用于存儲程序和固定的數(shù)據(jù)。具有2k字節(jié)的EEPROM,位于數(shù)據(jù)區(qū),可用于保存參數(shù)表。具有4k字節(jié)的SRAM,為動態(tài)數(shù)據(jù)結構的存儲建立了可能。豐富的指令集、大容量而多樣的存儲器結構增加了ATMEL64L程序設計的靈活性。另外ATMEL64L還具有豐富的片內外設,諸如:USART、SPI、定時器/計數(shù)器、PWM通道、在片的模擬比較器等,提供了豐富的及控制資源。

          2.3. 硬件設計實現(xiàn)

          ATMEL64L和的HPI-8接口的硬件設計關鍵在于實現(xiàn)HPI-8接口的邏輯時序。我們研究ATMEL64L外部數(shù)據(jù)空間的讀寫時序[2]和HPI-8接口時序[1]發(fā)現(xiàn):AVR的ALE信號在下降沿鎖存低8位地址信號(DA7:0),而HAS信號也是在下降沿鎖存HCNTL[0..1]、HBIL和HRW信號。在 AVR的WR信號的上升沿數(shù)據(jù)總線上的數(shù)據(jù)DA7:0已處于有效狀態(tài),在RD信號的上升沿來臨時數(shù)據(jù)總線的數(shù)據(jù)DA7:0必須處于有效狀態(tài),同時HPI- 8的兩個數(shù)據(jù)存儲信號HDS1和HDS2均是在上升沿將相應的寄存器內容設置到HD[7..0]上或是將HD[7..0]的數(shù)據(jù)鎖存到相應的寄存器。由此可見HPI-8的重要控制線均可以和AVR相應的控制線直接相連而不需要其他邏輯電路。設計的電路原理圖見圖1。

          36.gif
          圖1 電路原理圖

          當DSP退出復位狀態(tài)后,30個有效時鐘周期內觸發(fā)了一個有效的DSP中斷2,則DSP將僅進入HPI的 bootloader加載方式。原理圖中將HINT引腳和DSP INT2引腳直接相連就是為了DSP復位后實時的觸發(fā)DSP INT2中斷。VC5402通過ATMEL64L的INT2中斷申請加載DSP程序

          3.HPI bootloader方式的實現(xiàn)

          3.1. DSP bootloader方式簡介

          DSP的bootloader模式就是將DSP的程序代碼和參數(shù)表由存儲位置移動到運行位置。之所以采用這一方式主要出于以下幾方面的考慮:

          1.DSP系統(tǒng)的運行速度很快,如果程序代碼存儲在訪問速度較慢的非易失存儲器,將嚴重影響數(shù)據(jù)處理的速度。為提高效率有必要將程序代碼移動到快速的存儲空間[3]。

          2.將程序代碼存儲位置和運行位置分開將有利于軟件的在線升級。

          VC5402的片內ROM存儲器0xF800~0xFBFF中有TI公司固化的bootloader程序[3][4]。當VC5402處于微計算機模式時,其復位后首先執(zhí)行bootloader程序。Bootloader程序依次掃描各種加載方式,當某一種方式滿足時,程序停止掃描,開始以此種方式加載DSP程序。這里我只介紹HPI方式的bootloader,其他方式的bootloader加載方法請參考[5-7]。當DSP查詢到有INT2中斷發(fā)生時就進入HPI方式的bootloader,清零0x007F存儲器單元,設置HINT信號向主機發(fā)送中斷請求。查詢 0x007F單元的內容是否為零,當不為零時表明DSP程序加載完畢。將0x007F單元的內容作為程序的入口地址開始執(zhí)行加載的DSP程序。

          3.2.HPI bootloader方式的軟件實現(xiàn)框架

          通過CCS將DSP源程序編譯連接成COFF文件格式得到.out文件。然后,由.out文件獲得DSP代碼的二進制文件。在AVR的C語言編輯環(huán)境ICCAVR V6.30C中采用下述方法將DSP的代碼數(shù)據(jù)配置到AVR flash空間。要注意const關鍵字使用。

          /* dsp vector section data. start address = 0x1000, length = 0x78 */
          const unsigned int vector[120]={0xF073,0x3000,…,0xF495};

          當DSP進入HPI Bootloader方式時,AVR的外部中斷2產生。AVR響應外部中斷2傳輸完相應的數(shù)據(jù)段到DSP對應的片內存儲器后要撤銷DSP的中斷申請。軟件框架如下:


          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();