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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > TMS320F240與外圍器件的SPI接口方案

          TMS320F240與外圍器件的SPI接口方案

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

            1 前言

            數(shù)字信號(hào)處理器的誕生,揭開了PC通信與消費(fèi)電子市場的新紀(jì)元。筆者這次重點(diǎn)介紹在研發(fā)過程中涉及到的與外圍器件的設(shè)計(jì)。

            2 結(jié)構(gòu)和特點(diǎn)

            是TI公司在單一芯片上集成一個(gè)DSP內(nèi)核和各種外設(shè)器件,從而制造出面向各種工程應(yīng)用的DSP方案。

            TMS320C240和作為第一個(gè)數(shù)字電機(jī)控制器的專用DSP,TMS320C240和TMS320F240確立了單片數(shù)字電機(jī)控制器的標(biāo)準(zhǔn),可支持電機(jī)的轉(zhuǎn)向、指令的產(chǎn)生、控制算法的處理、數(shù)據(jù)的交流和系統(tǒng)控制監(jiān)控等功能。特性如下:

            ●采用TMS320C2XX CPU內(nèi)核:

            有32位中央邏輯運(yùn)算單元;

            內(nèi)含32位累加器;

            16位×16位并行乘法器;

            8個(gè)16位輔助寄存器;

            ●具有50ns指令周期;

            ●含544字節(jié)16位在片數(shù)據(jù)/程序雙向RAM;

            ●帶有16k字節(jié)Flash EEPROM:

            ●雙向10位串行數(shù)模轉(zhuǎn)換器的采樣速率可達(dá)166kHz;

            ●具有28個(gè)獨(dú)立可編程、復(fù)用I/O腳;

            ●有串行外設(shè)接口和SCI接口;

            ●自帶強(qiáng)大的事件管理器;

            ●帶有實(shí)時(shí)中斷的看門狗電路;

            ●支持硬件JTAG硬件仿真。

            3

            SPI主要用于與各種外圍器件進(jìn)行通訊,這些外圍器件可以是簡單的TTL移位寄存器或是復(fù)雜的LCD顯示驅(qū)動(dòng)器或A/D轉(zhuǎn)換子系統(tǒng)。很容易與許多廠家的各種外圍器件直接相連。在多主機(jī)系統(tǒng)時(shí),SPI也可用于同MCU之間的通訊。

            當(dāng)MCU片內(nèi)I/O功能或存儲(chǔ)器不能滿足需要時(shí),可用SPI與各種外圍器件相連以擴(kuò)展I/O功能。SPI子系統(tǒng)可以在軟件控制下構(gòu)成簡單或復(fù)雜的系統(tǒng),如下所示:

            ●一個(gè)主MCU和幾個(gè)從MCU;

            ●幾個(gè)MCU互連,構(gòu)成多主機(jī)系統(tǒng);

            ●一個(gè)主MCU和一個(gè)或多個(gè)從外圍器件。

            多數(shù)應(yīng)用場合用一個(gè)MCU作為主機(jī)。這些外圍器件用來接收或提供傳輸數(shù)據(jù),只有主機(jī)發(fā)出命令后,它們才能從主機(jī)接收數(shù)據(jù)或向主機(jī)發(fā)送數(shù)據(jù)。但要注意兩點(diǎn):第一,SPI與串行外圍器件相連時(shí),SPI必須置為主機(jī);第二,在使用SPI傳送數(shù)據(jù)之前必須進(jìn)行初始化。

            4 接口設(shè)計(jì)

            TMS320F240的SPI接口是一個(gè)高速的同步串行I/O口,它允許1~8位的串行比特流以特定的傳輸速率移進(jìn)移出芯片。通常情況下,它主要用于DSP控制器和外圍設(shè)備之間的通信或兩個(gè)DSP之間的通信。其典型應(yīng)用包括通過移位寄存器、ADC等進(jìn)行外部I/O或外圍設(shè)備擴(kuò)展。

            該SPI接口有主、從兩種工作模式,125個(gè)可編程的波特率,接收或發(fā)送操作通過中斷或查詢方式來完成。整個(gè)工作狀態(tài)通過設(shè)置10個(gè)控制寄存器來完成。

            首先應(yīng)設(shè)置相應(yīng)的控制寄存器,并分別將這四個(gè)管腳設(shè)置為串行時(shí)鐘、使能、接收和發(fā)送腳。而后將SPISTE腳置為高。最后,通過控制寄存器依次設(shè)置SPI的工作模式、傳輸速率、數(shù)據(jù)位數(shù)和中斷標(biāo)志位,并將其發(fā)送、接收管腳與相應(yīng)外圍設(shè)備的輸入、輸出腳相連。

            在設(shè)計(jì)過程中應(yīng)注意,TMS320F240的一個(gè)主要特點(diǎn)就是通過各種各樣的控制寄存器來實(shí)現(xiàn)對(duì)各管腳、各單元工作模式和工作過程的控制,所以設(shè)計(jì)的每一步都要充分考慮對(duì)其相應(yīng)控制寄存器的設(shè)置和對(duì)寄存器狀態(tài)的影響。否則,整個(gè)系統(tǒng)很難進(jìn)行正常的工作或按設(shè)計(jì)的要求來工作。

            5 應(yīng)用舉例

            應(yīng)用SPI口實(shí)現(xiàn)對(duì)外部串行A/D的控制,其中的串行A/D采用MAX186,它是一個(gè)包含有8個(gè)通道模擬開關(guān)、寬帶采樣/保持器和串行接口的具有較高轉(zhuǎn)換速度和極低功耗的12位數(shù)據(jù)采集芯片。其4線串行接口可直接連接SPI、QSPI、MicroWire等器件而無需外部邏輯,串行輸出允許直接接TMS320系旬的數(shù)字信號(hào)處理器。在自動(dòng)監(jiān)測、醫(yī)療儀器和高精度控制過程中有較為廣泛的應(yīng)用。MAX186與TMS320F240的接口設(shè)計(jì)如圖2所示,流程為:

           ?。?)設(shè)置F240的SPI口為工作狀態(tài),并將串行時(shí)鐘信號(hào)SPICLK與MAX186的SCLK腳相連。

           ?。?)由F240置MAX186的片選端為低。

            (3)F240通過SPISOMI發(fā)送控制字初始化MAX186,并設(shè)置轉(zhuǎn)換模式,開始數(shù)據(jù)轉(zhuǎn)換。

           ?。?)數(shù)據(jù)轉(zhuǎn)換完成,MAX186通過SSTRB通知F240準(zhǔn)備接收數(shù)據(jù)。

           ?。?)F240通過SPISIMO在SCLK的上跳沿依次接收12位轉(zhuǎn)換結(jié)果。

           ?。?)接收完畢,置MAX186片選端為高,等下一次轉(zhuǎn)換。

            6 結(jié)束語

            同步串行外圍接口SPI使得DSP可方便地與各種外圍設(shè)備進(jìn)行通信,從而使DSP在更多領(lǐng)域得到更廣泛的應(yīng)用,相信DSP在未來必將踏入更多領(lǐng)域。



          關(guān)鍵詞: TMS320F240 SPI接口

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