1785-L40B程序設(shè)計(jì) MPC8260內(nèi)部的程序處理流程如圖4所示。
1785-L40B預(yù)先初始化兩個(gè)IDMA通道:通道的源地址和傳輸數(shù)據(jù)長度等信息與FPGA中的緩沖區(qū)一一對應(yīng)。當(dāng)收到FPGA的中斷信號之后,如果此時(shí)對應(yīng)的IDMA通道空閑,則在中斷處理程序中發(fā)出CP命令開始接收數(shù)據(jù),同時(shí)將對應(yīng)的IDMA通道置忙狀態(tài);否則,在FPGA中可能發(fā)生了未讀取的數(shù)據(jù)被覆蓋的情況,1785-L40B進(jìn)入錯誤處理程序。在數(shù)據(jù)傳輸結(jié)束時(shí)由DMA控制器發(fā)送CPM內(nèi)部中斷到內(nèi)核,在中斷處理程序中一方面要恢復(fù)IDMA通道的參數(shù)設(shè)置,另一方面要把該IDMA通道置閑狀態(tài)等待下一次傳輸?shù)拈_始。 MPC8260程序的核心部分是IDMA通道設(shè)置和中斷處理。 [align=center]
圖4 1785-L40B傳輸處理流程[/align] 2.1.1 IDMA通道設(shè)置 與一般的DMA通道設(shè)置一樣,IDMA通道設(shè)置的主要參數(shù)包括:源地址、目的地址和傳輸數(shù)據(jù)長度。除此之外,MPC8260的 IDMA通道設(shè)置還包括通道模式、緩沖區(qū)和中斷配置等,所涉及的寄存器比較多,配置比較復(fù)雜。IDMA通道設(shè)置的邏輯結(jié)構(gòu)如圖5所示。 [align=center]
圖5 IDMA通道設(shè)置的邏輯結(jié)構(gòu)框圖[/align] BD(Buffer Descriptors)表是用于傳輸方式、源/目的地址和數(shù)據(jù)長度等基本信息的數(shù)據(jù)結(jié)構(gòu)。BD表的基地址由參數(shù)RAM中IBASE寄存器的值。除IDMA BD表的基地址之外,IDMA參數(shù)RAM內(nèi)還存放有IDMA BD指針、IDMA傳輸緩沖區(qū)的起始地址、IDMA傳輸緩沖區(qū)大小和DMA通道模式等IDMA通道信息。
IDMA參數(shù)RAM的基地址由參數(shù)RAM中IDMAx_BASE寄存器的值。IDMAx_BASE寄存器的地址是固定的,如IDMA1_BASE在偏移RAM基地址0x87FE的位置。CP就是通過IDMAx_BASE寄存器找到IDMA參數(shù)RAM,再通過IBASE找到BD表的順序初始化IDMA通道的。具體的寄存器配置可以參考文獻(xiàn)[1]第19章的IDMA編程示例。
YASKAWA ELECTRIC CIMR-F7U40451E-?133 NSFP CIMRF7U40451E13?3
NAMCO ER920-13812 NSPP ER92013812
OMRON Z550-MC15 NSFP Z550MC15
KELLER TECHNOLOGY CORP 14449-5011 NSPP 144495011
GENERAL ELECTRIC 117D6635G2 USPP 117D6635G2
YASKAWA ELECTRIC CIMR-P5U20300F NSFP CIMRP5U20300F
FANUC A16B-0160-0970 NSPP A16B01600970
WESTINGHOUSE 4D14854G02 USPP 4D14854G02
FOXBORO 220S-3F6-C USPP 220S3F6C
RELIANCE ELECTRIC 864660-75R USPP 86466075R
FISHER ROSEMOUNT CL6003 USPP CL6003
FISHER ROSEMOUNT CL6003X1 USPP CL6003X1
FISHER ROSEMOUNT CL6003X1-A3 USPP CL6003X1A3
FISHER ROSEMOUNT CL6011X1-BA1 USPP CL6011X1BA1
STROMBERG SAFT-101-C0N USPP SAFT101C0N
ALLEN BRADLEY 1774-LP3 USPP 1774LP3
EMECANIQUE VSD57CD33N46 NSFP VSD57CD33N46