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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 一種通過SPI接口協(xié)議實(shí)現(xiàn)DSP與其它設(shè)備通信的方法

          一種通過SPI接口協(xié)議實(shí)現(xiàn)DSP與其它設(shè)備通信的方法

          作者: 時(shí)間:2011-07-05 來源:網(wǎng)絡(luò) 收藏

          介紹了,并著重介紹了TI公司生產(chǎn)的TMS320C5402 用于時(shí)的串口配置電路設(shè)計(jì)實(shí)例,最后給出了串口McBSP的配置程序。
          關(guān)鍵詞:多通道緩沖串行口,主,從,NECuPD780308,,

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


          1 引 言
            隨著信息技術(shù)革命的深入和計(jì)算機(jī)技術(shù)的飛速發(fā)展,技術(shù)也正以極快的速度應(yīng)用到科技和國(guó)民經(jīng)濟(jì)的各個(gè)領(lǐng)域。在很多工程開發(fā)處理中,往往要求單片DSP芯片與單片DSP芯片、多片DSP芯片以及處理芯片的,怎樣更高效、更便捷地通信,已成為廣大DSP應(yīng)用者必須首要解決的一個(gè)問題。
            本文根據(jù)筆者在工程應(yīng)用和調(diào)試TIDSPTMS320C5402與NECuPD780308單片機(jī)通信的經(jīng)驗(yàn),著重介紹并討論將C5402 DSP的多通道緩沖串行口McBSP(Multi-channel Buffered Serial Port)配置為SPI模式(即時(shí)鐘停止模式),DSP與單片處理器通信,并給出部分程序代碼,供讀者們參考。
          2 多通道緩沖串行口McBSP
            多通道緩沖串行口McBSP的功能是提供器件內(nèi)外數(shù)據(jù)串行交換。同以前的串口相比,McBSP串口具有相當(dāng)大的靈活性。表1給出了有關(guān)VC5402的McBSP管腳的說明。其中串口接收、發(fā)送時(shí)鐘和同步幀信號(hào),既可由外部提供,又可由內(nèi)部時(shí)鐘發(fā)生器提供,大大地提高了通信的靈活性。

          3 SPI:McBSP時(shí)鐘停止模式
            SPI協(xié)議是以主從方式工作的,有一個(gè)主設(shè)備和一個(gè)或多個(gè)從設(shè)備,包括以下4個(gè)信號(hào):串行數(shù)據(jù)輸入(也稱為主進(jìn)從出,或MISO);串行數(shù)據(jù)輸出(也稱為主出從進(jìn),或MOSI);串行移位時(shí)鐘(也稱為SCK);從使能信號(hào)(也稱為SS)。
          圖1為設(shè)備示意圖。

            主設(shè)備提供移位時(shí)鐘和從使能信號(hào)來控制信息的流動(dòng),從使能信號(hào)是一個(gè)可選的高低電平,它激活從設(shè)備(在沒有時(shí)鐘提供的情況下)的串行輸入和輸出。在沒有專門的從使能信號(hào)的情況下,主從設(shè)備之間的通信則由移位時(shí)鐘的有無來決定,在這種連接方式下,從設(shè)備必須自始至終保持激活狀態(tài),而且從設(shè)備只能是一個(gè),不能為多個(gè)。
            DSPVC5402提供的時(shí)鐘停止模式則可用于SPI協(xié)議通信中,當(dāng)McBSP被配置為時(shí)鐘停止模式時(shí),發(fā)送器和接收器是內(nèi)部同步的,即可將McBSP配置為一個(gè)SPI主或從設(shè)備。其中,可將發(fā)送數(shù)據(jù)幀時(shí)鐘(FSX)用作從使能(即SS),而發(fā)送數(shù)據(jù)位時(shí)鐘(CLKX)則用作SPI協(xié)議中的SCK,由于接收數(shù)據(jù)位時(shí)鐘(CLKR)和接收數(shù)據(jù)幀時(shí)鐘(FSR)在內(nèi)部與FSX和CLKX是相連的,所以該管腳不用于SPI模式。

            當(dāng)McBSP被配置作為一個(gè)主設(shè)備,傳送輸出信號(hào)(BDX)被用作SPI協(xié)議的MOSI信號(hào),接收輸入信號(hào)(BDR)就被用作MISO信號(hào)。圖2所示為McBSP用作主設(shè)備的SPI接口。
            同樣地,當(dāng)McBSP被配置作為一個(gè)從設(shè)備,BDX就被用作了MISO信號(hào),BDR就被用作了MOSI信號(hào)。圖3所示為McBSP用作從設(shè)備的SPI接口。
            DSPVC5402的McBSP被用于時(shí)鐘停止模式時(shí),寄存器SPCR1的CLKSTP位域和引腳配置寄存器的CLKXP位的配置見表2。


          4 McBSP作為SPI設(shè)備時(shí)的有關(guān)寄存器的配置
            為了能使讀者更好地掌握和了解當(dāng)McBSP作為SPI設(shè)備時(shí)的有關(guān)寄存器配置,筆者將以McBSP作為SPI從設(shè)備運(yùn)行為例,給讀者介紹有關(guān)McBSP的其它有關(guān)寄存器的配置,若McBSP作為SPI主設(shè)備,則相關(guān)配置相反即可。
            當(dāng)McBSP作為SPI從設(shè)備時(shí),主設(shè)備外部產(chǎn)生主時(shí)鐘。CLKX引腳和FSX引腳必須被設(shè)置為輸入。CLKX引腳和CLKR信號(hào)內(nèi)部連接,從而傳送和接收回路均由外部主時(shí)鐘計(jì)時(shí)(CLKX)。同時(shí),F(xiàn)SX引腳和FSR信號(hào)內(nèi)部連接,CLKR引腳和FSR引腳不再需要外部信號(hào)連接。將McBSP用作從設(shè)備的SPI接口的例子如圖3所示。
            盡管CLKX信號(hào)由主設(shè)備外部產(chǎn)生且與McBSP同步,McBSP的采樣率發(fā)生器必須可以啟動(dòng)正確的SPI從設(shè)備運(yùn)行。采樣率發(fā)生器應(yīng)被編為它的最大速率(CPU時(shí)鐘速率的一半)。內(nèi)部采樣率時(shí)鐘被用來同步McBSP邏輯和外部主時(shí)鐘及從使能信號(hào)。每次傳送,McBSP需要FSX輸入的從使能信號(hào)的上升沿。這就是說,在每次傳送的開始,主設(shè)備必須維護(hù)從使能信號(hào),在每次傳送完成后,消除從使能信號(hào)。在兩次傳送之間,從使能信號(hào)不能一直保持為高電平。對(duì)正確的SPI從設(shè)備運(yùn)行而言,McBSP的數(shù)據(jù)延遲參數(shù)必須設(shè)置為0,在這種運(yùn)行模式中,值1或2沒有定義。配置McBSP為從設(shè)備所需的寄存器位值列在表3中。

          霍爾傳感器相關(guān)文章:霍爾傳感器工作原理


          數(shù)字通信相關(guān)文章:數(shù)字通信原理


          通信相關(guān)文章:通信原理


          電度表相關(guān)文章:電度表原理


          負(fù)離子發(fā)生器相關(guān)文章:負(fù)離子發(fā)生器原理
          霍爾傳感器相關(guān)文章:霍爾傳感器原理
          離子色譜儀相關(guān)文章:離子色譜儀原理

          上一頁(yè) 1 2 下一頁(yè)

          評(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); })();