TI中文支持网
TI专业的中文技术问题搜集分享网站

关于采用异步EMIFA与FPGA通信方式的问题

请问,我在DSP端配置好异步EMIFA接口,采用oe we clk cs2 这几个信号,和地址、数据总线与fpga连接,DSP配置如下:
DEVICE_LPSCTransition(PSCNUM0, LPSC_EMIFA, PD0, PSC_ENABLE);
//
//// Set PINMUX for EMIF useDEVICE_pinmuxControl(6 ,0x0000000F,0x00000001);  // EMA_CLKDEVICE_pinmuxControl(7 ,0xF0FF000F,0x10110001); // nEMA_WE, nEMA_OE, nEMA_CS[2]DEVICE_pinmuxControl(8 ,0xFFFFFFFF,0x11111111); // EMA_D[15:8]DEVICE_pinmuxControl(9 ,0xFFFFFFFF,0x11111111); // EMA_D[7:0]DEVICE_pinmuxControl(11,0xFFFFFFFF,0x11111111); // EMA_A[15..8]DEVICE_pinmuxControl(12,0xFFFFFFFF,0x11111111); // EMA_A[7..0]//Set async mode as normal modeEMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_2, EMIFA_ASYNC_INTERFACE_NORMAL_MODE);//Disable the wait pinEMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_2,EMIFA_EXTENDED_WAIT_DISABLE);//Timing configEMIFAWaitTimingConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_2,						EMIFA_ASYNC_WAITTIME_CONFIG(1,2,1,1,2,1,0));//Width configEMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_2,EMIFA_DATA_BUSWITTH_16BIT);

 程序主循环
while(1)
	{


		HWREG(SOC_EMIFA_CS2_ADDR+emifa_cs2_offset) = emifa_cs2_offset * 2;
		Delay(0x000000f);
		emifa_read = HWREG(SOC_EMIFA_CS2_ADDR+emifa_cs2_offset) ;	// read a data;
		Delay(0x000000f);

		if(emifa_cs2_offset++ >= 1023)
			emifa_cs2_offset = 0;
	}

现在产生的问题是,每一个读写周期中,CS片选拉低的时间内,读写操作分别会产生2个oe和we信号,并且第一个we有效时,数据总线是正确的,但是第二个we信号,总线数据是0。请问这是怎么回事,是不是我哪里配置错了

Tony Tang:

HWREG是32bit的指针操作,而EMIFA是16bit的,一个32bit的CPU操作到EMIFA接口分解为2个16bit的硬件动作。是正确的。

Camel Santo:

回复 Tony Tang:

您好,麻烦问下,我用的16bit,发送数据正常,但是地址偏移需要*2 是为什么?就是想发送0x0003的地址,emif偏移就得0x0006。。。也是异步CS5和fpga通讯

赞(0)
未经允许不得转载:TI中文支持网 » 关于采用异步EMIFA与FPGA通信方式的问题
分享到: 更多 (0)