drv_sdram.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. /*
  2. * Copyright (c) 2006-2021, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2022-04-08 shelton first version
  9. */
  10. #ifndef __DRV_SDRAM_H__
  11. #define __DRV_SDRAM_H__
  12. #include <rtthread.h>
  13. /* parameters for sdram peripheral */
  14. /* bank1 or bank2 */
  15. #define SDRAM_TARGET_BANK 1
  16. /* at32f435 bank1:0xc0000000 bank2:0xd0000000 */
  17. #define SDRAM_BANK_ADDR ((uint32_t)0xC0000000)
  18. /* data width: 8, 16, 32 */
  19. #define SDRAM_DATA_WIDTH 16
  20. /* column bit numbers: 8, 9, 10, 11 */
  21. #define SDRAM_COLUMN_BITS 9
  22. /* row bit numbers: 11, 12, 13 */
  23. #define SDRAM_ROW_BITS 13
  24. /* cas latency clock number: 1, 2, 3 */
  25. #define SDRAM_CAS_LATENCY 3
  26. /* read pipe delay: 0, 1, 2 */
  27. #define SDRAM_RPIPE_DELAY 1
  28. /* clock divid: 2, 3 */
  29. #define SDCLOCK_PERIOD 3
  30. /* refresh rate counter */
  31. /* counter = (refresh_count * 1000 * SDCLK) / row - 20 */
  32. /* counter = (64ms * 1000 * 144MHz) / 2^13 - 20 */
  33. #define SDRAM_REFRESH_COUNT ((uint32_t)0x0451)
  34. #define SDRAM_SIZE ((uint32_t)0x1000000)
  35. /* tmrd */
  36. #define LOADTOACTIVEDELAY XMC_DELAY_CYCLE_2
  37. /* txsr */
  38. #define EXITSELFREFRESHDELAY XMC_DELAY_CYCLE_11
  39. /* tras */
  40. #define SELFREFRESHTIME XMC_DELAY_CYCLE_7
  41. /* trc */
  42. #define ROWCYCLEDELAY XMC_DELAY_CYCLE_9
  43. /* twr */
  44. #define WRITERECOVERYTIME XMC_DELAY_CYCLE_2
  45. /* trp */
  46. #define RPDELAY XMC_DELAY_CYCLE_3
  47. /* trcd */
  48. #define RCDDELAY XMC_DELAY_CYCLE_3
  49. /* memory mode register */
  50. #define SDRAM_BURST_LEN_1 ((uint16_t)0x0000)
  51. #define SDRAM_BURST_LEN_2 ((uint16_t)0x0001)
  52. #define SDRAM_BURST_LEN_4 ((uint16_t)0x0002)
  53. #define SDRAM_BURST_LEN_8 ((uint16_t)0x0004)
  54. #define SDRAM_BURST_SEQUENTIAL ((uint16_t)0x0000)
  55. #define SDRAM_BURST_INTERLEAVED ((uint16_t)0x0008)
  56. #define SDRAM_CAS_LATENCY_1 ((uint16_t)0x0010)
  57. #define SDRAM_CAS_LATENCY_2 ((uint16_t)0x0020)
  58. #define SDRAM_CAS_LATENCY_3 ((uint16_t)0x0030)
  59. #define SDRAM_OPERATING_MODE_STANDARD ((uint16_t)0x0000)
  60. #define SDRAM_WR_BURST_PROGRAMMED ((uint16_t)0x0000)
  61. #define SDRAM_WR_BURST_SINGLE ((uint16_t)0x0200)
  62. #ifdef __cplusplus
  63. }
  64. #endif
  65. #endif /* __DRV_SDRAM_H__ */