999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于TMS320DM6437的McBSP與EDMA實現串口通信

2010-01-27 05:07:48屈姍姍夏威何子述
電子設計工程 2010年12期
關鍵詞:設置信號

屈姍姍,夏威,何子述

(電子科技大學電子工程學院,四川成都611731)

TMS320DM6437是專為高性能、低成本視頻應用開發的,主頻600 MHz,32位定點,采用達芬奇(DaVinci(TM))技術。該器件采用TI第3代超長指令集結構(VelociTI.3)的TMS320C64x+DSP內核,主頻可達600 MHz,支持8個8位或4個16位并行MAC運算,峰值處理能力高達4 800 MIPS。基于TMS320DM6437諸多特點,這里提出一種實現DSP與FPGA的雙向數據交換設計方案,采用TMS320DM6437的McBSP和EDMA實現異步串口通信。McBSP接口是全雙工串行接口,提供收發數據雙緩沖以處理連續的數據流,并可獨立配置收發部分,接收和發送都可使用獨立的幀信號和時鐘源。TMS320DM6437有2個獨立的McBSP接口(McBSP0和McBSP1)。EDMA可處理該處理器上所有內存單元和外設的數據傳輸,且不占用DSP時鐘周期,EDMA還提供針對McBSP的同步事件,可方便控制數據傳輸。接收數據時,FPGA的數據通過McBSP傳到DSP的DRR寄存器中,觸發McBSP接收同步事件,EDMA將數據搬入DSP內存。發送數據時,當EDMA從DSP內存中將數據搬入DSP的DXR寄存器時,利用McBSP發送同步事件,將數據傳輸給FPGA。

1 硬件接口電路設計

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

圖1 McBSP硬件連接圖Fig.1 Block diagram of McBSP

2 軟件程序設計

傳統的C6000型DSP對McBSP和EDMA進行操作時,多使用TI公司提供的CSL(Chip Support Library)進行編程操作,由于TMS320DM6437不支持CSL,而是改用PSP(Processor Support Package),所以對TMS320DM6437 McBSP接口采用PSP提供的McBSP Driver,主要用McBSP Driver提供的LLC層API進行編程。LLC層提供基于不同平臺的驅動核心抽象。在該層可進行寄存器操作,宏定義,并且底層API可直接與硬件通信。

對應的EDMA程序開發則采用EDMA LLD(EDMA Low Level Driver)提供的各種庫進行編程。LLD實際上包含2個庫用于管理EDMA外設:一個是EDMA RM(EDMA Resource Manager),管理所有的EDMA硬件資源以及中斷;另一個是EDMA DRV(EDMA Driver),完成所有EDMA相關配置,并且通過RM滿足資源需求。當調用DRV層API進行操作時,實際上是通過DRV層API調用RM層API來對EDMA外設寄存器進行直接操作來配置EDMA硬件。

本例中實現DSP和FPGA通信時,McBSP所需的幀同步信號以及時鐘信號均由FPGA產生,McBSP發送過來32 bit的數據,DSP內部采用EDMA方式接收數據,McBSP接收同步事件觸發EDMA傳輸,將數據放入DSP片內二級存儲器的緩沖區,等待DSP處理。為了保證后寫入的數據不會覆蓋先寫入的還沒來得及被DSP處理的數據,片內二級存儲器緩沖區采用乒乓緩沖結構。同樣,DSP發送32 bit數據給FPGA時,也是通過EDMA方式,由McBSP發送同步事件觸發EDMA傳輸[2]。

2.1 McBSP配置

McBSP的開啟以及參數配置均采用LLC提供的API以及數據結構完成。但是因為TMS320DM6437的引腳多采用引腳復用,并且GPIO和McBSP引腳復用到一起,由于本例中McBSP幀同步信號是由外部源產生,為了保證能監測到第一個幀同步信號,需先在PINMUX寄存器里將復用的引腳配置成GPIO模式,等檢測到幀同步信號后,再將復用的引腳恢復成McBSP模式。

2.1.1 接收數據格式配置

