Welcome to mirror list, hosted at ThFree Co, Russian Federation.

Kconfig « stm32 « src - github.com/Klipper3d/klipper.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 9cdb3c312071270dcb26480a18effee51bfe61ae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
# Kconfig settings for STM32 processors

if MACH_STM32

config STM32_SELECT
    bool
    default y
    select HAVE_GPIO
    select HAVE_GPIO_ADC
    select HAVE_GPIO_I2C if !(MACH_STM32F031 || MACH_STM32H7)
    select HAVE_GPIO_SPI if !MACH_STM32F031
    select HAVE_GPIO_HARD_PWM if MACH_STM32F1 || MACH_STM32F4 || MACH_STM32G0 || MACH_STM32H7
    select HAVE_GPIO_BITBANGING if !MACH_STM32F031
    select HAVE_STRICT_TIMING
    select HAVE_CHIPID
    select HAVE_STEPPER_BOTH_EDGE
    select SERIAL_BOOTLOADER_SIDECHANNEL

config BOARD_DIRECTORY
    string
    default "stm32"


######################################################################
# Chip selection
######################################################################

choice
    prompt "Processor model"
    config MACH_STM32F103
        bool "STM32F103"
        select MACH_STM32F1
    config MACH_STM32F207
        bool "STM32F207"
        select MACH_STM32F2
    config MACH_STM32F401
        bool "STM32F401"
        select MACH_STM32F4
    config MACH_STM32F405
        bool "STM32F405"
        select MACH_STM32F4
        select MACH_STM32F4x5
    config MACH_STM32F407
        bool "STM32F407"
        select MACH_STM32F4
        select MACH_STM32F4x5
    config MACH_STM32F429
        bool "STM32F429"
        select MACH_STM32F4
        select MACH_STM32F4x5
    config MACH_STM32F446
        bool "STM32F446"
        select MACH_STM32F4
    config MACH_STM32F031
        bool "STM32F031"
        select MACH_STM32F0
    config MACH_STM32F042
        bool "STM32F042"
        select MACH_STM32F0
        select MACH_STM32F0x2
    config MACH_STM32F070
        bool "STM32F070"
        select MACH_STM32F0
    config MACH_STM32F072
        bool "STM32F072"
        select MACH_STM32F0
        select MACH_STM32F0x2
    config MACH_STM32G0B1
        bool "STM32G0B1"
        select MACH_STM32G0
    config MACH_STM32H743
        bool "STM32H743"
        select MACH_STM32H7
    config MACH_STM32H750
        bool "STM32H750"
        select MACH_STM32H7
    config MACH_STM32L412
        bool "STM32L412"
        select MACH_STM32L4
endchoice

config MACH_STM32F103x6
    depends on LOW_LEVEL_OPTIONS && MACH_STM32F103
    bool "Only 10KiB of RAM (for rare stm32f103x6 variant)"

config MACH_STM32F0
    bool
config MACH_STM32F1
    bool
config MACH_STM32F2
    bool
config MACH_STM32F4
    bool
config MACH_STM32G0
    bool
config MACH_STM32H7
    bool
config MACH_STM32F0x2 # F042, F072 series
    bool
config MACH_STM32F4x5 # F405, F407, F429 series
    bool
config MACH_STM32L4
    bool
config HAVE_STM32_USBFS
    bool
    default y if MACH_STM32F0x2 || MACH_STM32G0 || MACH_STM32L4
    default y if (MACH_STM32F103 || MACH_STM32F070) && !STM32_CLOCK_REF_INTERNAL
config HAVE_STM32_USBOTG
    bool
    default y if MACH_STM32F2 || MACH_STM32F4 || MACH_STM32H7
config HAVE_STM32_CANBUS
    bool
    default y if MACH_STM32F1 || MACH_STM32F2 || MACH_STM32F4x5 || MACH_STM32F446 || MACH_STM32F0x2
config HAVE_STM32_FDCANBUS
    bool
    default y if MACH_STM32G0 || MACH_STM32H7
