新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于PSoC3的多通信接口時(shí)的DMA設(shè)計(jì)

        基于PSoC3的多通信接口時(shí)的DMA設(shè)計(jì)

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

          PSoC Creator目前的版本是: PSoC Creator 1.0 Production. 該軟件運(yùn)行界面如下圖4。

        基于PSoC3的多通信接口時(shí)的DMA設(shè)計(jì)

        圖4 PSoC Creator 運(yùn)行界面

          PSoC Creator提供給用戶的設(shè)計(jì)入口如下:

          ● 原理圖編輯器:該編輯器是創(chuàng)建設(shè)計(jì)的主要工具。支持對設(shè)計(jì)進(jìn)行原理圖編輯。

          ● 文本編輯器:該工具允許用戶編輯C,匯編,Verilog, C#等語言代碼。

          ● 設(shè)計(jì)資源編輯器:該工具用于配置整個(gè)設(shè)計(jì)的參數(shù),包括電源,編譯開關(guān),調(diào)試開關(guān),F(xiàn)LASH保護(hù)信息,以及管腳分配等。

          ● 圖標(biāo)編輯器:允許用戶創(chuàng)建自己的模塊圖標(biāo)

          ● 其他工具:

          - 原理圖宏編輯器:允許用戶對原理圖設(shè)置不同的宏以完成不同的功能。

          - 原理圖模板編輯器:允許用戶對原理圖的模板進(jìn)行編輯

          - 圖標(biāo)形狀編輯器:允許用戶在創(chuàng)建模塊以及原理圖中使用自定義的形狀。

          PSoC Creator在用戶通過設(shè)計(jì)入口完成設(shè)計(jì)之后,對設(shè)計(jì)進(jìn)行一系列的處理并完成最終的結(jié)果輸出。該工具的對工程的構(gòu)建過程如圖5所示。

        基于PSoC3的多通信接口時(shí)的DMA設(shè)計(jì)

        圖5 PSoC Creator工程構(gòu)建過程

          從圖5中可以看出,工程構(gòu)建過程包括以下步驟:

          ·通過設(shè)計(jì)輸入接口完成設(shè)計(jì)

          ·綜合器完成對電路圖的綜合,并進(jìn)行布局,布線,映射等工作

          ·代碼生成器生成對應(yīng)電路的API控制接口

          ·構(gòu)建器準(zhǔn)備設(shè)計(jì)源文件,讀取構(gòu)建數(shù)據(jù)庫,獲得構(gòu)建配置,庫文件等信息

          ·編譯器完成編譯,鏈接器對生成的文件進(jìn)行鏈接

          ·輸出配置Hex文件。

          三、 Cypress PSoC3應(yīng)用于多通訊接口的設(shè)計(jì)

          是PSoC3中用于處理快速數(shù)據(jù)搬運(yùn)的模塊。的控制器可以在不需要CPU干預(yù)的情況下處理數(shù)據(jù)的傳輸。通過DMA處理數(shù)據(jù)傳輸可以有效地降低CPU的負(fù)擔(dān),同時(shí)也能夠提高數(shù)據(jù)傳輸?shù)臅r(shí)間。PSoC3內(nèi)置的DMA可以完成四種基本的數(shù)據(jù)傳輸:

          ·內(nèi)存到內(nèi)存

          ·內(nèi)存到外設(shè)

          ·外設(shè)到內(nèi)存

          ·外設(shè)到外設(shè)

          PSoC3中,采用PHUB來連接各個(gè)內(nèi)部設(shè)備。DMA和CPU都需要使用PHUB來完成數(shù)據(jù)傳輸。PHUB上的兩個(gè)主設(shè)備分別是DMA和CPU,而從設(shè)備是內(nèi)存,外設(shè)以及控制和配置寄存器。PSoC3支持多個(gè)DMA的通道,DMA主控制器對通道的請求按照優(yōu)先級(jí)進(jìn)行仲裁。單個(gè)DMA的通道可以傳輸高達(dá)64KB的數(shù)據(jù)。

          PSoC3的DMA控制器支持如下特性:

          ·支持24個(gè)DMA通道

          ·8優(yōu)先級(jí)判決

          ·128個(gè)事務(wù)描述符

          8/16/32 位的數(shù)據(jù)傳輸

          ·完全可配置的源和目標(biāo)地址

          ·兼容不同數(shù)端

          ·在完成數(shù)據(jù)傳輸之后能夠生成中斷

          ·DMA 向?qū)軌蚣铀倩贒MA 的開發(fā)

          ·DMA 事務(wù)可以有可編程數(shù)字邏輯或者CPU 觸發(fā)

          ·支持多個(gè)DMA 通道和描述符的級(jí)聯(lián)以完成復(fù)雜的功能。

          3.1 在PSoC Creator 中使用DMA

          PSoC Creator 做為PSoC3 和PSoC5 開發(fā)的設(shè)計(jì)工具,其內(nèi)部集成了DMA 模塊來配置DMA 和生成相關(guān)的控制代碼,同時(shí)提供的DMA 向?qū)?shí)現(xiàn)了圖形化操作界面。

          DMA 模塊位于組件窗口的System 目錄下,如圖所示。

        基于PSoC3的多通信接口時(shí)的DMA設(shè)計(jì)

        圖6 DMA 模塊位置

          通過拖曳到原理圖編輯器可以放置DMA 模塊,每次拖曳的DMA 會(huì)使用一個(gè)通道。DMA 模塊的輸入輸出地址等需要在代碼中進(jìn)行配置,而通過原理圖配置的都是控制管腳和控制信息。在原理圖上DMA 模塊的表現(xiàn)如下圖7 所示。

        基于PSoC3的多通信接口時(shí)的DMA設(shè)計(jì)

        圖7 DMA 模塊

          它的輸入輸出的管腳共有三個(gè)。

          nrq - 輸出管腳。該管教用于表征DMA的傳輸完成,用來通知中斷控制器產(chǎn)生中斷或者用來觸發(fā)其他邏輯。當(dāng)完成傳輸之后DMA會(huì)生成一個(gè)2個(gè)總線周期的脈沖。

          drq - 輸入管腳(可選)。該管腳是可選管腳,只有在觸發(fā)條件選擇為硬件的時(shí)候才可見。該管腳可以連接到產(chǎn)生DMA事務(wù)請求的模塊,觸發(fā)條件可以配置成電平觸發(fā)或邊沿觸發(fā)。

          trq - 輸入管腳(可選)。該管腳是可選管腳,只有在結(jié)束條件選為硬件時(shí)才可見。該管腳觸發(fā)之后,DMA會(huì)停止數(shù)據(jù)傳輸。

          在配置完成硬件連接以后,使用配置向?qū)硗瓿蓪MA的如下參數(shù)的配置:

          ·Byte Per Burst - 每次執(zhí)行Burst傳輸傳送的字節(jié)數(shù)

          ·Transaction Descriptor 的數(shù)量

          ·Endian (Big / Little)的配置

          ·傳輸?shù)淖止?jié)數(shù)

          ·目標(biāo)地址

          ·源地址

          ·地址遞增模式

          ·TD連接模式

          在PSoC Creator中打開DMA向?qū)Вx擇要配置的DMA,進(jìn)入第一個(gè)頁面如圖8所示。

        基于PSoC3的多通信接口時(shí)的DMA設(shè)計(jì)

        圖8 DMA 向?qū)?-配置

          該界面主要配置目標(biāo)和源地址的范圍。支持地址段在SRAM,FLASH,EEPROM中。其次是配置Burst的字節(jié)數(shù)以及該DMA中的事務(wù)描述符的數(shù)量和連接關(guān)系。在完成該步驟之后,會(huì)進(jìn)入下個(gè)配置界面,主要配置其他的詳細(xì)參數(shù)。如圖9 所示。

        DMA詳細(xì)配置

        圖9 DMA詳細(xì)配置

          在圖9中輸入事務(wù)描述符號(hào)的參數(shù)。其中最為常用而且重要的參數(shù)包括:源地址,目標(biāo)地址,地址遞增模式,以及事務(wù)描述符的連接模式。在完成該步驟之后,點(diǎn)擊下一步,就會(huì)生成相應(yīng)的配置代碼,如圖10所示。

        基于PSoC3的多通信接口時(shí)的DMA設(shè)計(jì)

        圖10 DMA 生成代碼

          復(fù)制上述代碼到程序的初始化模塊中,并對需要的地方進(jìn)行細(xì)微的修改,就可以完成DMA的初始化。在程序運(yùn)行時(shí),DMA會(huì)根據(jù)請求自動(dòng)把數(shù)據(jù)從源地址搬運(yùn)到目標(biāo)地址。

          3.2 DMA應(yīng)用于多通訊端口實(shí)例

          DMA的數(shù)據(jù)傳輸可以極大提高基于PSoC3系統(tǒng)的吞吐率。以一個(gè)系統(tǒng)為例,該系統(tǒng)通過SPI接收別的系統(tǒng)的輸入,并通過UART傳送到主機(jī)系統(tǒng)中。圖11給出了基于傳統(tǒng)MCU和基于PSoC3 DMA的兩種程序流程圖進(jìn)行比較(不考慮兩種傳送速率不匹配的情況)。

        基于PSoC3的多通信接口時(shí)的DMA設(shè)計(jì)

        圖11 (a) 傳統(tǒng)MCU設(shè)計(jì) (b) PSoC3 DMA的設(shè)計(jì)

          傳統(tǒng)的MCU需要初始化SPI和UART通訊模塊,并配置兩者的中斷。當(dāng)SPI的Buffer滿了之后,就產(chǎn)生中斷,中斷程序首先中止新的SPI傳輸,然后檢測UART的Buffer,如果不為空就等待舊的數(shù)據(jù)傳送完。為空之后就把SPI的數(shù)據(jù)復(fù)制到TX Buffer 并打開SPI接收后續(xù)數(shù)據(jù)。

          基于PSoC3 DMA的設(shè)計(jì)中,可以基于原理圖實(shí)現(xiàn)上述的邏輯。如圖12所示。

        系統(tǒng)邏輯圖

        圖12 系統(tǒng)邏輯圖

          當(dāng)SPI的Full信號(hào)和UART的Empty信號(hào)同時(shí)有效的時(shí)候,觸發(fā)DMA傳輸,把SPI Buffer中的數(shù)據(jù)傳送到UART的Buffer中。不需要CPU的干預(yù)就能夠完成多通訊口之間的數(shù)據(jù)共享。

          該通訊實(shí)例只是為了表明DMA在多通訊端口數(shù)據(jù)傳輸中的作用。在實(shí)際的實(shí)現(xiàn)中,DMA可以操作的通訊端口包括:

          ·USB的端點(diǎn)

          ·UART的Buffer

          ·SPI的Buffer

          ·I2S的Buffer

          ·其他各種自定義的通訊協(xié)議

          通過DMA可以高效的實(shí)現(xiàn)通訊接口之間的如下操作:

          ·各通訊端口之間的數(shù)據(jù)搬移

          ·通訊端口Buffer到PSoC3數(shù)字和模擬模塊之間的傳輸

          ·通訊端口Buffer自動(dòng)存放到內(nèi)存之中

          ·內(nèi)存到通訊口的數(shù)據(jù)搬移

          ·數(shù)字、模擬模塊到通訊口的數(shù)據(jù)搬移

          四、 總結(jié)

          Cypress PSoC3處理器集成了多種可編程的數(shù)字模擬資源以及布線資源,以及一些專用的通訊和控制設(shè)備,可以極大地方便各種嵌入式系統(tǒng)的應(yīng)用。PSoC Creator作為PSoC3的開發(fā)工具,能夠提供基于原理圖,功能組件的設(shè)計(jì)模式。使得用戶能夠用簡單有效的方式來完成復(fù)雜的可編程系統(tǒng)設(shè)計(jì)。

          通訊作為嵌入式系統(tǒng)的重要部分,在傳統(tǒng)設(shè)計(jì)中需要占用一定的CPU時(shí)間來處理。本文介紹的基于PSoC3的新設(shè)計(jì)方式,采用DMA高效的處理嵌入式系統(tǒng)通訊而不占用CPU處理時(shí)間,同時(shí)還可以基于PSoC3的靈活配置實(shí)現(xiàn)多路DMA并行操作以降低系統(tǒng)硬件成本。這種新方式能夠極大地提高基于PSoC3系統(tǒng)的吞吐能力和系統(tǒng)運(yùn)行效率。


        上一頁 1 2 下一頁

        關(guān)鍵詞: 通信接口 DMA

        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 株洲县| 南宁市| 云安县| 贵南县| 宁陕县| 盘山县| 泸定县| 泽州县| 茌平县| 延庆县| 仙居县| 巍山| 朝阳县| 武穴市| 荆门市| 泸西县| 鹤庆县| 托克逊县| 香港| 新安县| 从化市| 贵港市| 盐源县| 安远县| 昌平区| 定西市| 临夏县| 双牌县| 长丰县| 八宿县| 松阳县| 丘北县| 华安县| 锡林浩特市| 宕昌县| 乌拉特后旗| 武平县| 浮梁县| 长葛市| 长寿区| 安龙县|