I am developing on a F28388D ControlCard and have run into a slight issue using External Memory Interface2 (EMIF2). I have configured GPIO's -
GPIO_setPinConfig(GPIO_118_EMIF2_CLK);
GPIO_setPinConfig(GPIO_120_EMIF2_WEN);
GPIO_setPinConfig(GPIO_116_EMIF2_CS2N);
GPIO_setPinConfig(GPIO_121_EMIF2_OEN);
GPIO_setPinConfig(GPIO_98_EMIF2_A0);
GPIO_setPinConfig(GPIO_99_EMIF2_A1);
GPIO_setPinConfig(GPIO_100_EMIF2_A2);
GPIO_setPinConfig(GPIO_101_EMIF2_A3);
GPIO_setPinConfig(GPIO_102_EMIF2_A4);
GPIO_setPinConfig(GPIO_103_EMIF2_A5);
GPIO_setPinConfig(GPIO_104_EMIF2_A6);
GPIO_setPinConfig(GPIO_105_EMIF2_A7);
GPIO_setPinConfig(GPIO_106_EMIF2_A8);
GPIO_setPinConfig(GPIO_107_EMIF2_A9);
GPIO_setPinConfig(GPIO_108_EMIF2_A10);
GPIO_setPinConfig(GPIO_109_EMIF2_A11);
GPIO_setPinConfig(GPIO_95_EMIF2_A12);
GPIO_setPinConfig(GPIO_53_EMIF2_D15);
GPIO_setPinConfig(GPIO_54_EMIF2_D14);
GPIO_setPinConfig(GPIO_55_EMIF2_D13);
GPIO_setPinConfig(GPIO_56_EMIF2_D12);
GPIO_setPinConfig(GPIO_57_EMIF2_D11);
GPIO_setPinConfig(GPIO_58_EMIF2_D10);
GPIO_setPinConfig(GPIO_59_EMIF2_D9);
GPIO_setPinConfig(GPIO_60_EMIF2_D8);
GPIO_setPinConfig(GPIO_61_EMIF2_D7);
GPIO_setPinConfig(GPIO_62_EMIF2_D6);
GPIO_setPinConfig(GPIO_63_EMIF2_D5);
GPIO_setPinConfig(GPIO_134_EMIF2_D4);
GPIO_setPinConfig(GPIO_65_EMIF2_D3);
GPIO_setPinConfig(GPIO_66_EMIF2_D2);
GPIO_setPinConfig(GPIO_67_EMIF2_D1);
GPIO_setPinConfig(GPIO_68_EMIF2_D0);
GPIO_setPinConfig(GPIO_112_EMIF2_BA1);
EM2A12-EM2A0, and EM2BA1 (respectively). I am using chip select 2 (CS2) and have configured it for 16-bit data (ASIZE=1)
EMIF_setAsyncMode(EMIF2_BASE, EMIF_ASYNC_CS2_OFFSET,
EMIF_ASYNC_STROBE_MODE);
EMIF_setAsyncDataBusWidth(EMIF2_BASE, EMIF_ASYNC_CS2_OFFSET, EMIF_ASYNC_DATA_WIDTH_16);
I am performing consecutive 16-bit writes to addresses 0x2000 - 0x20FF and am monitoring the CS2 on an oscilloscope. When I write to address 0x20xx, I see two cycle:
CS2 go LOW and EM2BA1 LOW with 16bit DATAWRITE==memDATAW (it's OK)
then cycle 2:
CS2 go LOW and EM2BA1 HIGH with 16bit DATAWRITE== 0x00 (it's problem)
In cycle 2 damage Last data SRAM .
uint16_t ASRAM_WriteMem(uint32_t startAddr, uint16_t memDATAW)
{
uint16_t memWriteData;
uint32_t *memPtr;
memPtr = (uint32_t *)startAddr;
memWriteData = memDATAW;
*memPtr = memWriteData; // In cycle 2 - ??????
return(0);
}
What am I doing wrong? Am I not correctly understanding EMIF_setAsyncMode