DM642無(wú)線(xiàn)圖像傳輸的TS流傳輸新技術(shù)
2 TS流傳輸實(shí)現
2.1 McBSP實(shí)現
McBSP由數據通道和控制通道組成,可以與外部設備連接,進(jìn)行數據通信。數據的接收與發(fā)送分別工作于不同的引腳上,因此數據通信是全雙工的。其他的4個(gè)引腳用于傳輸控制信號(時(shí)鐘和同步信號)。
這里采用EDMA進(jìn)行McBSP與存儲器緩沖區之間的數據搬運。EDMA控制器讀取從外部設備接收到并保存在DRR(數據接收寄存器)的數據,或者將需要向外部設備發(fā)送的數據寫(xiě)入DXR(數據發(fā)送寄存器)。被寫(xiě)入DXR的數據經(jīng)過(guò)XSR被移出到DX腳上。同理,接收的數據先被移入RSR,然后被拷貝到RBR,最后再被拷貝到DRR,這時(shí)就允許被EDMA訪(fǎng)問(wèn)了。McBSP中內部數據的移出和外部數據的移入可以同時(shí)發(fā)生,即可以進(jìn)行全雙工的數據通信。
以EDMA接收數據的配置為例,配置參數RAM。EDMA通道接收數據源地址為McBSP0的DRR寄存器,地址計數模式為不變模式。設置EDMA通道接收數據目的地址為DSP片內存儲區PingBuffer首地址,確保第一次傳輸數據是到PingBuffer,地址計數模式同樣為遞增模式。配置源地址計數索引值,由于源地址為McBSP0的DRR寄存器,固定不變;配置目的地址計數索引值,由于接收數據為32位,所以srcBidx=srcCidx=4,這是因為DSP內的最小計數單元為1個(gè)字節,8bits;配置剩余的參數RAM傳輸參數,包括設置ACNT=4,BCNT=2 048,CCNT=1,采用一維傳輸A-SYN C。
接下來(lái)是ping-pong傳輸的程序實(shí)現。替ping-pong各自分配1個(gè)通道,于是一共有3個(gè)通道,對應3個(gè)參數RAM。ping通道的參數RAM與主通道的參數RAM完全一致,pong通道的參數RAM與主通道相比,只需將pong通道接收數據目的地址改為PongBuffer首地址。隨后調用EDMA_link三次,分別將主通道和ping通道連接,ping通道和pong通道相互連接。EDMA中斷設置與GPIO輸出任務(wù)一樣。
2.2 GPIO實(shí)現
TS流輸出任務(wù)采用1D到1D的傳輸模式。SUM=01,DUM=00,即源地址是188字節的Buffer,目的地址是GPIO[8:15]對應的寄存器,GP4的外部觸發(fā)EDMA傳輸,傳輸188字節產(chǎn)生1次EDMA中斷。隊列優(yōu)先級設置為緊急,來(lái)保證時(shí)序。以EXTINT5為EDMA觸發(fā)事件:
pong的參數RAM設置類(lèi)似,只要將源地址改為pong,并將重載的參數RAM地址改為edmacfg_pong即可。
DM642中,EDMA的64個(gè)通道只產(chǎn)生一種中斷。當一個(gè)通道傳輸完成后,IPR(Interrupt Pending Register)寄存器里的相應位會(huì )被置1,EDMA中斷處理器通過(guò)查詢(xún)IPR寄存器,確定是哪個(gè)通道完成了傳輸,并調用相應的中斷服務(wù)程序,即tccCb(回調函數,即通道傳輸完成后所調用的中斷服務(wù)程序)。tccCb=edma_isr,該函數的作用是當一個(gè)接收Buffer被填滿(mǎn)時(shí),在通道傳輸完成后發(fā)送一個(gè)旗語(yǔ)信號給信號處理程序,通知其對收到的數據進(jìn)行處理。參數RAMOPT中TCINTEN位置1,以使能EDMA中斷。隨后,利用DSP/BIOS將EDMA中斷源和DSP的可屏蔽中斷5連接起來(lái)。編寫(xiě)相應通道的EDMA中斷程序,傳輸完一個(gè)TS包后,檢查是否1幀圖像的TS流傳完,用以生成數據有效信號(Dvalid),通知接收方哪些是有用數據。由于選用了DM642的可屏蔽中斷5,還需使能IER寄存器里的對應位。
TS流輸入則只需要將SUM=00,DUM=01,目的地址和源地址交換,再將EDMA中斷程序中目的地址變更到188字節后的地址。采用GP4作EDMA同步事件(即SPI時(shí)鐘),GPIO[8:15]作數據輸入,GP7作同步,采用GP6作外部中斷,用作數據有效線(xiàn)。在外部中斷中重載,在傳輸完成中斷中改變目的地址。如此則可順利接收到TS流。
pid控制相關(guān)文章:pid控制原理
評論