ebi.h 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. /****************************************************************************//**
  2. * @file ebi.h
  3. * @version V0.10
  4. * $Revision: 6 $
  5. * $Date: 14/09/30 1:12p $
  6. * @brief NUC472/NUC442 EBI driver header file
  7. *
  8. * @note
  9. * Copyright (C) 2014 Nuvoton Technology Corp. All rights reserved.
  10. *****************************************************************************/
  11. #ifndef __EBI_H__
  12. #define __EBI_H__
  13. #ifdef __cplusplus
  14. extern "C"
  15. {
  16. #endif
  17. /** @addtogroup NUC472_442_Device_Driver NUC472/NUC442 Device Driver
  18. @{
  19. */
  20. /** @addtogroup NUC472_442_EBI_Driver EBI Driver
  21. @{
  22. */
  23. /** @addtogroup NUC472_442_EBI_EXPORTED_CONSTANTS EBI Exported Constants
  24. @{
  25. */
  26. /* Bank-0 constants */
  27. #define EBI0_BASE_ADDR 0x60000000 ///<EBI bank 0 base address , 0x60000000 ~ 0x63FFFFFF \hideinitializer
  28. #define EBI0_MAX_SIZE 0x400000 ///<EBI bank 0 max. size \hideinitializer
  29. #define EBI0_READ_DATA8(Addr) *((volatile unsigned char *)(EBI0_BASE_ADDR+Addr)) ///< Read 8-bit data from EBI bank 0 \hideinitializer
  30. #define EBI0_WRITE_DATA8(Addr, Data) *((volatile unsigned char *)(EBI0_BASE_ADDR+Addr))=Data ///< Write 8-bit data to EBI bank 0 \hideinitializer
  31. #define EBI0_READ_DATA16(Addr) *((volatile unsigned short *)(EBI0_BASE_ADDR+Addr)) ///< Read 16-bit data from EBI bank 0 \hideinitializer
  32. #define EBI0_WRITE_DATA16(Addr, Data) *((volatile unsigned short *)(EBI0_BASE_ADDR+Addr))=Data ///< Write 16-bit data to EBI bank 0 \hideinitializer
  33. #define EBI0_READ_DATA32(Addr) *((volatile unsigned int *)(EBI0_BASE_ADDR+Addr)) ///< Read 32-bit data from EBI bank 0 \hideinitializer
  34. #define EBI0_WRITE_DATA32(Addr, Data) *((volatile unsigned int *)(EBI0_BASE_ADDR+Addr))=Data ///< Write 32-bit data to EBI bank 0 \hideinitializer
  35. /* Bank-1 constants */
  36. #define EBI1_BASE_ADDR 0x64000000 ///<EBI bank 1 base address , 0x64000000 ~ 0x67FFFFFF \hideinitializer
  37. #define EBI1_MAX_SIZE 0x400000 ///<EBI bank 1 max. size \hideinitializer
  38. #define EBI1_READ_DATA8(Addr) *((volatile unsigned char *)(EBI1_BASE_ADDR+Addr)) ///< Read 8-bit data from EBI bank 0 \hideinitializer
  39. #define EBI1_WRITE_DATA8(Addr, Data) *((volatile unsigned char *)(EBI1_BASE_ADDR+Addr))=Data ///< Write 8-bit data to EBI bank 0 \hideinitializer
  40. #define EBI1_READ_DATA16(Addr) *((volatile unsigned short *)(EBI1_BASE_ADDR+Addr)) ///< Read 16-bit data from EBI bank 0 \hideinitializer
  41. #define EBI1_WRITE_DATA16(Addr, Data) *((volatile unsigned short *)(EBI1_BASE_ADDR+Addr))=Data ///< Write 16-bit data to EBI bank 0 \hideinitializer
  42. #define EBI1_READ_DATA32(Addr) *((volatile unsigned int *)(EBI1_BASE_ADDR+Addr)) ///< Read 32-bit data from EBI bank 0 \hideinitializer
  43. #define EBI1_WRITE_DATA32(Addr, Data) *((volatile unsigned int *)(EBI1_BASE_ADDR+Addr))=Data ///< Write 32-bit data to EBI bank 0 \hideinitializer
  44. /* Bank-2 constants */
  45. #define EBI2_BASE_ADDR 0x68000000 ///<EBI bank 2 base address , 0x68000000 ~ 0x6BFFFFFF
  46. #define EBI2_MAX_SIZE 0x400000 ///<EBI bank 2 max. size
  47. #define EBI2_READ_DATA8(Addr) *((volatile unsigned char *)(EBI2_BASE_ADDR+Addr)) ///< Read 8-bit data from EBI bank 0 \hideinitializer
  48. #define EBI2_WRITE_DATA8(Addr, Data) *((volatile unsigned char *)(EBI2_BASE_ADDR+Addr))=Data ///< Write 8-bit data to EBI bank 0 \hideinitializer
  49. #define EBI2_READ_DATA16(Addr) *((volatile unsigned short *)(EBI2_BASE_ADDR+Addr)) ///< Read 16-bit data from EBI bank 0 \hideinitializer
  50. #define EBI2_WRITE_DATA16(Addr, Data) *((volatile unsigned short *)(EBI2_BASE_ADDR+Addr))=Data ///< Write 16-bit data to EBI bank 0 \hideinitializer
  51. #define EBI2_READ_DATA32(Addr) *((volatile unsigned int *)(EBI2_BASE_ADDR+Addr)) ///< Read 32-bit data from EBI bank 0 \hideinitializer
  52. #define EBI2_WRITE_DATA32(Addr, Data) *((volatile unsigned int *)(EBI2_BASE_ADDR+Addr))=Data ///< Write 32-bit data to EBI bank 0 \hideinitializer
  53. /* Bank-3 constants */
  54. #define EBI3_BASE_ADDR 0x6C000000 ///<EBI bank 3 base address , 0x6C000000 ~ 0x6FFFFFFF \hideinitializer
  55. #define EBI3_MAX_SIZE 0x400000 ///<EBI bank 3 max. size \hideinitializer
  56. #define EBI3_READ_DATA8(Addr) *((volatile unsigned char *)(EBI3_BASE_ADDR+Addr)) ///< Read 8-bit data from EBI bank 0 \hideinitializer
  57. #define EBI3_WRITE_DATA8(Addr, Data) *((volatile unsigned char *)(EBI3_BASE_ADDR+Addr))=Data ///< Write 8-bit data to EBI bank 0 \hideinitializer
  58. #define EBI3_READ_DATA16(Addr) *((volatile unsigned short *)(EBI3_BASE_ADDR+Addr)) ///< Read 16-bit data from EBI bank 0 \hideinitializer
  59. #define EBI3_WRITE_DATA16(Addr, Data) *((volatile unsigned short *)(EBI3_BASE_ADDR+Addr))=Data ///< Write 16-bit data to EBI bank 0 \hideinitializer
  60. #define EBI3_READ_DATA32(Addr) *((volatile unsigned int *)(EBI3_BASE_ADDR+Addr)) ///< Read 32-bit data from EBI bank 0 \hideinitializer
  61. #define EBI3_WRITE_DATA32(Addr, Data) *((volatile unsigned int *)(EBI3_BASE_ADDR+Addr))=Data ///< Write 32-bit data to EBI bank 0 \hideinitializer
  62. /* Constants for EBI bank number */
  63. #define EBI_BANK0 0 ///< EBI bank 0 \hideinitializer
  64. #define EBI_BANK1 0x1 ///< EBI bank 1 \hideinitializer
  65. #define EBI_BANK2 0x2 ///< EBI bank 2 \hideinitializer
  66. #define EBI_BANK3 0x3 ///< EBI bank 3 \hideinitializer
  67. /* Constants for EBI CS Active Level */
  68. #define EBI_CS_ACTIVE_HIGH 1 ///< EBI CS active level is high \hideinitializer
  69. #define EBI_CS_ACTIVE_LOW 0 ///< EBI CS active level is low \hideinitializer
  70. /* Constants for EBI data bus width */
  71. #define EBI_BUSWIDTH_8BIT 8 ///< EBI bus width is 8-bit \hideinitializer
  72. #define EBI_BUSWIDTH_16BIT 16 ///< EBI bus width is 16-bit \hideinitializer
  73. /* Constants for EBI separate mode */
  74. #define EBI_SEPARATEMODE_ENABLE 0x1 ///< Enable EBI separate mode \hideinitializer
  75. #define EBI_SEPARATEMODE_DISABLE 0 ///< Disable EBI separate mode \hideinitializer
  76. /* Constants for EBI MCLK divider */
  77. #define EBI_MCLKDIV_1 0 ///< EBI clock is MCLK div 1 \hideinitializer
  78. #define EBI_MCLKDIV_2 0x1 ///< EBI clock is MCLK div 2 \hideinitializer
  79. #define EBI_MCLKDIV_4 0x2 ///< EBI clock is MCLK div 4 \hideinitializer
  80. #define EBI_MCLKDIV_8 0x3 ///< EBI clock is MCLK div 8 \hideinitializer
  81. #define EBI_MCLKDIV_16 0x4 ///< EBI clock is MCLK div 16 \hideinitializer
  82. #define EBI_MCLKDIV_32 0x5 ///< EBI clock is MCLK div 32 \hideinitializer
  83. #define EBI_TIMING_FASTEST 0x0 ///< EBI timing is the fastest \hideinitializer
  84. #define EBI_TIMING_VERYFAST 0x1 ///< EBI timing is very fast \hideinitializer
  85. #define EBI_TIMING_FAST 0x2 ///< EBI timing is fast \hideinitializer
  86. #define EBI_TIMING_NORMAL 0x3 ///< EBI timing is normal \hideinitializer
  87. #define EBI_TIMING_SLOW 0x4 ///< EBI timing is slow \hideinitializer
  88. #define EBI_TIMING_VERYSLOW 0x5 ///< EBI timing is very slow \hideinitializer
  89. #define EBI_TIMING_SLOWEST 0x6 ///< EBI timing is the slowest \hideinitializer
  90. /*@}*/ /* end of group NUC472_442_EBI_EXPORTED_CONSTANTS */
  91. /** @addtogroup NUC472_442_EBI_EXPORTED_FUNCTIONS EBI Exported Functions
  92. @{
  93. */
  94. void EBI_Open(uint32_t u32Bank, uint32_t u32DataWidth, uint32_t u32TimingClass, uint32_t u32BusMode, uint32_t u32CSActiveLevel);
  95. void EBI_Close(uint32_t u32Bank);
  96. void EBI_SetBusTiming(uint32_t u32Bank, uint32_t u32TimingConfig, uint32_t u32MclkDiv);
  97. void EBI_EnableCrypto(uint32_t u32Bank, uint32_t *u32Key);
  98. void EBI_DisbleCrypto(uint32_t u32Bank);
  99. /*@}*/ /* end of group NUC472_442_EBI_EXPORTED_FUNCTIONS */
  100. /*@}*/ /* end of group NUC472_442_EBI_Driver */
  101. /*@}*/ /* end of group NUC472_442_Device_Driver */
  102. #ifdef __cplusplus
  103. }
  104. #endif
  105. #endif //__EBI_H__
  106. /*** (C) COPYRIGHT 2014 Nuvoton Technology Corp. ***/