用F28379的EMIF向FPGA传数据,程序如下:
FLUSHSECTOR = 1; DAB = 255;
其中,FLUSHSECTOR和DAB分别为地址*(Uint16 *)0x0010001E和*(Uint16 *)0x00100004。FPGA输出两个信号,用来观察数据传输是否正确。如下图所示
其中黑色实线用来判断数据线EM1D上是否为255,红色虚线为接收到的DAB地址使能信号。根据上面的程序,DAB地址线使能时,EM1D上的数据应为255,但实际结果却是DAB为高时,EM1D的数据要过较长实际才能变为255,这导致FPGA收到的数据不正确。
调了2天了,还是没找到问题的解决办法,确定不是FPGA的问题。
下面是EMIF的配置,麻烦TI的工程师看一下。
ClkCfgRegs.PERCLKDIVSEL.bit.EMIF1CLKDIV = 0;//EMIF时钟为200MHzEmif1Regs.ASYNC_CS2_CR.bit.ASIZE = 1; //16位模式Emif1Regs.ASYNC_CS2_CR.bit.TA = 0;Emif1Regs.ASYNC_CS2_CR.bit.R_HOLD = 0;//1个保持周期Emif1Regs.ASYNC_CS2_CR.bit.R_STROBE = 1; //2个建立周期Emif1Regs.ASYNC_CS2_CR.bit.R_SETUP = 0; //1个建立周期Emif1Regs.ASYNC_CS2_CR.bit.W_HOLD = 0;//1个保持周期Emif1Regs.ASYNC_CS2_CR.bit.W_STROBE = 1; //2个建立周期Emif1Regs.ASYNC_CS2_CR.bit.W_SETUP = 0; //1个建立周期Emif1Regs.ASYNC_CS2_CR.bit.EW = 0; //禁止等待Emif1Regs.ASYNC_CS2_CR.bit.SS = 0; //禁止Strobe Mode
user1916977:
解决问题了,是GPIO口设置的问题。EM1D对应的GPIO千万别设置成集电极开路。。。