drv_sdram.h 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /*
  2. * File : drv_sdram.h
  3. * This file is part of RT-Thread RTOS
  4. * COPYRIGHT (C) 2015 RT-Thread Develop Team
  5. *
  6. * The license and distribution terms for this file may be
  7. * found in the file LICENSE in this distribution or at
  8. * http://www.rt-thread.org/license/LICENSE
  9. *
  10. * Change Logs:
  11. * Date Author Notes
  12. * 2015-08-03 xiaonong The first version for STM32F7
  13. */
  14. #ifndef __DRV_SDRAM_H__
  15. #define __DRV_SDRAM_H__
  16. #include <rtthread.h>
  17. #include <board.h>
  18. /** @defgroup STM32746G_DISCOVERY_SDRAM_Exported_Constants STM32746G_DISCOVERY_SDRAM Exported Constants
  19. * @{
  20. */
  21. #define SDRAM_DEVICE_ADDR ((uint32_t)EXT_SDRAM_BEGIN)
  22. #define SDRAM_DEVICE_SIZE ((uint32_t)EXT_SDRAM_SIZE) /* SDRAM device size in MBytes */
  23. /* #define SDRAM_MEMORY_WIDTH FMC_SDRAM_MEM_BUS_WIDTH_8 */
  24. #define SDRAM_MEMORY_WIDTH FMC_SDRAM_MEM_BUS_WIDTH_16
  25. #define SDCLOCK_PERIOD FMC_SDRAM_CLOCK_PERIOD_2
  26. /* #define SDCLOCK_PERIOD FMC_SDRAM_CLOCK_PERIOD_3 */
  27. #define REFRESH_COUNT ((uint32_t)0x0603) /* SDRAM refresh counter (100Mhz SD clock) */
  28. #define SDRAM_TIMEOUT ((uint32_t)0xFFFF)
  29. /* DMA definitions for SDRAM DMA transfer */
  30. #define SDRAM_DMA_CLK_ENABLE __HAL_RCC_DMA2_CLK_ENABLE
  31. #define SDRAM_DMA_CLK_DISABLE __HAL_RCC_DMA2_CLK_DISABLE
  32. #define SDRAM_DMA_CHANNEL DMA_CHANNEL_0
  33. #define SDRAM_DMA_STREAM DMA2_Stream0
  34. #define SDRAM_DMA_IRQn DMA2_Stream0_IRQn
  35. #define SDRAM_DMA_IRQHandler DMA2_Stream0_IRQHandler
  36. /**
  37. * @brief FMC SDRAM Mode definition register defines
  38. */
  39. #define SDRAM_MODEREG_BURST_LENGTH_1 ((uint16_t)0x0000)
  40. #define SDRAM_MODEREG_BURST_LENGTH_2 ((uint16_t)0x0001)
  41. #define SDRAM_MODEREG_BURST_LENGTH_4 ((uint16_t)0x0002)
  42. #define SDRAM_MODEREG_BURST_LENGTH_8 ((uint16_t)0x0004)
  43. #define SDRAM_MODEREG_BURST_TYPE_SEQUENTIAL ((uint16_t)0x0000)
  44. #define SDRAM_MODEREG_BURST_TYPE_INTERLEAVED ((uint16_t)0x0008)
  45. #define SDRAM_MODEREG_CAS_LATENCY_2 ((uint16_t)0x0020)
  46. #define SDRAM_MODEREG_CAS_LATENCY_3 ((uint16_t)0x0030)
  47. #define SDRAM_MODEREG_OPERATING_MODE_STANDARD ((uint16_t)0x0000)
  48. #define SDRAM_MODEREG_WRITEBURST_MODE_PROGRAMMED ((uint16_t)0x0000)
  49. #define SDRAM_MODEREG_WRITEBURST_MODE_SINGLE ((uint16_t)0x0200)
  50. rt_err_t sdram_hw_init(void);
  51. rt_err_t sdram_hw_deinit(void);
  52. rt_err_t SDRAM_WriteDataDMA(uint32_t Address, uint32_t *Data, uint32_t DataSize);
  53. rt_err_t SDRAM_WriteData(uint32_t Address, uint32_t *Data, uint32_t DataSize);
  54. rt_err_t SDRAM_ReadDataDMA(uint32_t Address, uint32_t *Data, uint32_t DataSize);
  55. rt_err_t SDRAM_ReadData(uint32_t Address, uint32_t *Data, uint32_t DataSize);
  56. #endif