Hello,
I use a custom board which has attached an external SDRAM (MT48LC32M16A2P).
I tried to perform a simple access but I did not succeed.
*(volatile uint32_t*)0x60000000 = 0xA1A2A3A4; result = *(volatile uint32_t*)0x60000000;
The result always contains 0xFFE0FFE0. Please find below the initialization steps.
uint32_t ui32Val; SysCtlPeripheralEnable(SYSCTL_PERIPH_EPI0); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOK); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOL); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOM); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPION); ui32Val = HWREG(GPIO_PORTC_BASE + GPIO_O_PCTL); ui32Val &= 0x0000FFFF; ui32Val |= 0xFFFF0000; HWREG(GPIO_PORTC_BASE + GPIO_O_PCTL) = ui32Val; // // EPI0S8 ~ EPI0S9: A6 ~ 7 // ui32Val = HWREG(GPIO_PORTA_BASE + GPIO_O_PCTL); ui32Val &= 0x00FFFFFF; ui32Val |= 0xFF000000; HWREG(GPIO_PORTA_BASE + GPIO_O_PCTL) = ui32Val; // // EPI0S10 ~ EPI0S11: G0 ~ 1 // ui32Val = HWREG(GPIO_PORTG_BASE + GPIO_O_PCTL); ui32Val &= 0xFFFFFF00; ui32Val |= 0x000000FF; HWREG(GPIO_PORTG_BASE + GPIO_O_PCTL) = ui32Val; // // EPI0S12 ~ EPI0S15: M0 ~ 3 // ui32Val = HWREG(GPIO_PORTM_BASE + GPIO_O_PCTL); ui32Val &= 0xFFFF0000; ui32Val |= 0x0000FFFF; HWREG(GPIO_PORTM_BASE + GPIO_O_PCTL) = ui32Val; // // EPI0S16 ~ EPI0S19: L0 ~ 3 // ui32Val = HWREG(GPIO_PORTL_BASE + GPIO_O_PCTL); ui32Val &= 0xFFFF0000; ui32Val |= 0x0000FFFF; HWREG(GPIO_PORTL_BASE + GPIO_O_PCTL) = ui32Val; // // EPI0S28 : B3 // ui32Val = HWREG(GPIO_PORTB_BASE + GPIO_O_PCTL); ui32Val &= 0xFFFF0FFF; ui32Val |= 0x0000F000; HWREG(GPIO_PORTB_BASE + GPIO_O_PCTL) = ui32Val; // // EPI0S29 ~ EPI0S30: N2 ~ 3 // ui32Val = HWREG(GPIO_PORTN_BASE + GPIO_O_PCTL); ui32Val &= 0xFFFF00FF; ui32Val |= 0x0000FF00; HWREG(GPIO_PORTN_BASE + GPIO_O_PCTL) = ui32Val; // // EPI0S00 ~ EPI0S03, EPI0S31 : K0 ~ 3, K5 // ui32Val = HWREG(GPIO_PORTK_BASE + GPIO_O_PCTL); ui32Val &= 0xFF0F0000; ui32Val |= 0x00F0FFFF; HWREG(GPIO_PORTK_BASE + GPIO_O_PCTL) = ui32Val; GPIOPinTypeEPI(GPIO_PORTA_BASE, EPI_PORTA_PINS); GPIOPinTypeEPI(GPIO_PORTB_BASE, EPI_PORTB_PINS); GPIOPinTypeEPI(GPIO_PORTC_BASE, EPI_PORTC_PINS); GPIOPinTypeEPI(GPIO_PORTG_BASE, EPI_PORTG_PINS); GPIOPinTypeEPI(GPIO_PORTK_BASE, EPI_PORTK_PINS); GPIOPinTypeEPI(GPIO_PORTL_BASE, EPI_PORTL_PINS); GPIOPinTypeEPI(GPIO_PORTM_BASE, EPI_PORTM_PINS); GPIOPinTypeEPI(GPIO_PORTN_BASE, EPI_PORTN_PINS); EPIDividerSet(EPI0_BASE, 1); EPIModeSet(EPI0_BASE, EPI_MODE_SDRAM); EPIConfigSDRAMSet(EPI0_BASE, (EPI_SDRAM_CORE_FREQ_50_100 | EPI_SDRAM_FULL_POWER | EPI_SDRAM_SIZE_512MBIT), 1024); EPIAddressMapSet(EPI0_BASE, EPI_ADDR_RAM_SIZE_256MB | EPI_ADDR_RAM_BASE_6); while(HWREG(EPI0_BASE + EPI_O_STAT) & EPI_STAT_INITSEQ) { }