aboutsummaryrefslogtreecommitdiff
path: root/lib/chibios/os/hal/ports/STM32/STM32L1xx/stm32_registry.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/chibios/os/hal/ports/STM32/STM32L1xx/stm32_registry.h')
-rw-r--r--lib/chibios/os/hal/ports/STM32/STM32L1xx/stm32_registry.h377
1 files changed, 377 insertions, 0 deletions
diff --git a/lib/chibios/os/hal/ports/STM32/STM32L1xx/stm32_registry.h b/lib/chibios/os/hal/ports/STM32/STM32L1xx/stm32_registry.h
new file mode 100644
index 000000000..8e0b28525
--- /dev/null
+++ b/lib/chibios/os/hal/ports/STM32/STM32L1xx/stm32_registry.h
@@ -0,0 +1,377 @@
1/*
2 ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
3
4 Licensed under the Apache License, Version 2.0 (the "License");
5 you may not use this file except in compliance with the License.
6 You may obtain a copy of the License at
7
8 http://www.apache.org/licenses/LICENSE-2.0
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15*/
16
17/**
18 * @file STM32L1xx/stm32_registry.h
19 * @brief STM32L1xx capabilities registry.
20 *
21 * @addtogroup HAL
22 * @{
23 */
24
25#ifndef STM32_REGISTRY_H
26#define STM32_REGISTRY_H
27
28#if defined(STM32L100xB) || defined(STM32L151xB) || defined(STM32L152xB)
29#define STM32L1XX_PROD_CAT 1
30
31#elif defined(STM32L100xBA) || defined(STM32L151xBA) || defined(STM32L152xBA)
32#define STM32L1XX_PROD_CAT 2
33
34#elif defined(STM32L100xC) || defined(STM32L151xC) || \
35 defined(STM32L151xCA) || defined(STM32L152xC) || \
36 defined(STM32L152xCA) || defined(STM32L162xC) || \
37 defined(STM32L162xCA)
38#define STM32L1XX_PROD_CAT 3
39
40#elif defined(STM32L151xD) || defined(STM32L152xD) || \
41 defined(STM32L162xD)
42#define STM32L1XX_PROD_CAT 4
43
44#elif defined(STM32L151xE) || defined (STM32L152xE) || \
45 defined(STM32L162xE)
46#define STM32L1XX_PROD_CAT 5
47
48#elif defined(STM32L151xDX) || defined (STM32L152xDX) || \
49 defined(STM32L162xDX)
50#define STM32L1XX_PROD_CAT 6
51
52#else
53#error "STM32L1xx device not specified"
54#endif
55
56#if defined(STM32L100xB) || defined(STM32L100xBA) || defined(STM32L100xC)
57#define STM32L1XX_VALUE_LINE TRUE
58#else
59#define STM32L1XX_VALUE_LINE FALSE
60#endif
61
62/*===========================================================================*/
63/* Platform capabilities. */
64/*===========================================================================*/
65
66/**
67 * @name STM32L1xx capabilities
68 * @{
69 */
70/* ADC attributes.*/
71#define STM32_HAS_ADC1 TRUE
72#define STM32_HAS_ADC2 FALSE
73#define STM32_HAS_ADC3 FALSE
74#define STM32_HAS_ADC4 FALSE
75
76/* CAN attributes.*/
77#define STM32_HAS_CAN1 FALSE
78#define STM32_HAS_CAN2 FALSE
79#define STM32_HAS_CAN3 FALSE
80
81/* DAC attributes.*/
82#define STM32_HAS_DAC1_CH1 TRUE
83#define STM32_DAC_DAC1_CH1_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
84
85#define STM32_HAS_DAC1_CH2 TRUE
86#define STM32_DAC_DAC1_CH2_DMA_STREAM STM32_DMA_STREAM_ID(1, 3)
87
88#define STM32_HAS_DAC2_CH1 FALSE
89#define STM32_HAS_DAC2_CH2 FALSE
90
91/* DMA attributes.*/
92#define STM32_ADVANCED_DMA FALSE
93#define STM32_DMA_SUPPORTS_DMAMUX FALSE
94#define STM32_DMA_SUPPORTS_CSELR FALSE
95
96#define STM32_DMA1_NUM_CHANNELS 7
97#define STM32_DMA1_CH1_HANDLER Vector6C
98#define STM32_DMA1_CH2_HANDLER Vector70
99#define STM32_DMA1_CH3_HANDLER Vector74
100#define STM32_DMA1_CH4_HANDLER Vector78
101#define STM32_DMA1_CH5_HANDLER Vector7C
102#define STM32_DMA1_CH6_HANDLER Vector80
103#define STM32_DMA1_CH7_HANDLER Vector84
104#define STM32_DMA1_CH1_NUMBER 11
105#define STM32_DMA1_CH2_NUMBER 12
106#define STM32_DMA1_CH3_NUMBER 13
107#define STM32_DMA1_CH4_NUMBER 14
108#define STM32_DMA1_CH5_NUMBER 15
109#define STM32_DMA1_CH6_NUMBER 16
110#define STM32_DMA1_CH7_NUMBER 17
111
112#if (STM32L1XX_PROD_CAT == 1) || (STM32L1XX_PROD_CAT == 2) || \
113 defined(__DOXYGEN__)
114#define STM32_DMA2_NUM_CHANNELS 0
115#else
116#define STM32_DMA2_NUM_CHANNELS 5
117#define STM32_DMA2_CH1_HANDLER Vector108
118#define STM32_DMA2_CH2_HANDLER Vector10C
119#define STM32_DMA2_CH3_HANDLER Vector110
120#define STM32_DMA2_CH4_HANDLER Vector114
121#define STM32_DMA2_CH5_HANDLER Vector118
122#define STM32_DMA2_CH1_NUMBER 50
123#define STM32_DMA2_CH2_NUMBER 51
124#define STM32_DMA2_CH3_NUMBER 52
125#define STM32_DMA2_CH4_NUMBER 53
126#define STM32_DMA2_CH5_NUMBER 54
127#endif
128
129/* ETH attributes.*/
130#define STM32_HAS_ETH FALSE
131
132/* EXTI attributes.*/
133#if (STM32L1XX_PROD_CAT == 1) || (STM32L1XX_PROD_CAT == 2) || \
134 defined(__DOXYGEN__)
135#define STM32_EXTI_NUM_LINES 23
136#else
137#define STM32_EXTI_NUM_LINES 24
138#endif
139#define STM32_EXTI_IMR1_MASK 0x00000000U
140
141#if (STM32L1XX_PROD_CAT == 1) || (STM32L1XX_PROD_CAT == 2) || \
142 (STM32L1XX_PROD_CAT == 3) || defined(__DOXYGEN__)
143#define STM32_HAS_GPIOA TRUE
144#define STM32_HAS_GPIOB TRUE
145#define STM32_HAS_GPIOC TRUE
146#define STM32_HAS_GPIOD TRUE
147#define STM32_HAS_GPIOE TRUE
148#define STM32_HAS_GPIOF FALSE
149#define STM32_HAS_GPIOG FALSE
150#define STM32_HAS_GPIOH TRUE
151#define STM32_HAS_GPIOI FALSE
152#define STM32_HAS_GPIOJ FALSE
153#define STM32_HAS_GPIOK FALSE
154#define STM32_GPIO_EN_MASK (RCC_AHBENR_GPIOAEN | \
155 RCC_AHBENR_GPIOBEN | \
156 RCC_AHBENR_GPIOCEN | \
157 RCC_AHBENR_GPIODEN | \
158 RCC_AHBENR_GPIOEEN | \
159 RCC_AHBENR_GPIOHEN)
160#else
161#define STM32_HAS_GPIOA TRUE
162#define STM32_HAS_GPIOB TRUE
163#define STM32_HAS_GPIOC TRUE
164#define STM32_HAS_GPIOD TRUE
165#define STM32_HAS_GPIOE TRUE
166#define STM32_HAS_GPIOF TRUE
167#define STM32_HAS_GPIOG TRUE
168#define STM32_HAS_GPIOH TRUE
169#define STM32_HAS_GPIOI FALSE
170#define STM32_HAS_GPIOJ FALSE
171#define STM32_HAS_GPIOK FALSE
172#define STM32_GPIO_EN_MASK (RCC_AHBENR_GPIOAEN | \
173 RCC_AHBENR_GPIOBEN | \
174 RCC_AHBENR_GPIOCEN | \
175 RCC_AHBENR_GPIODEN | \
176 RCC_AHBENR_GPIOEEN | \
177 RCC_AHBENR_GPIOFEN | \
178 RCC_AHBENR_GPIOGEN | \
179 RCC_AHBENR_GPIOHEN)
180#endif
181
182/* I2C attributes.*/
183#define STM32_HAS_I2C1 TRUE
184#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7)
185#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
186
187#define STM32_HAS_I2C2 TRUE
188#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 5)
189#define STM32_I2C_I2C2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 4)
190
191#define STM32_HAS_I2C3 FALSE
192#define STM32_HAS_I2C4 FALSE
193
194/* QUADSPI attributes.*/
195#define STM32_HAS_QUADSPI1 FALSE
196
197/* RTC attributes.*/
198#define STM32_HAS_RTC TRUE
199#if (STM32L1XX_PROD_CAT == 1) || defined(__DOXYGEN__)
200#define STM32_RTC_HAS_SUBSECONDS FALSE
201#else
202#define STM32_RTC_HAS_SUBSECONDS TRUE
203#endif
204#define STM32_RTC_HAS_PERIODIC_WAKEUPS TRUE
205#define STM32_RTC_NUM_ALARMS 2
206#if STM32L1XX_VALUE_LINE || defined(__DOXYGEN__)
207#define STM32_RTC_STORAGE_SIZE 20
208#elif (STM32L1XX_PROD_CAT == 1) || (STM32L1XX_PROD_CAT == 2)
209#define STM32_RTC_STORAGE_SIZE 80
210#else
211#define STM32_RTC_STORAGE_SIZE 128
212#endif
213#define STM32_RTC_TAMP_STAMP_HANDLER Vector48
214#define STM32_RTC_WKUP_HANDLER Vector4C
215#define STM32_RTC_ALARM_HANDLER VectorE4
216#define STM32_RTC_TAMP_STAMP_NUMBER 3
217#define STM32_RTC_WKUP_NUMBER 1
218#define STM32_RTC_ALARM_NUMBER 2
219#define STM32_RTC_ALARM_EXTI 17
220#define STM32_RTC_TAMP_STAMP_EXTI 19
221#define STM32_RTC_WKUP_EXTI 20
222#define STM32_RTC_IRQ_ENABLE() do { \
223 nvicEnableVector(STM32_RTC_TAMP_STAMP_NUMBER, STM32_IRQ_EXTI19_PRIORITY); \
224 nvicEnableVector(STM32_RTC_WKUP_NUMBER, STM32_IRQ_EXTI20_PRIORITY); \
225 nvicEnableVector(STM32_RTC_ALARM_NUMBER, STM32_IRQ_EXTI18_PRIORITY); \
226} while (false)
227
228/* SDIO attributes.*/
229#define STM32_HAS_SDIO TRUE
230
231/* SPI attributes.*/
232#define STM32_HAS_SPI1 TRUE
233#define STM32_SPI1_SUPPORTS_I2S FALSE
234#define STM32_SPI_SPI1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
235#define STM32_SPI_SPI1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 3)
236
237#define STM32_HAS_SPI2 TRUE
238#define STM32_SPI2_SUPPORTS_I2S TRUE
239#define STM32_SPI2_I2S_FULLDUPLEX FALSE
240#define STM32_SPI_SPI2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 4)
241#define STM32_SPI_SPI2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 5)
242
243#if (STM32L1XX_PROD_CAT == 1) || (STM32L1XX_PROD_CAT == 2) || \
244 defined(__DOXYGEN__)
245#define STM32_HAS_SPI3 FALSE
246#else
247#define STM32_HAS_SPI3 TRUE
248#define STM32_SPI3_SUPPORTS_I2S TRUE
249#define STM32_SPI3_I2S_FULLDUPLEX FALSE
250#define STM32_SPI_SPI3_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 1)
251#define STM32_SPI_SPI3_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 2)
252#endif
253
254#define STM32_HAS_SPI4 FALSE
255#define STM32_HAS_SPI5 FALSE
256#define STM32_HAS_SPI6 FALSE
257
258/* TIM attributes.*/
259#define STM32_TIM_MAX_CHANNELS 4
260
261#define STM32_HAS_TIM2 TRUE
262#define STM32_TIM2_IS_32BITS FALSE
263#define STM32_TIM2_CHANNELS 4
264
265#define STM32_HAS_TIM3 TRUE
266#define STM32_TIM3_IS_32BITS FALSE
267#define STM32_TIM3_CHANNELS 4
268
269#define STM32_HAS_TIM4 TRUE
270#define STM32_TIM4_IS_32BITS FALSE
271#define STM32_TIM4_CHANNELS 4
272
273#if (STM32L1XX_PROD_CAT == 1) || (STM32L1XX_PROD_CAT == 2) || \
274 defined(__DOXYGEN__)
275#define STM32_HAS_TIM5 FALSE
276#else
277#define STM32_HAS_TIM5 TRUE
278#define STM32_TIM5_IS_32BITS TRUE
279#define STM32_TIM5_CHANNELS 4
280#endif
281
282#define STM32_HAS_TIM6 TRUE
283#define STM32_TIM6_IS_32BITS FALSE
284#define STM32_TIM6_CHANNELS 0
285
286#define STM32_HAS_TIM7 TRUE
287#define STM32_TIM7_IS_32BITS FALSE
288#define STM32_TIM7_CHANNELS 0
289
290#define STM32_HAS_TIM9 TRUE
291#define STM32_TIM9_IS_32BITS FALSE
292#define STM32_TIM9_CHANNELS 2
293
294#define STM32_HAS_TIM10 TRUE
295#define STM32_TIM10_IS_32BITS FALSE
296#define STM32_TIM10_CHANNELS 2
297
298#define STM32_HAS_TIM11 TRUE
299#define STM32_TIM11_IS_32BITS FALSE
300#define STM32_TIM11_CHANNELS 2
301
302#define STM32_HAS_TIM1 FALSE
303#define STM32_HAS_TIM8 FALSE
304#define STM32_HAS_TIM12 FALSE
305#define STM32_HAS_TIM13 FALSE
306#define STM32_HAS_TIM14 FALSE
307#define STM32_HAS_TIM15 FALSE
308#define STM32_HAS_TIM16 FALSE
309#define STM32_HAS_TIM17 FALSE
310#define STM32_HAS_TIM18 FALSE
311#define STM32_HAS_TIM19 FALSE
312#define STM32_HAS_TIM20 FALSE
313#define STM32_HAS_TIM21 FALSE
314#define STM32_HAS_TIM22 FALSE
315
316/* USART attributes.*/
317#define STM32_HAS_USART1 TRUE
318#define STM32_UART_USART1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 5)
319#define STM32_UART_USART1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 4)
320
321#define STM32_HAS_USART2 TRUE
322#define STM32_UART_USART2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
323#define STM32_UART_USART2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7)
324
325#define STM32_HAS_USART3 TRUE
326#define STM32_UART_USART3_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 3)
327#define STM32_UART_USART3_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
328
329#if (STM32L1XX_PROD_CAT == 1) || (STM32L1XX_PROD_CAT == 2) || \
330 (STM32L1XX_PROD_CAT == 3) || defined(__DOXYGEN__)
331#define STM32_HAS_UART4 FALSE
332#define STM32_HAS_UART5 FALSE
333#else
334#define STM32_HAS_UART4 TRUE
335#define STM32_UART_UART4_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 3)
336#define STM32_UART_UART4_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 5)
337
338#define STM32_HAS_UART5 TRUE
339#define STM32_UART_UART5_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 2)
340#define STM32_UART_UART5_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 1)
341#endif
342
343#define STM32_HAS_USART6 FALSE
344#define STM32_HAS_UART7 FALSE
345#define STM32_HAS_UART8 FALSE
346#define STM32_HAS_LPUART1 FALSE
347
348/* USB attributes.*/
349#define STM32_HAS_USB TRUE
350#define STM32_USB_ACCESS_SCHEME_2x16 FALSE
351#define STM32_USB_PMA_SIZE 512
352#define STM32_USB_HAS_BCDR FALSE
353#define STM32_HAS_OTG1 FALSE
354#define STM32_HAS_OTG2 FALSE
355
356/* IWDG attributes.*/
357#define STM32_HAS_IWDG TRUE
358#define STM32_IWDG_IS_WINDOWED FALSE
359
360/* LTDC attributes.*/
361#define STM32_HAS_LTDC FALSE
362
363/* DMA2D attributes.*/
364#define STM32_HAS_DMA2D FALSE
365
366/* FSMC attributes.*/
367#define STM32_HAS_FSMC FALSE
368
369/* CRC attributes.*/
370#define STM32_HAS_CRC TRUE
371#define STM32_CRC_PROGRAMMABLE FALSE
372
373/** @} */
374
375#endif /* STM32_REGISTRY_H */
376
377/** @} */