登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

兄弟们!我在这里跪求IC42S32200(SDRAM)初始化程序!谢谢,谢谢了

作者:wwh3000 栏目:ARM技术
兄弟们!我在这里跪求IC42S32200(SDRAM)初始化程序!谢谢,谢谢了
兄弟们!我在这里跪求IC42S32200(SDRAM)初始化程序!谢谢,谢谢了  

2楼: >>参与讨论
云雨风雷
一个工程师,动不动就“跪求”,还干这行干什么?
 
3楼: >>参与讨论
moise
re
说法比较夸张,不过可以理解的。你多看点资料嘛。
俺给你发个三星的SDRAM在AT91SAM SDRAM控制器上的初始化函数,你自己琢磨吧。

void AT91F_InitSdram (void)
{
    volatile unsigned int i;
    AT91PS_SDRC    psdrc = AT91C_BASE_SDRC;

    // Init the EBI for SDRAM
    AT91C_BASE_EBI -> EBI_CSA =  AT91C_EBI_CS1A_SDRAMC;



    AT91F_EBI_SDRAM_CfgPIO();
    // Set CONTROL Register
    psdrc->SDRC_CR =  AT91C_SDRC_NC_9         |  // 9  bits Column Addressing: 512 (A0-A8) AT91C_SDRC_NC_9
                      AT91C_SDRC_NR_13        |  // 13 bits Row Addressing     8K (A0-12)  AT91C_SDRC_NR_13
                      AT91C_SDRC_CAS_2        |  //  Check Table 8 for 7E(133) and 75(100) need CAS 2
                      AT91C_SDRC_NB_4_BANKS   |  // 4 banks
                      AT91C_SDRC_TWR_2        |
                      AT91C_SDRC_TRC_4        |
                      AT91C_SDRC_TRP_4        |
                      AT91C_SDRC_TRCD_2       |
                      AT91C_SDRC_TRAS_3       |
                      AT91C_SDRC_TXSR_4       ;
    // Wait time
    for (i =0; i< 1000;i++);

    // SDRAM initiazlization step
    psdrc->SDRC_MR = AT91C_SDRC_DBW_16_BITS | AT91C_SDRC_MODE_NOP_CMD;    // Set NOP
    *AT91C_SDRAM_BASE = 0x00000000;                                        // Perform NOP

    psdrc->SDRC_MR = AT91C_SDRC_DBW_16_BITS | 0x00000002;                // Set PRCHG AL
    *AT91C_SDRAM_BASE    = 0x00000000;                                    // Perform PRCHG

    // Wait time
    for (i =0; i< 10000;i++);

    psdrc->SDRC_MR = AT91C_SDRC_DBW_16_BITS |AT91C_SDRC_MODE_RFSH_CMD;    // Set 1st CBR
    *AT91C_SDRAM_BASE = 0x00000000;                                        // Perform CBR

    psdrc->SDRC_MR = AT91C_SDRC_DBW_16_BITS |AT91C_SDRC_MODE_RFSH_CMD;    // Set 2 CBR
    *AT91C_SDRAM_BASE = 0x00000000;                                        // Perform CBR

    psdrc->SDRC_MR    = AT91C_SDRC_DBW_16_BITS |AT91C_SDRC_MODE_RFSH_CMD;    // Set 3 CBR
    *AT91C_SDRAM_BASE = 0x00000000;                                        // Perform CBR

    psdrc->SDRC_MR    = AT91C_SDRC_DBW_16_BITS |AT91C_SDRC_MODE_RFSH_CMD;    // Set 4 CBR
    *AT91C_SDRAM_BASE = 0x00000000;                                        // Perform CBR

    psdrc->SDRC_MR    = AT91C_SDRC_DBW_16_BITS |AT91C_SDRC_MODE_RFSH_CMD;    // Set 5 CBR
    *AT91C_SDRAM_BASE = 0x00000000;                                        // Perform CBR

    psdrc->SDRC_MR    = AT91C_SDRC_DBW_16_BITS | AT91C_SDRC_MODE_RFSH_CMD;// Set 6 CBR
    *AT91C_SDRAM_BASE = 0x00000000;                                        // Perform CBR

    psdrc->SDRC_MR    = AT91C_SDRC_DBW_16_BITS | AT91C_SDRC_MODE_RFSH_CMD;// Set 7 CBR
    *AT91C_SDRAM_BASE = 0x00000000;                                        // Perform CBR

    psdrc->SDRC_MR    = AT91C_SDRC_DBW_16_BITS | AT91C_SDRC_MODE_RFSH_CMD;// Set 8 CBR
    *AT91C_SDRAM_BASE = 0x00000000;                                        // Perform CBR

    psdrc->SDRC_MR    = AT91C_SDRC_DBW_16_BITS | AT91C_SDRC_MODE_LMR_CMD;    // Set LMR operation
    *(AT91C_SDRAM_BASE  + 20)= 0xcafedede;                    &n
4楼: >>参与讨论
moise
re:
需要的数据定义在头文件里:

sdram.h
#ifndef SDRAM_H
#define SDRAM_H
#define AT91C_SDRAM_BASE     ((volatile unsigned int *)0x20000000)

//* Data bus definition MT48LC16M16A2   AT91SA7SE
#define DQ0             (unsigned int) AT91C_PC0_D0
#define DQ1             (unsigned int) AT91C_PC1_D1
#define DQ2             (unsigned int) AT91C_PC2_D2
#define DQ3             (unsigned int) AT91C_PC3_D3
#define DQ4             (unsigned int) AT91C_PC4_D4
#define DQ5             (unsigned int) AT91C_PC5_D5
#define DQ6             (unsigned int) AT91C_PC6_D6
#define DQ7             (unsigned int) AT91C_PC7_D7
#define DQ8             (unsigned int) AT91C_PC8_D8
#define DQ9             (unsigned int) AT91C_PC9_D9
#define DQ10            (unsigned int) AT91C_PC10_D10
#define DQ11            (unsigned int) AT91C_PC11_D11
#define DQ12            (unsigned int) AT91C_PC12_D12
#define DQ13            (unsigned int) AT91C_PC13_D13
#define DQ14            (unsigned int) AT91C_PC14_D14
#define DQ15            (unsigned int) AT91C_PC15_D15

//* Address bus definition MT48LC16M16A2   AT91SA7SE
//* 16 bits data interface unur 4 banks
#define DQML            (unsigned int) AT91C_PB0_A0_NBS0
#define DQMLH           (unsigned int) AT91C_PA23_NWR1_NBS1_CFIOR_NUB

#define DA0             (unsigned int) AT91C_PB2_A2
#define DA1             (unsigned int) AT91C_PB3_A3
#define DA2             (unsigned int) AT91C_PB4_A4
#define DA3             (unsigned int) AT91C_PB5_A5
#define DA4             (unsigned int) AT91C_PB6_A6
#define DA5             (unsigned int) AT91C_PB7_A7
#define DA6             (unsigned int) AT91C_PB8_A8
#define DA7             (unsigned int) AT91C_PB9_A9
#define DA8             (unsigned int) AT91C_PB10_A10
#define DA9             (unsigned int) AT91C_PB11_A11
#define DA10            (unsigned int) AT91C_PA24_SDA10  // PIO A
#define DA11            (unsigned int) AT91C_PB13_A13
#define DA12            (unsigned int) AT91C_PB14_A14

#define BA0             (unsigned int) AT91C_PB16_A16_BA0
#define BA1             (unsigned int) AT91C_PB17_A17_BA1


//* CONTROL bus definition MT48LC16M16A2   AT91SA7SE
#define CKE             (unsigned int) AT91C_PA25_SDCKE
#define SDWE            (unsigned int) AT91C_PA27_SDWE
#define CAS             (unsigned int) AT91C_PA28_CAS
#define RAS             (unsigned int) AT91C_PA29_RAS

//* SDRAM Configuration MT48LC16M16A2

// SDRAM Size    256 Mbits    32 Mbytes    8 MWords ( 4 bytes)
#define AT91C_SDRAM_SIZE_bits   ((256*1024*1024)/4)       // 256 Mbits
#define AT91C_SDRAM_SIZE        ((32*1024*1024)/4)     // 8 MWords (Unsigned int)


#define AT91C_SDRC_TWR_2    ((unsigned int) 0x2 <<  7) // (SDRC) NUMBER of Write Recovery Time Cycles
#define AT91C_SDRC_TRC_4    ((unsigned int) 0x4 << 11) // (SDRC) NUMBER of RAS Cycle Time Cycles 7
#define AT91C_SDRC_TRP_4    ((unsigned int) 0x4 << 15) // (SDRC) NUMBER of RAS Precharge Time Cycles
#define AT91C_SDRC_TRCD_2   ((unsigned int) 0x2 << 19) // (SDRC) NUMBER of RAS to CAS Delay Cycles 2
#define AT91C_SDRC_TRAS_3   ((unsigned int) 0x3 << 23) // (SDRC) NUMBER of RAS Active Time Cycles 5
#define AT91C_SDRC_TXSR_4   ((unsigned int) 0x4 << 27) // (SDRC) NUMBER of Command Recovery Time Cycles 8

// Refresh time 336 for 48MHZ (TR= 15.6 * F ) 1/7 = 0.1428
// Refresh period (8,192 rows)
// Time 64ms    8192 row    Refresh period 祍 7,8125    nb cycles 375,00

#define AT91C_SDRC_TR_TIME  ((AT91B_MCK * 8) / 1000000)    // refresh time 384 ( 375+ 2%error)

//*----------------------------------------------------------------------------
//* External function prototype
//*----------------------------------------------------------------------------

extern void AT91F_EBI_SDRAM_CfgPIO(void);
extern void AT91F_InitSDRAM (void);

#endif     //  SDRAM_H

参与讨论
昵称:
讨论内容:
 
 
相关帖子
at91sam7x256的DBGU 串口能做其他用途吗?
求单片机破解高手解密!!!!!n
h-jtag可以支持AT91M55800吗?
网络转串口模块
求助:AT91SM7S系列的ARM的ADC采样速度~~~~
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号