config HAVE_STM32_USBCANBUS
    bool
    depends on HAVE_STM32_USBFS || HAVE_STM32_USBOTG
    depends on HAVE_STM32_CANBUS || HAVE_STM32_FDCANBUS
    depends on !MACH_STM32F103
    default y

config MCU
    string
    default "stm32f031x6" if MACH_STM32F031
    default "stm32f042x6" if MACH_STM32F042
    default "stm32f070xb" if MACH_STM32F070
    default "stm32f072xb" if MACH_STM32F072
    default "stm32f103xe" if MACH_STM32F103
    default "stm32f207xx" if MACH_STM32F207
    default "stm32f401xc" if MACH_STM32F401
    default "stm32f405xx" if MACH_STM32F405
    default "stm32f407xx" if MACH_STM32F407
    default "stm32f429xx" if MACH_STM32F429
    default "stm32f446xx" if MACH_STM32F446
    default "stm32g0b1xx" if MACH_STM32G0B1
    default "stm32h743xx" if MACH_STM32H743
    default "stm32h750xx" if MACH_STM32H750
    default "stm32l412xx" if MACH_STM32L412

config CLOCK_FREQ
    int
    default 48000000 if MACH_STM32F0
    default 64000000 if MACH_STM32F103 && STM32_CLOCK_REF_INTERNAL
    default 72000000 if MACH_STM32F103
    default 120000000 if MACH_STM32F207
    default 84000000 if MACH_STM32F401
    default 168000000 if MACH_STM32F4x5
    default 180000000 if MACH_STM32F446
    default 64000000 if MACH_STM32G0
    default 400000000 if MACH_STM32H7 # 400Mhz is max Klipper currently supports
    default 80000000 if MACH_STM32L412

config FLASH_SIZE
    hex
    default 0x4000 if MACH_STM32F031
    default 0x8000 if MACH_STM32F042
    default 0x20000 if MACH_STM32F070 || MACH_STM32F072
    default 0x10000 if MACH_STM32F103 || MACH_STM32L412 # Flash size of stm32f103x8 (64KiB)
    default 0x40000 if MACH_STM32F2 || MACH_STM32F401
    default 0x80000 if MACH_STM32F4x5 || MACH_STM32F446
    default 0x20000 if MACH_STM32G0B1
    default 0x20000 if MACH_STM32H750
    default 0x200000 if MACH_STM32H743

config FLASH_BOOT_ADDRESS
    hex
    default 0x8000000

config RAM_START
    hex
    default 0x20000000

config RAM_SIZE
    hex
    default 0x1000 if MACH_STM32F031
    default 0x1800 if MACH_STM32F042
    default 0x4000 if MACH_STM32F070 || MACH_STM32F072
    default 0x2800 if MACH_STM32F103x6
    default 0x5000 if MACH_STM32F103 && !MACH_STM32F103x6 # Ram size of stm32f103x8
    default 0xa000 if MACH_STM32L412
    default 0x20000 if MACH_STM32F207
    default 0x10000 if MACH_STM32F401
    default 0x20000 if MACH_STM32F4x5 || MACH_STM32F446
    default 0x24000 if MACH_STM32G0B1
    default 0x20000 if MACH_STM32H7

config STACK_SIZE
    int
    default 512

config STM32F103GD_DISABLE_SWD
    bool "Disable SWD at startup (for GigaDevice stm32f103 clones)"
    depends on MACH_STM32F103 && LOW_LEVEL_OPTIONS
    default n
    help
        The GigaDevice clone of the STM32F103 may not be able to
        reliably disable SWD at run-time. This can prevent the PA13
        and PA14 pins from being available. Selecting this option
        disables SWD at startup and thus makes these pins available.


######################################################################
# Bootloader
######################################################################

