реклама на сайте
подробности

 
 
> AT91RM9200 + IS42S16400B нужна помощь
Bitman
сообщение Sep 12 2008, 09:05
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 25-01-08
Пользователь №: 34 422



Не удается запустить SDRAM IS42S16400B на платке с AT91RM9200. Возможно что-то напутал с таймингами ...

Если есть у кого работающий код инициализации этих SDRAM, поделитесь пожалуйста!

Или, возможно, найдете ошибку в моём?

Код
#define SLOWCLOCK                32768        //* In Hz
#define MAIN_OSC_CLK                        16000000    //* In Hz
#define CPU_HZ                                  (MAIN_OSC_CLK * 45 / 4) // Processor clock (180,000000 MHz for PCK).
#define MASTER_CLOCK                            (CPU_HZ / 3) // Master clock 60.000 MHz

#define  BSP_CLK_DBGU_BAUD_RATE                       115200

#define    PLLAR                           0x202CBF04    // 180,000000 MHz for PCK
#define    PLLBR                           0x10173E04    // 48,000000 MHz (divider by 2 for USB)
#define    MCKR                            0x00000202    // PCK/3 = MCK Master Clock = 60,000000 MHz with PLLA selected


#define C1_IDC        (1<<2)    // icache and/or dcache off/on
#define DRAM_SIZE       0x1000000

#define BASE_EBI_CS1_ADDRESS    0x20000000    //* base address to access memory on CS1

void AT91F_InitSDRAM()
{
        int     i;
    volatile int     *pSDRAM = (int *)BASE_EBI_CS1_ADDRESS;
        
        //unsigned int sdram_cfg;

    //* Configure PIOC as peripheral (D16/D31)
    AT91F_SDRC_CfgPIO();
    
    // Setup MEMC to support CS0=FLASH, CS1=SDRAM
    AT91C_BASE_EBI->EBI_CSA |= AT91C_EBI_CS1A_SDRAMC;
    AT91C_BASE_EBI->EBI_CFGR = (AT91C_EBI_DBPUC & 0x00) | (AT91C_EBI_EBSEN & 0x00);

    //* Init SDRAM
        
        #define AT91C_SDRC_TWR_1        ((unsigned int) 0x1 <<  7) //  10ns (SDRC) Number of Write Recovery Time Cycles
        #define AT91C_SDRC_TRC_6        ((unsigned int) 0x6 << 11) // -70ns (SDRC) Number of RAS Cycle Time Cycles
        #define AT91C_SDRC_TRP_2        ((unsigned int) 0x2 << 15) // -20ns (SDRC) Number of RAS Precharge Time Cycles
        #define AT91C_SDRC_TRCD_2       ((unsigned int) 0x2 << 19) // -20ns (SDRC) Number of RAS to CAS Delay Cycles
        #define AT91C_SDRC_TRAS_4       ((unsigned int) 0x4 << 23) // -50ns (SDRC) Number of RAS Active Time Cycles
        #define AT91C_SDRC_TXSR_1       ((unsigned int) 0x1 << 27) // (SDRC) Number of Command Recovery Time Cycles

        
        #define SDRC_CR_VAL         \
    (             \
     AT91C_SDRC_NR_12    |\
     AT91C_SDRC_NB_4_BANKS    |\
     AT91C_SDRC_CAS_2    |\
     AT91C_SDRC_TWR_1    |\
     AT91C_SDRC_TRC_6    |\
     AT91C_SDRC_TRP_2    |\
     AT91C_SDRC_TRCD_2    |\
     AT91C_SDRC_TRAS_4    |\
     AT91C_SDRC_TXSR_1     \
    )


    //* 1. A minimum pause of 200us is provided to precede any signal toggle
        //sdram_cfg = AT91C_SDRC_NC_9 | SDRC_CR_VAL;
    //AT91C_BASE_SDRC->SDRC_CR = sdram_cfg;
    AT91C_BASE_SDRC->SDRC_CR = AT91C_SDRC_NC_8 | SDRC_CR_VAL;

    //* 2. A Precharge All command is issued to the SDRAM
    AT91C_BASE_SDRC->SDRC_MR = AT91C_SDRC_MODE_PRCGALL_CMD;
    *pSDRAM = 0;

    //* 3. Eight Auto-refresh are provided
    AT91C_BASE_SDRC->SDRC_MR = AT91C_SDRC_MODE_RFSH_CMD;
    for(i=0;i<8;i++)
        *pSDRAM = 0;

    //* 4. A mode register cycle is issued to program the SDRAM parameters
    AT91C_BASE_SDRC->SDRC_MR = AT91C_SDRC_MODE_LMR_CMD;
    *(pSDRAM+0x80) = 0;

    //* 5. Write refresh rate into SDRAMC refresh timer COUNT register
        AT91C_BASE_SDRC->SDRC_TR = (AT91C_SDRC_COUNT & (64 * (MASTER_CLOCK / 1000) / 4096));
        *pSDRAM = 0;

        // Extra: Self refresh on
        AT91C_BASE_SDRC->SDRC_SRR = AT91C_SDRC_SRCB;
        *pSDRAM = 0;
        
    //* 6. A Normal Mode Command is provided, 3 clocks after tMRD is set
    AT91C_BASE_SDRC->SDRC_MR = AT91C_SDRC_MODE_NORMAL_CMD;
    *pSDRAM = 0;
}
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 05:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01317 секунд с 7
ELECTRONIX ©2004-2016