eMIF初始化函数如下,请帮忙指出问题,给出解决方案,谢谢!
void InitEMIF(void)
{
EMIF_AsyncTimingParams tParamAsync;
EMIF_SyncConfig sdConfig;
EMIF_SyncTimingParams tParam;
/********************************EMIF1 FOR FPGA************************************************/
// Configure to run EMIF1 on full Rate. (EMIF1CLK = CPU1SYSCLK)
//
SysCtl_setEMIF1ClockDivider(SYSCTL_EMIF1CLK_DIV_2); // half rate
//
// Grab EMIF1 For CPU1.
//
EMIF_selectMaster(EMIF1CONFIG_BASE, EMIF_MASTER_CPU1_NG);//for ad7616
//
// Disable Access Protection. (CPU_FETCH/CPU_WR/DMA_WR)
//
EMIF_setAccessProtection(EMIF1CONFIG_BASE, 0x0);
//
// Commit the configuration related to protection. Till this bit remains
// set, contents of EMIF1ACCPROT0 register can't be changed.
//
EMIF_commitAccessConfig(EMIF1CONFIG_BASE);
//
// Lock the configuration so that EMIF1COMMIT register can't be changed
// any more.
//
EMIF_lockAccessConfig(EMIF1CONFIG_BASE);
//
// Configure GPIO pins for EMIF1.
//
setupEMIF1PinmuxAsync16Bit();
//
// Configures Normal Asynchronous Mode of Operation.
//
// CS3 selected
EMIF_setAsyncMode(EMIF1_BASE, EMIF_ASYNC_CS3_OFFSET, EMIF_ASYNC_NORMAL_MODE);
EMIF_setAsyncMode(EMIF1_BASE, EMIF_ASYNC_CS2_OFFSET, EMIF_ASYNC_NORMAL_MODE);//for ad7616
//
// Disables Extended Wait Mode.
//
// CS3 selected
EMIF_disableAsyncExtendedWait(EMIF1_BASE, EMIF_ASYNC_CS3_OFFSET); // 使用
EMIF_disableAsyncExtendedWait(EMIF1_BASE, EMIF_ASYNC_CS2_OFFSET);//for ad7616
//
// Configure EMIF1 Data Bus Width.
//
// CS3 selected
EMIF_setAsyncDataBusWidth(EMIF1_BASE, EMIF_ASYNC_CS3_OFFSET, EMIF_ASYNC_DATA_WIDTH_16);
EMIF_setAsyncDataBusWidth(EMIF1_BASE, EMIF_ASYNC_CS2_OFFSET, EMIF_ASYNC_DATA_WIDTH_16);//for ad7616
// PengXL
// Configure the access timing for CS3 space.
//
tParamAsync.rSetup = 3; //读设置时间
tParamAsync.rStrobe = 8; //读选通宽度
tParamAsync.rHold = 2; //读保持时间
tParamAsync.turnArnd = 0; //转向时间
tParamAsync.wSetup = 2; //写设置时间
tParamAsync.wStrobe = 3; //写选通宽度
tParamAsync.wHold = 2; //写保持时间
EMIF_setAsyncTimingParams(EMIF1_BASE, EMIF_ASYNC_CS3_OFFSET, &tParamAsync);
//
// Configure the access timing for CS2 space.
//
tParamAsync.rSetup = 3;
tParamAsync.rStrobe = 10;
tParamAsync.rHold = 2;
tParamAsync.turnArnd = 4;
tParamAsync.wSetup = 3;
tParamAsync.wStrobe = 6;
tParamAsync.wHold = 2;
EMIF_setAsyncTimingParams(EMIF1_BASE, EMIF_ASYNC_CS2_OFFSET, &tParamAsync);//for ad7616
//
// Adding some delay.
//
int i;
for(i = 0; i < 123; i++)
{
asm(" NOP");
}
}