choice
    prompt "Bootloader offset"
    config STM32_FLASH_START_2000
        bool "8KiB bootloader" if MACH_STM32F103 || MACH_STM32F070 || MACH_STM32G0 || MACH_STM32F0x2
    config STM32_FLASH_START_5000
        bool "20KiB bootloader" if MACH_STM32F103
    config STM32_FLASH_START_7000
        bool "28KiB bootloader" if MACH_STM32F103
    config STM32_FLASH_START_8000
        bool "32KiB bootloader" if MACH_STM32F1 || MACH_STM32F2 || MACH_STM32F4
    config STM32_FLASH_START_8800
        bool "34KiB bootloader (Chitu v6 Bootloader)" if MACH_STM32F103
    config STM32_FLASH_START_20200
        bool "128KiB bootloader with 512 byte offset (Prusa Buddy)" if MACH_STM32F4x5
    config STM32_FLASH_START_C000
        bool "48KiB bootloader (MKS Robin Nano V3)" if MACH_STM32F4x5
    config STM32_FLASH_START_10000
        bool "64KiB bootloader" if MACH_STM32F103 || MACH_STM32F446 || MACH_STM32F401

    config STM32_FLASH_START_800
        bool "2KiB bootloader (HID Bootloader)" if MACH_STM32F103
    config STM32_FLASH_START_1000
        bool "4KiB bootloader" if MACH_STM32F1 || MACH_STM32F0
    config STM32_FLASH_START_4000
        bool "16KiB bootloader (HID Bootloader)" if MACH_STM32F207 || MACH_STM32F401 || MACH_STM32F4x5 || MACH_STM32F103 || MACH_STM32F072
    config STM32_FLASH_START_20000
        bool "128KiB bootloader (SKR SE BX v2.0)" if MACH_STM32H743

    config STM32_FLASH_START_0000
        bool "No bootloader"
endchoice
config FLASH_START
    hex
    default 0x8000800 if STM32_FLASH_START_800
    default 0x8001000 if STM32_FLASH_START_1000
    default 0x8002000 if STM32_FLASH_START_2000
    default 0x8004000 if STM32_FLASH_START_4000
    default 0x8005000 if STM32_FLASH_START_5000
    default 0x8007000 if STM32_FLASH_START_7000
    default 0x8008000 if STM32_FLASH_START_8000
    default 0x8008800 if STM32_FLASH_START_8800
    default 0x800C000 if STM32_FLASH_START_C000
    default 0x8010000 if STM32_FLASH_START_10000
    default 0x8020000 if STM32_FLASH_START_20000
    default 0x8020200 if STM32_FLASH_START_20200
    default 0x8000000

config ARMCM_RAM_VECTORTABLE
    bool
    default y if MACH_STM32F0 && FLASH_START != 0x8000000
    default n


######################################################################
# Clock
######################################################################

choice
    prompt "Clock Reference" if LOW_LEVEL_OPTIONS
    config STM32_CLOCK_REF_8M
        bool "8 MHz crystal"
    config STM32_CLOCK_REF_12M
        bool "12 MHz crystal"
    config STM32_CLOCK_REF_16M
        bool "16 MHz crystal"
    config STM32_CLOCK_REF_20M
        bool "20 MHz crystal"
    config STM32_CLOCK_REF_25M
        bool "25 MHz crystal"
    config STM32_CLOCK_REF_INTERNAL
        bool "Internal clock"
endchoice
config CLOCK_REF_FREQ
    int
    default 25000000 if STM32_CLOCK_REF_25M
    default 20000000 if STM32_CLOCK_REF_20M
    default 16000000 if STM32_CLOCK_REF_16M
    default 12000000 if STM32_CLOCK_REF_12M
    default 1 if STM32_CLOCK_REF_INTERNAL
    default 8000000

config STM32F0_TRIM
    int "Internal clock trim override" if LOW_LEVEL_OPTIONS && MACH_STM32F0 && STM32_CLOCK_REF_INTERNAL && !USBSERIAL
    default 16
    help
        Specify the internal clock trim value. Setting this can be
        useful if the factory default internal clock is not accurate.
        Default is 16 (use factory default). Each increment increases
        the clock rate by ~240KHz.


