dsk5510_emif.tci
上传用户:dahaojd
上传日期:2008-01-29
资源大小:14357k
文件大小:5k
源码类别:

DSP编程

开发平台:

C/C++

  1. /*
  2.  *  Copyright 2002 by Spectrum Digital Incorporated.
  3.  *  All rights reserved.  Property of Spectrum Digital Incorporated.
  4.  */
  5. /*
  6.  *  EMIF is configured as follows:
  7.  *
  8.  *  CE0 - 4Mbytes of SDRAM
  9.  *  CE1 - 512Kbytes of Flash at beginning (word address 0x200000), CPLD
  10.  *        registers in middle of space at 0x300000.
  11.  *
  12.  *  The SDRAM is actually 8Mbytes in total size but since the address reach
  13.  *  of each chip enable space is only 4Mbytes it is split between CE0 and CE1.
  14.  *  The Flash memory and CPLD registers also reside in CE1.  You can choose
  15.  *  which type of memory you want to see by defining the memory type (MTYPE
  16.  *  in EMIF CE1 Space Control Register 1) as either async-16 (Flash/CPLD) or
  17.  *  SDRAM (upper half of the SDRAM).
  18.  */
  19. /*
  20.  * ======== emifCfg0 ========
  21.  * EMIF configuration settings.
  22.  */
  23. emifCfg0 = EMIF.create("emifCfg0");
  24. emifCfg0.emifManualConfigure = 1;
  25. emifCfg0.emifGcr = 0x0221;  /* EMIF Global Control Register */
  26.                 /* MEMFREQ = 01, use CPU clock / 2 on MEMCLK */
  27.                 /* WPE = 0, write posting disabled */
  28.                 /* MEMCEN = 1, enable MEMCLK on CLKMEM pin */
  29.                 /* NOHOLD = 1, don't enable HOLD requests */
  30. emifCfg0.emifGrr = 0x0fff;  /* EMIF Global Reset Register */
  31.                 /* EMIF_RESET = 0xffff, reset EMIF */
  32. emifCfg0.emifCe0scr1 = 0x3fff;  /* EMIF CE0 Space Control Register 1 */
  33.                 /* MTYPE = 011, SDRAM */
  34.                 /* Other bits do not apply */
  35. emifCfg0.emifCe0scr2 = 0x5fff;  /* EMIF CE0 Space Control Register 2 */
  36.                 /* Not used with SDRAM */
  37. emifCfg0.emifCe0scr3 = 0x0000;  /* EMIF CE0 Space Control Register 3 */
  38.                 /* Not used with SDRAM */
  39. emifCfg0.emifCe1scr1 = 0x1038;  /* EMIF CE1 Space Control Register 1 */
  40.                 /* MTYPE = 001, async-16 */
  41.                 /* READ SETUP = 0, no read setup */
  42.                 /* READ STROBE = 14, read strobe is 14 cycles long */
  43.                 /* READ HOLD = 0, no read hold */
  44. emifCfg0.emifCe1scr2 = 0x0038;  /* EMIF CE1 Space Control Register 2 */
  45.                 /* WRITE SETUP = 0, no read setup */
  46.                 /* WRITE STROBE = 14, write strobe is 14 cycles long */
  47.                 /* WRITE HOLD = 0, no write hold */
  48. emifCfg0.emifCe1scr3 = 0x0000;  /* EMIF CE1 Space Control Register 3 */
  49.                 /* TIMEOUT = 0, no timeout */
  50. emifCfg0.emifCe2scr1 = 0x1050;  /* EMIF CE2 Space Control Register 1 */
  51.                 /* MTYPE = 001, async-16 */
  52.                 /* READ SETUP = 0, no read setup */
  53.                 /* READ STROBE = 20, read strobe is 20 cycles long */
  54.                 /* READ HOLD = 0, no read hold */
  55. emifCfg0.emifCe2scr2 = 0x0050;  /* EMIF CE2 Space Control Register 2 */
  56.                 /* WRITE SETUP = 0, no read setup */
  57.                 /* WRITE STROBE = 20, write strobe is 20 cycles long */
  58.                 /* WRITE HOLD = 0, no write hold */
  59. emifCfg0.emifCe2scr3 = 0x0000;  /* EMIF CE2 Space Control Register 3 */
  60.                 /* TIMEOUT = 0, no timeout */
  61. emifCfg0.emifCe3scr1 = 0x1050;  /* EMIF CE3 Space Control Register 1 */
  62.                 /* MTYPE = 001, async-16 */
  63.                 /* READ SETUP = 0, no read setup */
  64.                 /* READ STROBE = 20, read strobe is 20 cycles long */
  65.                 /* READ HOLD = 0, no read hold */
  66. emifCfg0.emifCe3scr2 = 0x0050;  /* EMIF CE3 Space Control Register 2 */
  67.                 /* WRITE SETUP = 0, no read setup */
  68.                 /* WRITE STROBE = 20, write strobe is 20 cycles long */
  69.                 /* WRITE HOLD = 0, no write hold */
  70. emifCfg0.emifCe3scr3 = 0x0000;  /* EMIF CE3 Space Control Register 3 */
  71.                 /* TIMEOUT = 0, no timeout */
  72. emifCfg0.emifSdcr1 = 0x2b11;  /* EMIF SDRAM Control Register 1 */
  73.                 /* SDRAS = 5, SDRAS cycle time = 5 */
  74.                 /* SDSIZE = 0, 64 mbit part */
  75.                 /* SDWID = 1, 32 bits wide */
  76.                 /* RFEN = 1, enable refresh */
  77.                 /* TRCD = 1, active to command delay */
  78.                 /* TRP = 1, precharge time */
  79. emifCfg0.emifSdperiodAdv = 0x0578;  /* EMIF SDRAM Refresh Period */
  80.                 /* PERIOD = 0x0578, refresh = 14usec (1400 CLKMEM cycles) */
  81. emifCfg0.emifSdinitAdv = 0xffff;  /* EMIF SDRAM Initialization */
  82.                 /* Write triggers SDRAM initialization sequence */
  83. emifCfg0.emifSdcr2 = 0x0535;  /* EMIF SDRAM Control Register 1 */
  84.                 /* SDACC = 1, SDRAM bus interface is 32 bits wide */
  85.                 /* TMRD = 1, Mode register set to ACTV/DCAB/REFR delay */
  86.                 /* TRAS = 3, SDRAS active time */
  87.                 /* TACTV2ACTV = 5, SDRAS to SDRAS bank activate delay */
  88. emifCfg0.emifManualConfigure = 0;
  89. /*
  90.  * ======== hEMIF0 ========
  91.  * EMIF handle, pre-init with emifCfg0
  92.  */
  93. hEMIF0.emifEnablePreInit = 1;
  94. hEMIF0.emifPreInit = prog.get("emifCfg0");