stm32f4.nut 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417
  1. --
  2. -- * Copyright (C) 2011-13 by Uwe Bonnes (bon@elektron.ikp.physik.tu-darmstadt.de)
  3. --
  4. -- Redistribution and use in source and binary forms, with or without
  5. -- modification, are permitted provided that the following conditions
  6. -- are met:
  7. --
  8. -- 1. Redistributions of source code must retain the above copyright
  9. -- notice, this list of conditions and the following disclaimer.
  10. -- 2. Redistributions in binary form must reproduce the above copyright
  11. -- notice, this list of conditions and the following disclaimer in the
  12. -- documentation and/or other materials provided with the distribution.
  13. -- 3. Neither the name of the copyright holders nor the names of
  14. -- contributors may be used to endorse or promote products derived
  15. -- from this software without specific prior written permission.
  16. --
  17. -- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  18. -- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  19. -- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
  20. -- FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  21. -- COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
  22. -- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
  23. -- BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
  24. -- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
  25. -- AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  26. -- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
  27. -- THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  28. -- SUCH DAMAGE.
  29. --
  30. -- For additional information see http://www.ethernut.de/
  31. --
  32. -- ARM CortexM3 Architecture
  33. -- STMicroelectronics STM32L Family Devices
  34. --
  35. --
  36. stm32_memory_f401 = { "128", "256" }
  37. stm32_memory_f40x = { "512", "1024" }
  38. stm32_memory_f42x = { "1024", "2048" }
  39. -- *****************************************************************************
  40. -- STM32F4 Family
  41. -- *****************************************************************************
  42. --
  43. nutarch_cm3_stm32f4 =
  44. {
  45. --
  46. -- MCU Family
  47. --
  48. {
  49. name = "nutarch_cm3_stm32f4_family",
  50. brief = "MCU F4 Family",
  51. requires = { "HW_MCU_STM32F4XX" },
  52. sources = { "cm3/dev/stm/stm32f4_clk.c" },
  53. options =
  54. {
  55. {
  56. macro = "MCU_STM32F4",
  57. brief = "STM32F4",
  58. brief = "Devices available in all F4xx devices",
  59. type = "integer",
  60. default = 1,
  61. provides =
  62. {
  63. "HW_RCC_STM32",
  64. "HW_MCU_FPU",
  65. "HW_FLASH_STM32F2_4",
  66. "HW_GPIO_STM32V2",
  67. "HW_CRC32_STM32",
  68. "DEV_IRQ_STM32",
  69. "HW_DMA1_STM32F2",
  70. "HW_DMA2_STM32F2",
  71. "HW_EXTI04_STM32",
  72. "HW_EXTI95_STM32",
  73. "HW_EXTI1510_STM32",
  74. "HW_OTG_FS_STM32",
  75. "HW_I2C1_STM32",
  76. "HW_I2C2_STM32",
  77. "HW_I2C3_STM32",
  78. "HW_SPI1_STM32",
  79. "HW_SPI2_STM32",
  80. "HW_SPI3_STM32",
  81. "HW_USART1_STM32",
  82. "HW_USART2_STM32",
  83. "HW_USART6_STM32",
  84. "HW_RTC_STM32_V2",
  85. "HW_TIM1_TIM9_TIM10_TIM11_STM32",
  86. "HW_TIM2_32BIT_STM32",
  87. "HW_TIM3_STM32",
  88. "HW_TIM4_STM32",
  89. "HW_TIM5_32BIT_STM32",
  90. "HW_ADC_STM32",
  91. "HW_ADC1_STM32F2_4",
  92. "HW_WWDG_STM32",
  93. "HW_SDIO_STM32",
  94. },
  95. file = "include/cfg/arch.h"
  96. },
  97. {
  98. macro = "STM32F401xe",
  99. brief = "STM32F401",
  100. brief = "STM32F4 w/o CAN etc.",
  101. type = "integer",
  102. requires = { "HW_MCU_STM32F401" },
  103. default = 1,
  104. provides =
  105. {
  106. "HW_SPI4_STM32",
  107. },
  108. file = "include/cfg/arch.h"
  109. },
  110. {
  111. macro = "STM32F405xx",
  112. brief = "STM32F405",
  113. brief = "STM32F4 basic device",
  114. type = "integer",
  115. requires = { "HW_MCU_STM32F405" },
  116. default = 1,
  117. provides =
  118. {
  119. "HW_CAN1_STM32",
  120. "HW_CAN2_STM32",
  121. "HW_FSMC_STM32",
  122. "HW_USART3_STM32",
  123. "HW_UART4_STM32",
  124. "HW_UART5_STM32",
  125. "HW_TIM6_DAC_STM32",
  126. "HW_TIM7_STM32",
  127. "HW_TIM8_TIM12_TIM13_TIM14_STM32",
  128. "HW_ADC2_STM32F2_4",
  129. "HW_ADC3_STM32F2_4",
  130. "HW_DAC1_STM32",
  131. "HW_DAC2_STM32",
  132. "HW_OTG_HS_STM32",
  133. },
  134. file = "include/cfg/arch.h"
  135. },
  136. {
  137. macro = "STM32F407xx",
  138. brief = "STM32F407",
  139. brief = "STM32F4 with ETH/DCMI, w/o Crypto/DMA2D",
  140. type = "integer",
  141. requires = { "HW_MCU_STM32F407" },
  142. default = 1,
  143. provides =
  144. {
  145. "HW_CAN1_STM32",
  146. "HW_CAN2_STM32",
  147. "HW_ETH_STM32",
  148. "HW_DCMI_STM32",
  149. "HW_FSMC_STM32",
  150. "HW_USART3_STM32",
  151. "HW_UART4_STM32",
  152. "HW_UART5_STM32",
  153. "HW_TIM6_DAC_STM32",
  154. "HW_TIM7_STM32",
  155. "HW_TIM8_TIM12_TIM13_TIM14_STM32",
  156. "HW_ADC2_STM32F2_4",
  157. "HW_ADC3_STM32F2_4",
  158. "HW_DAC1_STM32",
  159. "HW_DAC2_STM32",
  160. "HW_OTG_HS_STM32",
  161. },
  162. file = "include/cfg/arch.h"
  163. },
  164. {
  165. macro = "STM32F415xx",
  166. brief = "STM32F415",
  167. brief = "STM32F4 basic device with Crypto, w/o ETH/DCMI/DMA2D",
  168. type = "integer",
  169. requires = { "HW_MCU_STM32F415" },
  170. default = 1,
  171. provides =
  172. {
  173. "HW_CAN1_STM32",
  174. "HW_CAN2_STM32",
  175. "HW_CRYP_STM32",
  176. "HW_FSMC_STM32",
  177. "HW_USART3_STM32",
  178. "HW_UART4_STM32",
  179. "HW_UART5_STM32",
  180. "HW_TIM6_DAC_STM32",
  181. "HW_TIM7_STM32",
  182. "HW_TIM8_TIM12_TIM13_TIM14_STM32",
  183. "HW_ADC2_STM32F2_4",
  184. "HW_ADC3_STM32F2_4",
  185. "HW_DAC1_STM32",
  186. "HW_DAC2_STM32",
  187. "HW_OTG_HS_STM32",
  188. },
  189. file = "include/cfg/arch.h"
  190. },
  191. {
  192. macro = "STM32F417xx",
  193. brief = "STM32F417",
  194. brief = "STM32F4 basic device with Crypto/ETH/DCMI, w/o DMA2D",
  195. type = "integer",
  196. requires = { "HW_MCU_STM32F417" },
  197. default = 1,
  198. provides =
  199. {
  200. "HW_CAN1_STM32",
  201. "HW_CAN2_STM32",
  202. "HW_CRYP_STM32",
  203. "HW_ETH_STM32",
  204. "HW_DCMI_STM32",
  205. "HW_FSMC_STM32",
  206. "HW_USART3_STM32",
  207. "HW_UART4_STM32",
  208. "HW_UART5_STM32",
  209. "HW_TIM6_DAC_STM32",
  210. "HW_TIM7_STM32",
  211. "HW_TIM8_TIM12_TIM13_TIM14_STM32",
  212. "HW_ADC2_STM32F2_4",
  213. "HW_ADC3_STM32F2_4",
  214. "HW_DAC1_STM32",
  215. "HW_DAC2_STM32",
  216. "HW_OTG_HS_STM32",
  217. },
  218. file = "include/cfg/arch.h"
  219. },
  220. {
  221. macro = "STM32F427xx",
  222. brief = "STM32F427",
  223. brief = "STM32F4 extended device with ETH/DCMI/DMA2D w/o Crypto/LTDC",
  224. type = "integer",
  225. requires = { "HW_MCU_STM32F427" },
  226. default = 1,
  227. provides =
  228. {
  229. "HW_CAN1_STM32",
  230. "HW_CAN2_STM32",
  231. "HW_ETH_STM32",
  232. "HW_DCMI_STM32",
  233. "HW_DMA2D_STM32",
  234. "HW_FMC_STM32",
  235. "HW_USART3_STM32",
  236. "HW_UART4_STM32",
  237. "HW_UART5_STM32",
  238. "HW_UART7_STM32",
  239. "HW_UART8_STM32",
  240. "HW_SPI4_STM32",
  241. "HW_SPI5_STM32",
  242. "HW_SPI6_STM32",
  243. "HW_SAI1_STM32",
  244. "HW_TIM6_DAC_STM32",
  245. "HW_TIM7_STM32",
  246. "HW_TIM8_TIM12_TIM13_TIM14_STM32",
  247. "HW_ADC2_STM32F2_4",
  248. "HW_ADC3_STM32F2_4",
  249. "HW_DAC1_STM32",
  250. "HW_DAC2_STM32",
  251. "HW_OTG_HS_STM32",
  252. },
  253. file = "include/cfg/arch.h"
  254. },
  255. {
  256. macro = "STM32F429xx",
  257. brief = "STM32F429",
  258. brief = "STM32F4 extended device with ETH/DCMI/DMA2D/LTDC w/o Crypto",
  259. type = "integer",
  260. requires = { "HW_MCU_STM32F429" },
  261. default = 1,
  262. provides =
  263. {
  264. "HW_CAN1_STM32",
  265. "HW_CAN2_STM32",
  266. "HW_ETH_STM32",
  267. "HW_DCMI_STM32",
  268. "HW_DMA2D_STM32",
  269. "HW_FMC_STM32",
  270. "HW_LTDC_STM32",
  271. "HW_USART3_STM32",
  272. "HW_UART4_STM32",
  273. "HW_UART5_STM32",
  274. "HW_UART7_STM32",
  275. "HW_UART8_STM32",
  276. "HW_SPI4_STM32",
  277. "HW_SPI5_STM32",
  278. "HW_SPI6_STM32",
  279. "HW_SAI1_STM32",
  280. "HW_TIM6_DAC_STM32",
  281. "HW_TIM7_STM32",
  282. "HW_TIM8_TIM12_TIM13_TIM14_STM32",
  283. "HW_ADC2_STM32F2_4",
  284. "HW_ADC3_STM32F2_4",
  285. "HW_DAC1_STM32",
  286. "HW_DAC2_STM32",
  287. "HW_OTG_HS_STM32",
  288. },
  289. file = "include/cfg/arch.h"
  290. },
  291. {
  292. macro = "STM32F437xx",
  293. brief = "STM32F437",
  294. brief = "STM32F4 extended device with Crypto/ETH/DCMI/DMA2D w/o LTDC",
  295. type = "integer",
  296. requires = { "HW_MCU_STM32F437" },
  297. default = 1,
  298. provides =
  299. {
  300. "HW_CAN1_STM32",
  301. "HW_CAN2_STM32",
  302. "HW_CRYP_STM32",
  303. "HW_ETH_STM32",
  304. "HW_DCMI_STM32",
  305. "HW_DMA2D_STM32",
  306. "HW_FMC_STM32",
  307. "HW_USART3_STM32",
  308. "HW_UART4_STM32",
  309. "HW_UART5_STM32",
  310. "HW_UART7_STM32",
  311. "HW_UART8_STM32",
  312. "HW_SPI4_STM32",
  313. "HW_SPI5_STM32",
  314. "HW_SPI6_STM32",
  315. "HW_SAI1_STM32",
  316. "HW_TIM6_DAC_STM32",
  317. "HW_TIM7_STM32",
  318. "HW_TIM8_TIM12_TIM13_TIM14_STM32",
  319. "HW_ADC2_STM32F2_4",
  320. "HW_ADC3_STM32F2_4",
  321. "HW_DAC1_STM32",
  322. "HW_DAC2_STM32",
  323. "HW_OTG_HS_STM32",
  324. },
  325. file = "include/cfg/arch.h"
  326. },
  327. {
  328. macro = "STM32F439xx",
  329. brief = "STM32F439",
  330. brief = "STM32F4 extended device with Crypto/ETH/DCMI/DMA2D/LTDC.",
  331. type = "integer",
  332. requires = { "HW_MCU_STM32F439" },
  333. default = 1,
  334. provides =
  335. {
  336. "HW_CAN1_STM32",
  337. "HW_CAN2_STM32",
  338. "HW_CRYP_STM32",
  339. "HW_ETH_STM32",
  340. "HW_DCMI_STM32",
  341. "HW_DMA2D_STM32",
  342. "HW_FMC_STM32",
  343. "HW_LTDC_STM32",
  344. "HW_USART3_STM32",
  345. "HW_UART4_STM32",
  346. "HW_UART5_STM32",
  347. "HW_UART7_STM32",
  348. "HW_UART8_STM32",
  349. "HW_SPI4_STM32",
  350. "HW_SPI5_STM32",
  351. "HW_SPI6_STM32",
  352. "HW_SAI1_STM32",
  353. "HW_TIM6_DAC_STM32",
  354. "HW_TIM7_STM32",
  355. "HW_TIM8_TIM12_TIM13_TIM14_STM32",
  356. "HW_ADC2_STM32F2_4",
  357. "HW_ADC3_STM32F2_4",
  358. "HW_DAC1_STM32",
  359. "HW_DAC2_STM32",
  360. "HW_OTG_HS_STM32",
  361. },
  362. file = "include/cfg/arch.h"
  363. },
  364. }
  365. },
  366. --
  367. -- STM32F4 MCU Memory
  368. --
  369. {
  370. name = "nutarch_cm3_stm32F4_memory",
  371. brief = "STM32F4 Device Memory",
  372. requires = { "HW_MCU_STM32" },
  373. options =
  374. {
  375. {
  376. macro = "MCU_STM32F401",
  377. brief = "STM32F4xx memory",
  378. description = "Select your devices memory by the marked alphanumeric code on the chip:\n"..
  379. "STM32F401>Y<zz where Y is one of the list below.\n\n"..
  380. "B = 128 kbytes Flash\n"..
  381. "C = 256 kbytes Flash\n",
  382. requires = { "HW_MCU_STM32F401" },
  383. type = "enumerated",
  384. choices = stm32_memory_f401,
  385. file = "include/cfg/arch.h"
  386. },
  387. {
  388. macro = "MCU_STM32F40X",
  389. brief = "STM32F4xx memory",
  390. description = "Select your devices memory by the marked alphanumeric code on the chip:\n"..
  391. "STM32F4xx>Y<zz where Y is one of the list below.\n\n"..
  392. "E = 512 kbytes Flash\n"..
  393. "G = 1024 kbytes Flash\n",
  394. requires = { "HW_MCU_STM32F40X" },
  395. type = "enumerated",
  396. choices = stm32_memory_f40x,
  397. file = "include/cfg/arch.h"
  398. },
  399. {
  400. macro = "MCU_STM32F42X",
  401. brief = "STM32F4xx memory",
  402. description = "Select your devices memory by the marked alphanumeric code on the chip:\n"..
  403. "STM32F4xx>Y<zz where Y is one of the list below.\n\n"..
  404. "G = 1024 kbytes Flash\n"..
  405. "I = 2048 kbytes Flash\n",
  406. requires = { "HW_MCU_STM32F42X" },
  407. type = "enumerated",
  408. choices = stm32_memory_f42x,
  409. file = "include/cfg/arch.h"
  410. },
  411. }
  412. },
  413. }