色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

采用McBSP接口與EDMA配置實現異步串口通信,提高工作的效率

電子設計 ? 來源:郭婷 ? 作者:電子設計 ? 2018-12-07 09:06 ? 次閱讀

TMS320DM6437的性能很高,但是開發的費用卻很廉價,這樣就可以面向更多的市場,主頻600 MHz,32位定點,采用達芬奇(DaVinci(TM))技術。該器件采用TI第3代超長指令集結構(VelociTI.3)的TMS320C64x+DSP內核,主頻可達600 MHz,支持8個8位或4個16位并行MAC運算,峰值處理能力高達4 800MIPS。

1 硬件接口電路設計

DSP的McBSP接口可由內部時鐘發生器或外部器件提供收/發時鐘信號(CLKR/CLKX)及收/發幀同步信號(FSR/FSX)。EN_IN、EN_OUT為DSP控制FPGA中McBSP接口的使能信號,它們均與DSP的GPIO相連。當EN_IN為高時,FPGA接收DSP的數據;當EN_OUT為高時,FPGA開始向DSP發送數據。

McBSP接口是全雙工串行接口,提供收發數據雙緩沖以處理連續的數據流,并可獨立配置收發部分,接收和發送都可使用獨立的幀信號和時鐘源。接收數據時,FPGA的數據通過McBSP傳到DSP的DRR寄存器中,觸發McBSP接收同步事件,EDMA將數據搬入DSP內存。發送數據時,當EDMA從DSP內存中將數據搬入DSP的DXR寄存器時,利用McBSP發送同步事件,將數據傳輸給FPGA。

采用McBSP接口與EDMA配置實現異步串口通信,提高工作的效率

2 軟件程序設計

傳統的C6000型DSP對McBSP和EDMA進行操作時,多使用CSL(Chip Support Library)進行編程操作,由于TMS320DM6437不支持CSL,而是改用PSP(Proeessor Support Package),所以對TMS320DM6437 McBSP接口采用PSP提供的McBSP Driver,主要用McBSP Driver提供的LLC層API進行編程。以方便實驗程序的運行。

在很多實踐中實現DSP和FPGA通信時,McBSP所需的幀同步信號以及時鐘信號均由FPGA產生,McBSP發送過來32 bit的數據,DSP內部采用EDMA方式接收數據,McBSP接收同步事件觸發EDMA傳輸。將數據放入DSP片內二級存儲器的緩沖區,等待DSP處理。為了寫入的數據不被覆蓋掉,片內二級存儲器緩沖區采用乒乓緩沖結構,就有McBSP發送同步事件觸發EDMA傳輸。

2.1 McBSP配置

2.1.1 接收數據格式配置

McBSP接收數據格式在數據結構LLC_RcvDataSetup中設置,該數據結構在McBSP Driver提供的頭文件llc_mcbsp Type.h中定義,在編譯工程文件的時候需包含此頭文件。接收數據為單幀數據,一個數據幀長度為4個字節,采用幀同步信號檢測模式,不進行壓縮,數據傳輸延遲一個比特,采用McBSP同步事件產生中斷。McBSP發送數據格式在數據結構LLC_XmitDatasetup中設置,具體參數和接收數據格式保持一致。M-cBSP幀同步和時鐘參數在數據結LLC_mcbspClkSetup中設置,該結構同樣在頭文件llc_mcbspType.h中定義。

2.1.2 啟動McBSP

首先調用MeBSP LLC層API對McBSP接口進行設置,準備接收FPGA傳輸過來的信號。先調用函數LLC_mcbspOpen,該函數在llc_mcbsp.c中定義,函數原型為LLC_mcbspOpen(LLC_McbspObj*const pMcbspObj,Uint32InstanceId,Int32*pMcbspParam,CSL_Status*pStatus),所需參數分別為用戶定義的McBSP通道對象,McBSP通道ID,用戶定義的配置參數及狀態信息,返回參數為指向該通道的句柄hMcbsp。該句話就最為API的函數。

然后設置McBSP通道0,調用函數LLC_mcbspHwSetup(LLC_McbspHandle hMcbsp,const LLC_McbspHwSetup*setup)。第1個參數即為剛才返回的指向McBSP通道0的句柄,第2個參數為一個結構體,包含了前面定義的接收和發送數據結構以及幀同步和時鐘參數結構,這樣就按照實際應用的要求完成了對McBSP0通道的設置。