McBSP接收數據格式在數據結構LLC_RcvDataSetup中設置,該數據結構在McBSP Driver提供的頭文件llc_mcbsp-Type.h中定義,在編譯工程文件的時候需包含此頭文件。接收數據為單幀數據,一個數據幀長度為4個字節,采用幀同步信號檢測模式,不進行壓縮,數據傳輸延遲一個比特,采用McBSP同步事件產生中斷。McBSP發送數據格式在數據結構LLC_XmitDataSetup中設置,具體參數和接收數據格式保持一致。McBSP幀同步和時鐘參數在數據結構LLC_mcbspClkSetup中設置,該結構同樣在頭文件llc_mcbspType.h中定義。本例中,發送和接收的幀同步信號以及時鐘源都由外部產生,接收和發送幀同步都是高電平有效,接收時鐘上升沿有效,發送時鐘下降沿有效,幀同步脈沖寬度為1 bit,脈沖周期為32 bit。

2.1.2 啟動McBSP

首先調用McBSP LLC層API對McBSP接口進行設置,準備接收FPGA傳輸過來的信號。先調用函數LLC_mcbspOpen,該函數在llc_mcbsp.c中定義,函數原型為LLC_mcbspOpen(LLC_McbspObj*const pMcbspObj,Uint32 InstanceId,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通道的設置。配置完成后,相應的McBSP寄存器的值為:SPCR=0x0000400;RCR=0x00050040;XCR=0x00050040;SRGR=0x20000001;PCR=0x00000080。

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

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決定。

TMS320DM6437的EDMA共有128個參數RAM,其中存放每個EDMA通道需要的各個傳輸控制參數,參數RAM的默認對應關系為:EDMA EVENT0對應參數RAM0,EDMA EVENT1對應參數RAM1,等,以此類推。但是也可以在DCHMAP0-63寄存器里修改相應位自行對應。參數RAM的具體結構如圖2所示。

圖2 EDMA3的參數RAM結構Fig.2 RAM constructer of EDMA3

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

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

2.2.2 EDMA接收數據配置實現

開發環境采用CCS 3.3,通過調用LLD API實現對EDMA Driver的配置以及傳輸操作。

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

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

2.2.3 EDMA中斷實現

結合DSP/BIOS設置了EDMA中斷,以便在一個接收Buffer被填滿時,產生的EDMA中斷可通知DSP處理該Buffer的數據。

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

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

最后,由于選用了TMS320DM6437的可屏蔽中斷5,還需使能IER寄存器里的對應位,C64_enableIER(C64_EINT5)。

2.2.4 EDMA發送數據配置實現

EDMA發送數據程序流程和接收數據程序流程大略一致,但較為簡單。只需請求一個EDMA傳輸通道,配置其源地址為DSP內部存放FPGA所需數據內存首地址,目的地址為McBSP的DXR寄存器。其余參數和EDMA接收數據通道參數相同。

圖3 HWI模塊設置框圖Fig.3 Block diagram of setting HWI madule

3 實現結果

配置好McBSP和EDMA后,啟動FPGA傳輸數據,DSP做好接收和發送數據的準備,實驗中,FPGA連續不斷地發送自加地數給DSP,而DSP只發送2 048個32 bit的從0開始的自加數據給FPGA。實驗結果表明,DSP內部的PingBuffer區和PongBuffer區能連續不斷的收到FPGA傳輸過來的數據。某一時刻的PingBuffer區和PongBuffer區內部數據如圖4所示,能看出實驗實現了上述功能。

在FPGA端監測到DSP發送過去的數據如圖5所示,可以看出是從0開始的連續自加數據。

圖5 Signal tapII抓取FPGA端數據Fig.5 The received data of FPGA obtained by Signal tap II

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

4 結論

通過TMS320DM6437的McBSP和EDMA實現了異步串口通信,并已經通過軟硬件調試,該部分已被實際運用于實時數據處理中。該方法硬件部分較容易實現,并且簡單可靠,且采用EDMA方式,大大節約了CPU資源,取得了較好的效果,具有一定的應用價值。

圖6 中斷測試結果Fig.6 The results of interrupt test

[1] TEXAS INSTRUMENTS.TMS320DM643x DMP multichannel buffered serial port(McBSP)interface user's guide[EB/OL].[2007-09].http://focus.ti.com/lit/ug/spru943c/spru943c.pdf.

[2] DSP/BIOS McBSP device driver user's manual[M].TEXAS INSTRUMENTS,2007.

[3] TEXAS INSTRUMENTS.EDMA3 Resource Manager User Guide[Z].2008.12.

[4] TEXAS INSTRUMENTS.TMS320DM643x DMP Enhanced Direct Memory Access(EDMA3)Controller User's Guide[EB/OL].[2008-03].http://focus.ti.com.cn/cn/lit/ug/spru987a/spru987a.pdf.

[5] TEXAS INSTRUMENTS.EDMA3 Driver User's Guide[Z].2008.12.

[6] 任麗香.TMS320C6000系列DSPs的原理與應用[M].北京:電子工業出版社,2000.

猜你喜歡
設置信號
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
信號
鴨綠江(2021年35期)2021-04-19 12:24:18
完形填空二則
7招教你手動設置參數
孩子停止長個的信號
基于LabVIEW的力加載信號采集與PID控制
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
一種基于極大似然估計的信號盲抽取算法
艦船人員編制的設置與控制
主站蜘蛛池模板: 四虎成人精品| 日本不卡在线播放| 亚洲综合中文字幕国产精品欧美| 日本久久久久久免费网络| 国产尤物视频在线| 在线观看国产网址你懂的| 亚洲精品成人片在线观看| 性视频久久| 亚洲成人77777| 99在线观看免费视频| 国产毛片不卡| 久久精品电影| 成人国产精品2021| www.亚洲色图.com| 国产一在线观看| 欧美五月婷婷| 国产成人亚洲精品无码电影| AV无码国产在线看岛国岛| 国产在线精彩视频二区| 久久久久人妻一区精品| 久久精品国产精品青草app| 久无码久无码av无码| 在线免费亚洲无码视频| 美女被操91视频| 在线精品亚洲一区二区古装| 亚洲最黄视频| 波多野结衣一区二区三区四区视频| 国产在线八区| 国产爽妇精品| 欧美人人干| 亚洲一区网站| 国产日韩精品欧美一区喷| 18禁黄无遮挡免费动漫网站| av在线手机播放| 国产精品太粉嫩高中在线观看| 国产香蕉在线视频| 日韩一区二区三免费高清| 久久免费精品琪琪| 91亚洲精选| 日本三区视频| 久久亚洲精少妇毛片午夜无码 | 国产精品一区二区久久精品无码| 精品一區二區久久久久久久網站 | 国产精品综合久久久| 青青青视频蜜桃一区二区| 日韩欧美高清视频| 欧美 亚洲 日韩 国产| 韩日无码在线不卡| 国产乱子伦一区二区=| 1769国产精品免费视频| 欧洲欧美人成免费全部视频| 久久毛片免费基地| 成人年鲁鲁在线观看视频| 日本高清免费一本在线观看| 久久毛片基地| 亚洲精品久综合蜜| 国产Av无码精品色午夜| 狂欢视频在线观看不卡| 精品欧美一区二区三区久久久| 992tv国产人成在线观看| 丝袜无码一区二区三区| 精品一区二区三区视频免费观看| 国产精品99一区不卡| 欧美一级黄片一区2区| 国产精品嫩草影院av| 国产中文在线亚洲精品官网| 伊人成人在线| 亚洲欧美成人影院| 黄色网址免费在线| 网友自拍视频精品区| 国产精品无码久久久久AV| 国产一级一级毛片永久| 久草视频中文| 91精品视频播放| 国产在线视频福利资源站| 免费激情网站| 国产成人精品亚洲77美色| 国产欧美日韩专区发布| 亚洲综合激情另类专区| 亚洲中字无码AV电影在线观看| 97av视频在线观看| 国产高清自拍视频|