1785-L40B程序設計 MPC8260內部的程序處理流程如圖4所示。
1785-L40B預先初始化兩個IDMA通道:通道的源地址和傳輸數據長度等信息與FPGA中的緩沖區一一對應。當收到FPGA的中斷信號之后,如果此時對應的IDMA通道空閑,則在中斷處理程序中發出CP命令開始接收數據,同時將對應的IDMA通道置忙狀態;否則,在FPGA中可能發生了未讀取的數據被覆蓋的情況,1785-L40B進入錯誤處理程序。在數據傳輸結束時由DMA控制器發送CPM內部中斷到內核,在中斷處理程序中一方面要恢復IDMA通道的參數設置,另一方面要把該IDMA通道置閑狀態等待下一次傳輸的開始。 MPC8260程序的核心部分是IDMA通道設置和中斷處理。 [align=center]
圖4 1785-L40B傳輸處理流程[/align] 2.1.1 IDMA通道設置 與一般的DMA通道設置一樣,IDMA通道設置的主要參數包括:源地址、目的地址和傳輸數據長度。除此之外,MPC8260的 IDMA通道設置還包括通道模式、緩沖區和中斷配置等,所涉及的寄存器比較多,配置比較復雜。IDMA通道設置的邏輯結構如圖5所示。 [align=center]
圖5 IDMA通道設置的邏輯結構框圖[/align] BD(Buffer Descriptors)表是用于傳輸方式、源/目的地址和數據長度等基本信息的數據結構。BD表的基地址由參數RAM中IBASE寄存器的值。除IDMA BD表的基地址之外,IDMA參數RAM內還存放有IDMA BD指針、IDMA傳輸緩沖區的起始地址、IDMA傳輸緩沖區大小和DMA通道模式等IDMA通道信息。
IDMA參數RAM的基地址由參數RAM中IDMAx_BASE寄存器的值。IDMAx_BASE寄存器的地址是固定的,如IDMA1_BASE在偏移RAM基地址0x87FE的位置。CP就是通過IDMAx_BASE寄存器找到IDMA參數RAM,再通過IBASE找到BD表的順序初始化IDMA通道的。具體的寄存器配置可以參考文獻[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