最后利用函數LLC_mcbspHwControl使能McBSP接收和發送功能。函數原型為LLC_mcbspHwControl(LLC_McbspHandle hMcbsp,LLC_Mcbsp ControlCmd cmd,const void*arg)。第1個參數為指向McBSP通道0的句柄,第2個參數為硬件控制命令,第3個為對特定命令的補充說明。開啟McBSP接收發送功能時,硬件控制命令為LLC_MCBSP_CMD_RESET_CONTROL,使能發送功能時,命令補充說明為LLC_MCBSP_CTIRL_RX_ENABLE,使能接收功能時,命令補充說LLC_MCBSP_CTRL_TX_ENABLE。

2.2 EDMA配置

2.2.1 EDMA配置原理

EDMA中傳輸的數據種類有3種:ARRAY,BLOCK,FRAME,分別對應3種不同類型的傳輸。首先是一維傳輸,即每一個EDMA事件觸發的傳輸只傳輸一個ARRAY,該ARRAY所包含的字節數由參數RAM里的參數ACNT決定。然后是二維傳輸,每一個EDMA事件觸發傳輸一個FRAME,每個FRAME里包含的ARRAY數由參數BCNT決定。就像這樣在類推先去,三維傳輸即每次傳輸一個BLOCK,每個BLOCK里包含的FRAME數由參數CCNT決定。這樣的數據就更加有嚴密性。

一個參數RAM的長度為32個字節。首先是32 bit的可選參數OPT,對于可選參數,通過對各個位置0或1設置事件優先級,數據單元大小,源地址/目的地址變更模式,傳輸結束代碼,是否使能傳輸參數鏈接(LINK)功能,同步傳輸方式等。SRC和DST為EDMA傳輸所需的源地址和目的地址。SRCBIDX和DSTBIDX用于二維傳輸中,表示一個ARRAY的開始到下個ARRAY的開始所跨越的字節數。SRCCIDX和DSTCIDX用于三維傳輸中,一個FRAME的開始到下個FRAME的開始所跨越的字節數。

采用McBSP接口與EDMA配置實現異步串口通信,提高工作的效率

在有些日常生活中采用的雙緩沖結構,即在DSP緩沖區內開辟2塊緩沖用于并行處理FPGA通過McBSP傳過來的數據。當EDMA往PingBuffer里傳輸數據時,CPU即可處理PongBuffer里的數據,當工作完成后,彼此又交換緩沖區,EDMA往PongBuffer里寫數據,CPU處理PingBuffer里的數據。為了實現雙緩沖結構,采用了EDMA提供的LINK功能,即將不同的EDMA傳輸參數RAM鏈接起來,組成一個傳輸鏈,在傳輸鏈中,一個傳輸的結束會導致自動從參數RAM中裝載下一個傳輸需要的事件參數。在具體程序中,只需將Ping通道的參數RAM LINK到Pong通道,同時將Pong通道的參數RAMLINK到Ping通道即可。

2.2.2 EDMA接收數據配置實現

在使用EDMA3 Driver之前必須首先對其進行初始化。EDMA3 LLD提供了2個API進行相關工作。EDMA3_DRV_create和EDMA3_DBV_open。前者用于創建一個EDMA3 Driver對象,后者用于開啟對應的EDMA3 Driver通道。

創建并開啟EDMA3 Driver通道后,即可為此通道分配資源以及初始化其配置。首先調用EDMA3_DRV_requestChannel請求分配一個DMA通道,隨后對該通道的參數RAM進行配置,以滿足傳輸需要。EDMA3_DRV_setSrcParams用于設置該EDMA通道接收數據源地址為McBSPO的DRR寄存器,地址為0x01D00000,地址計數模式為遞增模式。EDMA3_DRV_setDestParams設置該EDMA通道接收數據目的地址為DSP片內存儲區PingBuf-fer首地址,確保第一次傳輸數據是到PingBuffer,地址計數模式同樣為遞增模式。EDMA3_DRV_setSrcIndex用于配置源地址計數索引值,由于源地址為McBSPO的DRR寄存器,固定不變,所以srcBidx=0,srcCidx=0。接著調用EDMA3_DRV_setDestIndex配置目的地址計數索引值,由于接收數據為32 bits,所以sreBidx=srcCidx=4,這是因為DSP內的最小計數單元為一個字節,8bit。EDMA3_DRV_setTransferPamms配置剩余的參數RAM傳輸參數,包括設置ACNT=4,BCNT=2 048,CCNT=1,采用一維傳輸A-SYNC。