######################################################################
# Communication inteface
######################################################################

choice
    prompt "Communication interface"
    config STM32_USB_PA11_PA12
        bool "USB (on PA11/PA12)" if HAVE_STM32_USBFS || HAVE_STM32_USBOTG
        select USBSERIAL
    config STM32_USB_PA11_PA12_REMAP
        bool "USB (on PA9/PA10)" if LOW_LEVEL_OPTIONS && MACH_STM32F042
        select USBSERIAL
    config STM32_USB_PB14_PB15
        bool "USB (on PB14/PB15)"
        depends on MACH_STM32H7
        select USBSERIAL
    config STM32_SERIAL_USART1
        bool "Serial (on USART1 PA10/PA9)"
        select SERIAL
    config STM32_SERIAL_USART1_ALT_PB7_PB6
        bool "Serial (on USART1 PB7/PB6)" if LOW_LEVEL_OPTIONS
        select SERIAL
    config STM32_SERIAL_USART2
        bool "Serial (on USART2 PA3/PA2)" if LOW_LEVEL_OPTIONS
        select SERIAL
    config STM32_SERIAL_USART2_ALT_PA15_PA14
        bool "Serial (on USART2 PA15/PA14)" if LOW_LEVEL_OPTIONS && MACH_STM32F0
        select SERIAL
    config STM32_SERIAL_USART2_ALT_PD6_PD5
        bool "Serial (on USART2 PD6/PD5)" if LOW_LEVEL_OPTIONS && !MACH_STM32F0
        select SERIAL
    config STM32_SERIAL_USART3
        bool "Serial (on USART3 PB11/PB10)" if LOW_LEVEL_OPTIONS
        depends on !MACH_STM32F0 && !MACH_STM32F401
        select SERIAL
    config STM32_SERIAL_USART3_ALT_PD9_PD8
        bool "Serial (on USART3 PD9/PD8)" if LOW_LEVEL_OPTIONS
        depends on !MACH_STM32F0 && !MACH_STM32F401
        select SERIAL
    config STM32_SERIAL_UART4
        bool "Serial (on UART4 PA0/PA1)"
        depends on MACH_STM32H7
        select SERIAL
    config STM32_CANBUS_PA11_PA12
        bool "CAN bus (on PA11/PA12)"
        depends on HAVE_STM32_CANBUS || HAVE_STM32_FDCANBUS
        select CANSERIAL
    config STM32_CANBUS_PA11_PA12_REMAP
        bool "CAN bus (on PA9/PA10)" if LOW_LEVEL_OPTIONS
        depends on HAVE_STM32_CANBUS && MACH_STM32F042
        select CANSERIAL
    config STM32_MMENU_CANBUS_PB8_PB9
        bool "CAN bus (on PB8/PB9)" if LOW_LEVEL_OPTIONS
        depends on HAVE_STM32_CANBUS || HAVE_STM32_FDCANBUS
        select CANSERIAL
    config STM32_MMENU_CANBUS_PI9_PH13
        bool "CAN bus (on PI9/PH13)" if LOW_LEVEL_OPTIONS
        depends on HAVE_STM32_CANBUS && MACH_STM32F4
        select CANSERIAL
    config STM32_MMENU_CANBUS_PB5_PB6
        bool "CAN bus (on PB5/PB6)" if LOW_LEVEL_OPTIONS
        depends on HAVE_STM32_CANBUS && MACH_STM32F4
        select CANSERIAL
    config STM32_MMENU_CANBUS_PB12_PB13
        bool "CAN bus (on PB12/PB13)" if LOW_LEVEL_OPTIONS
        depends on HAVE_STM32_CANBUS && MACH_STM32F4
        select CANSERIAL
    config STM32_MMENU_CANBUS_PD0_PD1
        bool "CAN bus (on PD0/PD1)" if LOW_LEVEL_OPTIONS
        depends on HAVE_STM32_CANBUS || HAVE_STM32_FDCANBUS
        select CANSERIAL
    config STM32_MMENU_CANBUS_PB0_PB1
        bool "CAN bus (on PB0/PB1)"
        depends on HAVE_STM32_FDCANBUS
        select CANSERIAL
    config STM32_MMENU_CANBUS_PD12_PD13
        bool "CAN bus (on PD12/PD13)"
        depends on HAVE_STM32_FDCANBUS
        select CANSERIAL
    config STM32_MMENU_CANBUS_PC2_PC3
        bool "CAN bus (on PC2/PC3)"
        depends on HAVE_STM32_FDCANBUS
        select CANSERIAL
    config STM32_USBCANBUS_PA11_PA12
        bool "USB to CAN bus bridge (USB on PA11/PA12)"
        depends on HAVE_STM32_USBCANBUS
        select USBCANBUS
