sdram_port.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /*
  2. * Copyright (c) 2006-2023, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2018-12-04 zylx The first version for STM32F4xx
  9. * 2023-08-20 yuanzihao adapter gd32f4xx
  10. */
  11. #ifndef __SDRAM_PORT_H__
  12. #define __SDRAM_PORT_H__
  13. /* parameters for sdram peripheral */
  14. #define SDRAM_DEVICE EXMC_SDRAM_DEVICE0
  15. /* Bank1 or Bank2 */
  16. #define SDRAM_TARGET_BANK 1
  17. /* stm32h7 Bank1:0XC0000000 Bank2:0XD0000000 */
  18. #define SDRAM_BANK_ADDR ((uint32_t)0XC0000000)
  19. /* data width: 8, 16, 32 */
  20. #define SDRAM_DATA_WIDTH_IN_NUMBER 16
  21. #define SDRAM_DATA_WIDTH EXMC_SDRAM_DATABUS_WIDTH_16B
  22. /* column bit numbers: 8, 9, 10, 11 */
  23. #define SDRAM_COLUMN_BITS EXMC_SDRAM_COW_ADDRESS_9
  24. /* row bit numbers: 11, 12, 13 */
  25. #define SDRAM_ROW_BITS EXMC_SDRAM_ROW_ADDRESS_13
  26. /* cas latency clock number: 1, 2, 3 */
  27. #define SDRAM_CAS_LATENCY EXMC_CAS_LATENCY_3_SDCLK
  28. /* read pipe delay: 0, 1, 2 */
  29. #define SDRAM_RPIPE_DELAY EXMC_PIPELINE_DELAY_2_HCLK
  30. /* clock divid: 2, 3 */
  31. #define SDCLOCK_PERIOD EXMC_SDCLK_PERIODS_3_HCLK
  32. /* refresh rate counter */
  33. #define SDRAM_REFRESH_COUNT ((uint32_t)0x02A5)
  34. #define SDRAM_SIZE ((uint32_t)0x2000000)
  35. #define SDRAM_TIMEOUT ((uint32_t)0x0000FFFF)
  36. /* Timing configuration for W9825G6KH-6 */
  37. /* 100 MHz of HCKL3 clock frequency (200MHz/2) */
  38. /* TMRD: 2 Clock cycles */
  39. #define LOADTOACTIVEDELAY 2
  40. /* TXSR: 8x10ns */
  41. #define EXITSELFREFRESHDELAY 8
  42. /* TRAS: 5x10ns */
  43. #define SELFREFRESHTIME 7
  44. /* TRC: 7x10ns */
  45. #define ROWCYCLEDELAY 5
  46. /* TWR: 2 Clock cycles */
  47. #define WRITERECOVERYTIME 2
  48. /* TRP: 2x10ns */
  49. #define RPDELAY 3
  50. /* TRCD: 2x10ns */
  51. #define RCDDELAY 3
  52. /* memory mode register */
  53. #define SDRAM_MODEREG_BURST_LENGTH_1 ((uint16_t)0x0000)
  54. #define SDRAM_MODEREG_BURST_LENGTH_2 ((uint16_t)0x0001)
  55. #define SDRAM_MODEREG_BURST_LENGTH_4 ((uint16_t)0x0002)
  56. #define SDRAM_MODEREG_BURST_LENGTH_8 ((uint16_t)0x0004)
  57. #define SDRAM_MODEREG_BURST_TYPE_SEQUENTIAL ((uint16_t)0x0000)
  58. #define SDRAM_MODEREG_BURST_TYPE_INTERLEAVED ((uint16_t)0x0008)
  59. #define SDRAM_MODEREG_CAS_LATENCY_2 ((uint16_t)0x0020)
  60. #define SDRAM_MODEREG_CAS_LATENCY_3 ((uint16_t)0x0030)
  61. #define SDRAM_MODEREG_OPERATING_MODE_STANDARD ((uint16_t)0x0000)
  62. #define SDRAM_MODEREG_WRITEBURST_MODE_PROGRAMMED ((uint16_t)0x0000)
  63. #define SDRAM_MODEREG_WRITEBURST_MODE_SINGLE ((uint16_t)0x0200)
  64. #endif