接下來是Ping/Pong傳輸的程序實現。需再調用EDMA3_DRV_requestChannel兩次,替Ping/Pong各自分配一個通道,于是,一共有3個通道,對應3個參數RAM。Ping通道的參數RAM與主通道的參數RAM完全一致,Pong通道的參數RAM與主通道相比,只需將Pong通道接收數據目的地址改為PongBuffer首地址。隨后調用EDMA3_DRV_linkChannel 3次,分別將主通道和Ping通道LINK,Ping通道和Pong通道相互LINK。

2.2.3 EDMA中斷實現

TMS320DM6437中,EDMA的128個通道只產生一種中斷,當一個通道傳輸完成后,IPR(Interrupt Pending Register)寄存器里的相應位會被置1,EDMA中斷處理器通過查詢IPR寄存器確定是哪個通道完成了傳輸,并調用相應的中斷服務程序。

EDMA LLD中中斷的設置通過調用EDMA3_DRV_requestChannel實現。該函數的參數中跟中斷有關的為eventQ(與通道優先級相關),tceCb(回調函數,即通道傳輸完成后所調用的中斷服務程序)。設置eventQ=0,保證最高優先級,tceCb=edma_isr,該函數的作用是在通道傳輸完成后發送一個旗語信號給信號處理程序,通知其對收到的數據進行處理。此外,還需調用EDMA3_DRV_setOptField將參數RAMOPT參數中TCINTEN位置1,以使能EDMA中斷。隨后,利用DSP/BIOS將EDMA中斷源和DSP的可屏蔽中斷5連接起來。

采用McBSP接口與EDMA配置實現異步串口通信,提高工作的效率

3 實現結果

配置好MeBSP和EDMA后,啟動FPGA傳輸數據,DSP做好接收和發送數據的準備,實驗中,FPGA連續不斷地發送自加地數給DSP,而DSP只發送2048個32 bit的從0開始的自加數據給FPGA。該結果如圖5所示。著可以表明DSP內部的PingBuffer區和PongBuffer區能連續不斷的收到FPGA傳輸過來的數據。

采用McBSP接口與EDMA配置實現異步串口通信,提高工作的效率

本例中設置傳完2 048個數據后EDMA發送事件觸發一次中斷,調用的中斷服務程序主要作用是發送一個旗語信號給信號處理程序,并打印出“GOT INTO RCV ISR”,進入中斷服務程序,隨后已被阻塞的信號處理程序線程收到旗語信號后,開始運行,并打印信息“receive rcv int”,中斷測試結果如圖6所示,可以看出中斷在連續不斷的被觸發!

采用McBSP接口與EDMA配置實現異步串口通信,提高工作的效率

4 結論

經過以上的測試和實驗過程,TMS320DM6437的McBSP和EDMA實現了異步串口通信,在其測試中軟硬件的實施都很正常,并且切合實際的應用和實施。可以看出該發放硬件部分容易實現,而且非常簡單放心,且采用EDMA方式,很好的節約了資源,大大的提高了工作的效率和資源的利用。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1629

    文章

    21748

    瀏覽量

    603882
  • 發生器
    +關注

    關注

    4

    文章

    1368

    瀏覽量

    61712
  • 串口通信
    +關注

    關注

    34

    文章

    1626

    瀏覽量

    55560