endchoice
choice
    prompt "CAN bus interface" if USBCANBUS
    config STM32_CMENU_CANBUS_PB8_PB9
        bool "CAN bus (on PB8/PB9)"
    config STM32_CMENU_CANBUS_PI9_PH13
        bool "CAN bus (on PI9/PH13)"
        depends on HAVE_STM32_CANBUS && MACH_STM32F4
    config STM32_CMENU_CANBUS_PB5_PB6
        bool "CAN bus (on PB5/PB6)"
        depends on HAVE_STM32_CANBUS && MACH_STM32F4
    config STM32_CMENU_CANBUS_PB12_PB13
        bool "CAN bus (on PB12/PB13)"
        depends on HAVE_STM32_CANBUS && MACH_STM32F4
    config STM32_CMENU_CANBUS_PD0_PD1
        bool "CAN bus (on PD0/PD1)"
        depends on HAVE_STM32_CANBUS || HAVE_STM32_FDCANBUS
    config STM32_CMENU_CANBUS_PB0_PB1
        bool "CAN bus (on PB0/PB1)"
        depends on HAVE_STM32_FDCANBUS
    config STM32_CMENU_CANBUS_PD12_PD13
        bool "CAN bus (on PD12/PD13)"
        depends on HAVE_STM32_FDCANBUS
    config STM32_CMENU_CANBUS_PC2_PC3
        bool "CAN bus (on PC2/PC3)"
        depends on HAVE_STM32_FDCANBUS
endchoice


config STM32_CANBUS_PB8_PB9
    bool
    default y if STM32_MMENU_CANBUS_PB8_PB9 || STM32_CMENU_CANBUS_PB8_PB9
config STM32_CANBUS_PI9_PH13
    bool
    default y if STM32_MMENU_CANBUS_PI9_PH13 || STM32_CMENU_CANBUS_PI9_PH13
config STM32_CANBUS_PB5_PB6
    bool
    default y if STM32_MMENU_CANBUS_PB5_PB6 || STM32_CMENU_CANBUS_PB5_PB6
config STM32_CANBUS_PB12_PB13
    bool
    default y if STM32_MMENU_CANBUS_PB12_PB13 || STM32_CMENU_CANBUS_PB12_PB13
config STM32_CANBUS_PD0_PD1
    bool
    default y if STM32_MMENU_CANBUS_PD0_PD1 || STM32_CMENU_CANBUS_PD0_PD1
config STM32_CANBUS_PB0_PB1
    bool
    default y if STM32_MMENU_CANBUS_PB0_PB1 || STM32_CMENU_CANBUS_PB0_PB1
config STM32_CANBUS_PD12_PD13
    bool
    default y if STM32_MMENU_CANBUS_PD12_PD13 || STM32_CMENU_CANBUS_PD12_PD13
config STM32_CANBUS_PC2_PC3
    bool
    default y if STM32_MMENU_CANBUS_PC2_PC3 || STM32_CMENU_CANBUS_PC2_PC3

endif