sram.h 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. #ifndef __SRAM_H
  2. #define __SRAM_H
  3. #include "stm32f2xx.h"
  4. #include <stdio.h>
  5. //使用NOR/SRAM的 Bank1.sector4,地址位HADDR[27,26]=10
  6. //对IS61LV25616/IS62WV25616,地址线范围为A0~A17
  7. //对IS61LV51216/IS62WV51216,地址线范围为A0~A18
  8. #define Bank1_SRAM3_ADDR ((uint32_t)(0x68000000))
  9. #define IS62WV51216_SIZE 0x100000 //512*16/2bits = 0x100000 ,1M字节
  10. #define FSMC_GPIO_AF GPIO_AF_FSMC
  11. /*A地址信号线*/
  12. #define FSMC_A0_GPIO_PORT GPIOF
  13. #define FSMC_A0_GPIO_CLK RCC_AHB1Periph_GPIOF
  14. #define FSMC_A0_GPIO_PIN GPIO_Pin_0
  15. #define FSMC_A0_GPIO_PinSource GPIO_PinSource0
  16. #define FSMC_A1_GPIO_PORT GPIOF
  17. #define FSMC_A1_GPIO_CLK RCC_AHB1Periph_GPIOF
  18. #define FSMC_A1_GPIO_PIN GPIO_Pin_1
  19. #define FSMC_A1_GPIO_PinSource GPIO_PinSource1
  20. #define FSMC_A2_GPIO_PORT GPIOF
  21. #define FSMC_A2_GPIO_CLK RCC_AHB1Periph_GPIOF
  22. #define FSMC_A2_GPIO_PIN GPIO_Pin_2
  23. #define FSMC_A2_GPIO_PinSource GPIO_PinSource2
  24. #define FSMC_A3_GPIO_PORT GPIOF
  25. #define FSMC_A3_GPIO_CLK RCC_AHB1Periph_GPIOF
  26. #define FSMC_A3_GPIO_PIN GPIO_Pin_3
  27. #define FSMC_A3_GPIO_PinSource GPIO_PinSource3
  28. #define FSMC_A4_GPIO_PORT GPIOF
  29. #define FSMC_A4_GPIO_CLK RCC_AHB1Periph_GPIOF
  30. #define FSMC_A4_GPIO_PIN GPIO_Pin_4
  31. #define FSMC_A4_GPIO_PinSource GPIO_PinSource4
  32. #define FSMC_A5_GPIO_PORT GPIOF
  33. #define FSMC_A5_GPIO_CLK RCC_AHB1Periph_GPIOF
  34. #define FSMC_A5_GPIO_PIN GPIO_Pin_5
  35. #define FSMC_A5_GPIO_PinSource GPIO_PinSource5
  36. #define FSMC_A6_GPIO_PORT GPIOF
  37. #define FSMC_A6_GPIO_CLK RCC_AHB1Periph_GPIOF
  38. #define FSMC_A6_GPIO_PIN GPIO_Pin_12
  39. #define FSMC_A6_GPIO_PinSource GPIO_PinSource12
  40. #define FSMC_A7_GPIO_PORT GPIOF
  41. #define FSMC_A7_GPIO_CLK RCC_AHB1Periph_GPIOF
  42. #define FSMC_A7_GPIO_PIN GPIO_Pin_13
  43. #define FSMC_A7_GPIO_PinSource GPIO_PinSource13
  44. #define FSMC_A8_GPIO_PORT GPIOF
  45. #define FSMC_A8_GPIO_CLK RCC_AHB1Periph_GPIOF
  46. #define FSMC_A8_GPIO_PIN GPIO_Pin_14
  47. #define FSMC_A8_GPIO_PinSource GPIO_PinSource14
  48. #define FSMC_A9_GPIO_PORT GPIOF
  49. #define FSMC_A9_GPIO_CLK RCC_AHB1Periph_GPIOF
  50. #define FSMC_A9_GPIO_PIN GPIO_Pin_15
  51. #define FSMC_A9_GPIO_PinSource GPIO_PinSource15
  52. #define FSMC_A10_GPIO_PORT GPIOG
  53. #define FSMC_A10_GPIO_CLK RCC_AHB1Periph_GPIOG
  54. #define FSMC_A10_GPIO_PIN GPIO_Pin_0
  55. #define FSMC_A10_GPIO_PinSource GPIO_PinSource0
  56. #define FSMC_A11_GPIO_PORT GPIOG
  57. #define FSMC_A11_GPIO_CLK RCC_AHB1Periph_GPIOG
  58. #define FSMC_A11_GPIO_PIN GPIO_Pin_1
  59. #define FSMC_A11_GPIO_PinSource GPIO_PinSource1
  60. #define FSMC_A12_GPIO_PORT GPIOG
  61. #define FSMC_A12_GPIO_CLK RCC_AHB1Periph_GPIOG
  62. #define FSMC_A12_GPIO_PIN GPIO_Pin_2
  63. #define FSMC_A12_GPIO_PinSource GPIO_PinSource2
  64. #define FSMC_A13_GPIO_PORT GPIOG
  65. #define FSMC_A13_GPIO_CLK RCC_AHB1Periph_GPIOG
  66. #define FSMC_A13_GPIO_PIN GPIO_Pin_3
  67. #define FSMC_A13_GPIO_PinSource GPIO_PinSource3
  68. #define FSMC_A14_GPIO_PORT GPIOG
  69. #define FSMC_A14_GPIO_CLK RCC_AHB1Periph_GPIOG
  70. #define FSMC_A14_GPIO_PIN GPIO_Pin_4
  71. #define FSMC_A14_GPIO_PinSource GPIO_PinSource4
  72. #define FSMC_A15_GPIO_PORT GPIOG
  73. #define FSMC_A15_GPIO_CLK RCC_AHB1Periph_GPIOG
  74. #define FSMC_A15_GPIO_PIN GPIO_Pin_5
  75. #define FSMC_A15_GPIO_PinSource GPIO_PinSource5
  76. #define FSMC_A16_GPIO_PORT GPIOD
  77. #define FSMC_A16_GPIO_CLK RCC_AHB1Periph_GPIOD
  78. #define FSMC_A16_GPIO_PIN GPIO_Pin_11
  79. #define FSMC_A16_GPIO_PinSource GPIO_PinSource11
  80. #define FSMC_A17_GPIO_PORT GPIOD
  81. #define FSMC_A17_GPIO_CLK RCC_AHB1Periph_GPIOD
  82. #define FSMC_A17_GPIO_PIN GPIO_Pin_12
  83. #define FSMC_A17_GPIO_PinSource GPIO_PinSource12
  84. #define FSMC_A18_GPIO_PORT GPIOD
  85. #define FSMC_A18_GPIO_CLK RCC_AHB1Periph_GPIOD
  86. #define FSMC_A18_GPIO_PIN GPIO_Pin_13
  87. #define FSMC_A18_GPIO_PinSource GPIO_PinSource13
  88. /*D 数据信号线*/
  89. #define FSMC_D0_GPIO_PORT GPIOD
  90. #define FSMC_D0_GPIO_CLK RCC_AHB1Periph_GPIOD
  91. #define FSMC_D0_GPIO_PIN GPIO_Pin_14
  92. #define FSMC_D0_GPIO_PinSource GPIO_PinSource14
  93. #define FSMC_D1_GPIO_PORT GPIOD
  94. #define FSMC_D1_GPIO_CLK RCC_AHB1Periph_GPIOD
  95. #define FSMC_D1_GPIO_PIN GPIO_Pin_15
  96. #define FSMC_D1_GPIO_PinSource GPIO_PinSource15
  97. #define FSMC_D2_GPIO_PORT GPIOD
  98. #define FSMC_D2_GPIO_CLK RCC_AHB1Periph_GPIOD
  99. #define FSMC_D2_GPIO_PIN GPIO_Pin_0
  100. #define FSMC_D2_GPIO_PinSource GPIO_PinSource0
  101. #define FSMC_D3_GPIO_PORT GPIOD
  102. #define FSMC_D3_GPIO_CLK RCC_AHB1Periph_GPIOD
  103. #define FSMC_D3_GPIO_PIN GPIO_Pin_1
  104. #define FSMC_D3_GPIO_PinSource GPIO_PinSource1
  105. #define FSMC_D4_GPIO_PORT GPIOE
  106. #define FSMC_D4_GPIO_CLK RCC_AHB1Periph_GPIOE
  107. #define FSMC_D4_GPIO_PIN GPIO_Pin_7
  108. #define FSMC_D4_GPIO_PinSource GPIO_PinSource7
  109. #define FSMC_D5_GPIO_PORT GPIOE
  110. #define FSMC_D5_GPIO_CLK RCC_AHB1Periph_GPIOE
  111. #define FSMC_D5_GPIO_PIN GPIO_Pin_8
  112. #define FSMC_D5_GPIO_PinSource GPIO_PinSource8
  113. #define FSMC_D6_GPIO_PORT GPIOE
  114. #define FSMC_D6_GPIO_CLK RCC_AHB1Periph_GPIOE
  115. #define FSMC_D6_GPIO_PIN GPIO_Pin_9
  116. #define FSMC_D6_GPIO_PinSource GPIO_PinSource9
  117. #define FSMC_D7_GPIO_PORT GPIOE
  118. #define FSMC_D7_GPIO_CLK RCC_AHB1Periph_GPIOE
  119. #define FSMC_D7_GPIO_PIN GPIO_Pin_10
  120. #define FSMC_D7_GPIO_PinSource GPIO_PinSource10
  121. #define FSMC_D8_GPIO_PORT GPIOE
  122. #define FSMC_D8_GPIO_CLK RCC_AHB1Periph_GPIOE
  123. #define FSMC_D8_GPIO_PIN GPIO_Pin_11
  124. #define FSMC_D8_GPIO_PinSource GPIO_PinSource11
  125. #define FSMC_D9_GPIO_PORT GPIOE
  126. #define FSMC_D9_GPIO_CLK RCC_AHB1Periph_GPIOE
  127. #define FSMC_D9_GPIO_PIN GPIO_Pin_12
  128. #define FSMC_D9_GPIO_PinSource GPIO_PinSource12
  129. #define FSMC_D10_GPIO_PORT GPIOE
  130. #define FSMC_D10_GPIO_CLK RCC_AHB1Periph_GPIOE
  131. #define FSMC_D10_GPIO_PIN GPIO_Pin_13
  132. #define FSMC_D10_GPIO_PinSource GPIO_PinSource13
  133. #define FSMC_D11_GPIO_PORT GPIOE
  134. #define FSMC_D11_GPIO_CLK RCC_AHB1Periph_GPIOE
  135. #define FSMC_D11_GPIO_PIN GPIO_Pin_14
  136. #define FSMC_D11_GPIO_PinSource GPIO_PinSource14
  137. #define FSMC_D12_GPIO_PORT GPIOE
  138. #define FSMC_D12_GPIO_CLK RCC_AHB1Periph_GPIOE
  139. #define FSMC_D12_GPIO_PIN GPIO_Pin_15
  140. #define FSMC_D12_GPIO_PinSource GPIO_PinSource15
  141. #define FSMC_D13_GPIO_PORT GPIOD
  142. #define FSMC_D13_GPIO_CLK RCC_AHB1Periph_GPIOD
  143. #define FSMC_D13_GPIO_PIN GPIO_Pin_8
  144. #define FSMC_D13_GPIO_PinSource GPIO_PinSource8
  145. #define FSMC_D14_GPIO_PORT GPIOD
  146. #define FSMC_D14_GPIO_CLK RCC_AHB1Periph_GPIOD
  147. #define FSMC_D14_GPIO_PIN GPIO_Pin_9
  148. #define FSMC_D14_GPIO_PinSource GPIO_PinSource9
  149. #define FSMC_D15_GPIO_PORT GPIOD
  150. #define FSMC_D15_GPIO_CLK RCC_AHB1Periph_GPIOD
  151. #define FSMC_D15_GPIO_PIN GPIO_Pin_10
  152. #define FSMC_D15_GPIO_PinSource GPIO_PinSource10
  153. /*控制信号线*/
  154. /*CS片选*/
  155. /*NE3 ,对应的基地址0x68000000*/
  156. #define FSMC_CS_GPIO_PORT GPIOG
  157. #define FSMC_CS_GPIO_CLK RCC_AHB1Periph_GPIOG
  158. #define FSMC_CS_GPIO_PIN GPIO_Pin_10
  159. #define FSMC_CS_GPIO_PinSource GPIO_PinSource10
  160. /*WE写使能*/
  161. #define FSMC_WE_GPIO_PORT GPIOD
  162. #define FSMC_WE_GPIO_CLK RCC_AHB1Periph_GPIOD
  163. #define FSMC_WE_GPIO_PIN GPIO_Pin_5
  164. #define FSMC_WE_GPIO_PinSource GPIO_PinSource5
  165. /*OE读使能*/
  166. #define FSMC_OE_GPIO_PORT GPIOD
  167. #define FSMC_OE_GPIO_CLK RCC_AHB1Periph_GPIOD
  168. #define FSMC_OE_GPIO_PIN GPIO_Pin_4
  169. #define FSMC_OE_GPIO_PinSource GPIO_PinSource4
  170. /*UB数据掩码*/
  171. #define FSMC_UDQM_GPIO_PORT GPIOE
  172. #define FSMC_UDQM_GPIO_CLK RCC_AHB1Periph_GPIOE
  173. #define FSMC_UDQM_GPIO_PIN GPIO_Pin_1
  174. #define FSMC_UDQM_GPIO_PinSource GPIO_PinSource1
  175. /*LB数据掩码*/
  176. #define FSMC_LDQM_GPIO_PORT GPIOE
  177. #define FSMC_LDQM_GPIO_CLK RCC_AHB1Periph_GPIOE
  178. #define FSMC_LDQM_GPIO_PIN GPIO_Pin_0
  179. #define FSMC_LDQM_GPIO_PinSource GPIO_PinSource0
  180. /*信息输出*/
  181. #define SRAM_DEBUG_ON 1
  182. #define SRAM_INFO(fmt,arg...) printf("<<-SRAM-INFO->> "fmt"\n",##arg)
  183. #define SRAM_ERROR(fmt,arg...) printf("<<-SRAM-ERROR->> "fmt"\n",##arg)
  184. #define SRAM_DEBUG(fmt,arg...) do{\
  185. if(SRAM_DEBUG_ON)\
  186. printf("<<-SRAM-DEBUG->> [%d]"fmt"\n",__LINE__, ##arg);\
  187. }while(0)
  188. void FSMC_SRAM_Init(void);
  189. void FSMC_SRAM_WriteBuffer(uint8_t* pBuffer,uint32_t WriteAddr,uint32_t NumHalfwordToWrite);
  190. void FSMC_SRAM_ReadBuffer(uint8_t* pBuffer,uint32_t ReadAddr,uint32_t NumHalfwordToRead);
  191. uint8_t SRAM_Test(void);
  192. void Disable_LCD_CS(void);//F407板 当不使用屏幕时 失能接LCD_CS的脚 防止影响
  193. #endif