收藏 人收藏

    評論

    相關推薦

    McBSP串口配置的關鍵時

    本帖最后由 mr.pengyongche 于 2013-4-30 03:20 編輯 McBSP串口配置的關鍵時
    發表于 07-16 14:17

    附件為McBSPEDMA簡單例程

    附件為McBSPEDMA簡單例程對初學者有些用處~
    發表于 03-02 16:02

    McBSP EDMA例程

    附件為McBSPEDMA簡單例程,希望對初學者有所幫助。 http://processors.wiki.ti.com/index.php/Main_Page Think Over Before
    發表于 06-21 08:42

    兩路McBSP的數據輸出存在相對位移的問題,猜測可能與EDMA event Queue有關?

    數據的收發,相關參數如下所示,這些接口的收發均采用EDMA3 PingPongBuffer方式,DMA數據搬移采用A-sync,信道控制器0,事件隊列均
    發表于 06-21 13:08

    關于mcbsp模塊打開FIFO功能收不到EDMA中斷的情況

    配置為1 word,緩存大小配置為32bits的整數倍,每種倍數都嘗試過,只要打開BFIFO功能,EDMA就進不了中斷了,之前默認沒有使用BFIFO功能的時候mcbsp都可以正常
    發表于 06-21 10:14

    使用mcbsp EDMA AD數據采集請問ad中斷后怎么啟動mcbsp

    打算使用AD7656 AD采集,為降低cpu占用率使用edma傳輸數據,ad7656有兩種接口:spi和并行數據總線,ad轉換完成后可以通過一個IO輸出中斷。Spi方式:我的想法是ad完成中斷cpu
    發表于 07-15 15:59

    McBSP和McASP怎么同時使用edma3?

    現在需要McBSP和McASP都要使用edma3,是使用edma3_cc0的中斷,然后設置不同的param,在中斷發生后中斷處理程序中靠不同tcc位來判斷,還是同時使用edma3_cc
    發表于 03-17 10:50

    6748的mcbsp edma3 pingpong傳輸不進入中斷

    各位大佬好,現在采用的是6748的芯片 來進行采集,mcbsp采集的數據通過edma3 來實現pingpong傳輸 ,現在采用的是A_SYN
    發表于 10-13 15:08

    mcbsp edma3 只能采集一個數據并且進不去中斷

    各位大佬好,現在采用的是6748的芯片來進行數據采集 ,用mcbsp采集的數據通過edma3讀取drr的 來pingpong傳輸給另一個地址進行算法 ,現在采用的是A_SYNC模式傳輸
    發表于 10-14 09:56

    基于TMS320DM6437的McBSPEDMA實現串口

    針對DSP TMS320DM6437,為了實現FPGA和DSP間的串口通信采用了其同步多通道緩沖串行口(McBSP)和增強型直接存儲器存取
    發表于 12-07 13:49 ?24次下載

    一種通過SPI接口協議實現DSP與其它設備通信的方法

    介紹了SPI通信協議,并著重介紹了TI公司生產的TMS320C5402 DSP用于SPI協議通信時的串口配置方法和接口電路設計實例,最后給出
    發表于 05-06 20:17 ?2474次閱讀
    一種通過SPI<b class='flag-5'>接口</b>協議<b class='flag-5'>實現</b>DSP與其它設備<b class='flag-5'>通信</b>的方法

    McBSP在語音信號處理中的應用與實現

    詳細介紹了TMS320C54x的多緩沖串口(McBSP)軟硬件設計并提出如何用McBSP在語音通信中降低傳輸帶寬,并提出了具體的設計思想和實現
    發表于 10-10 16:21 ?26次下載
    <b class='flag-5'>McBSP</b>在語音信號處理中的應用與<b class='flag-5'>實現</b>

    使用McBSP實現DSP與串行Flash的接口通訊

    介紹了 McBSP與Flash之間串行接口的設計,并介紹了TMS320VC5509串行8位引導裝載的實現方法。同時給出用CSL庫函數實現McBSP
    發表于 08-27 14:30 ?19次下載
    使用<b class='flag-5'>McBSP</b><b class='flag-5'>實現</b>DSP與串行Flash的<b class='flag-5'>接口</b>通訊

    推薦七個好用的、可提高工作效率的網站工具

    推薦七個好用的、可提高工作效率的網站工具
    的頭像 發表于 05-05 17:04 ?2516次閱讀

    通過智能設計運行提高工作效率

    電子發燒友網站提供《通過智能設計運行提高工作效率.pdf》資料免費下載
    發表于 09-14 09:34 ?0次下載
    通過智能設計運行<b class='flag-5'>提高工作效率</b>
    主站蜘蛛池模板: 国产乱码免费卡1卡二卡3卡四卡| 黄色网址在线看| av网站视频在线观看| 99精品小视频| 苍老师刺激的120分钟| 国产超碰精久久久久久无码AV| 国产精品人妻久久无码不卡| 国产线精品视频在线观看| 精品麻豆一卡2卡三卡4卡乱码 | 亚洲精品国产精品麻豆99| 伊人久99久女女视频精品免| 最新高清无码专区在线视频| xxx性欧美在线观看| 国产精品久久人妻无码蜜| 黄色软件视频app| 男男免费看| 色综合五月激情综合色一区| 亚洲精品97福利在线| 综合久久伊人| 超碰caoporen国产| 国产婷婷综合在线视频中文| 久久视频这只精品99re6| 欧美亚洲高清国产| 香蕉久久一区二区三区啪啪| 在线观看成年人免费视频| 草莓在线观看| 韩国无遮羞禁动漫在线观看| 乱色欧美激惰| 探花口爆颜射乳交日韩| 御姐被吸奶| 国产69精品久久久久麻豆| 久久精品国产福利电影网| 人人模人人干| 一本道久在线综合道| 超碰免费视频caoporn| 黄色jjzz| 日本亚欧热亚洲乱色视频| 亚洲幼女网| 第七色男人天堂| 久久re这里视频只有精品首页 | 国产偷抇久久精品A片蜜臀AV|