aboutsummaryrefslogtreecommitdiffstats
path: root/src/stm32/Kconfig
blob: 646eb8bc0e075299a9999b14c811362a3871fd60 (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
# 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
    select HAVE_GPIO_SPI if !MACH_STM32F031
    select HAVE_GPIO_BITBANGING if !MACH_STM32F031
    select HAVE_STRICT_TIMING
    select HAVE_CHIPID

config BOARD_DIRECTORY
    string
    default "stm32"

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
    config MACH_STM32F407
        bool "STM32F407"
        select MACH_STM32F4
    config MACH_STM32F429
        bool "STM32F429"
        select MACH_STM32F4
    config MACH_STM32F446
        bool "STM32F446"
        select MACH_STM32F4
    config MACH_STM32F031
        bool "STM32F031"
        select MACH_STM32F0
    config MACH_STM32F042
        bool "STM32F042"
        select MACH_STM32F0
    config MACH_STM32F070
        bool "STM32F070"
        select MACH_STM32F0
endchoice

config MACH_STM32F0
    bool
config MACH_STM32F1
    bool
config MACH_STM32F2
    bool
config MACH_STM32F4
    bool
config HAVE_STM32_USBFS
    bool
    default y if MACH_STM32F103 || MACH_STM32F0
    default n
config HAVE_STM32_USBOTG
    bool
    default y if MACH_STM32F2 || MACH_STM32F4
    default n

config MCU
    string
    default "stm32f031x6" if MACH_STM32F031
    default "stm32f042x6" if MACH_STM32F042
    default "stm32f070xb" if MACH_STM32F070
    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

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_STM32F405 || MACH_STM32F407 || MACH_STM32F429
    default 180000000 if MACH_STM32F446

config FLASH_SIZE
    hex
    default 0x4000 if MACH_STM32F031
    default 0x8000 if MACH_STM32F042
    default 0x20000 if MACH_STM32F070
    default 0x10000 if MACH_STM32F103 # Flash size of stm32f103x8 (64KiB)
    default 0x40000 if MACH_STM32F2 || MACH_STM32F401
    default 0x80000 if MACH_STM32F405 || MACH_STM32F407 || MACH_STM32F429 || MACH_STM32F446

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
    default 0x5000 if MACH_STM32F103 # Ram size of stm32f103x8 (20KiB)
    default 0x20000 if MACH_STM32F207
    default 0x10000 if MACH_STM32F401
    default 0x20000 if MACH_STM32F405 || MACH_STM32F407 || MACH_STM32F429 || MACH_STM32F446

config STACK_SIZE
    int
    default 512

choice
    prompt "Bootloader offset" if MACH_STM32F207 || MACH_STM32F407 || MACH_STM32F405 || MACH_STM32F103 || MACH_STM32F070
    config STM32_FLASH_START_2000
        bool "8KiB bootloader (stm32duino)" if MACH_STM32F103 || MACH_STM32F070
    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_8800
        bool "34KiB bootloader (Chitu v6 Bootloader)" if MACH_STM32F103
    config STM32_FLASH_START_C000
        bool "48KiB bootloader (MKS Robin Nano V3)" if MACH_STM32F407
    config STM32_FLASH_START_10000
        bool "64KiB bootloader (Alfawise)" if MACH_STM32F103
    config STM32_FLASH_START_800
        bool "2KiB bootloader (HID Bootloader)" if MACH_STM32F103

    config STM32_FLASH_START_8000
        bool "32KiB bootloader (SKR-PRO or TFT35-V3.0)" if MACH_STM32F207 || MACH_STM32F407
    config STM32_FLASH_START_4000
        bool "16KiB bootloader (HID Bootloader)" if MACH_STM32F207 || MACH_STM32F405 || MACH_STM32F407

    config STM32_FLASH_START_0000
        bool "No bootloader"
endchoice
config FLASH_START
    hex
    default 0x8000800 if STM32_FLASH_START_800
    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 0x8000000

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

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_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 16000000 if STM32_CLOCK_REF_16M
    default 12000000 if STM32_CLOCK_REF_12M
    default 1 if STM32_CLOCK_REF_INTERNAL
    default 8000000

config USBSERIAL
    bool "Use USB for communication (instead of serial)"
    depends on HAVE_STM32_USBFS || HAVE_STM32_USBOTG
    default y

config CANSERIAL
    bool "Use CAN for communication (instead of serial)"
    depends on !USBSERIAL
    default n
config CANBUS_FREQUENCY
    int "CAN bus speed" if LOW_LEVEL_OPTIONS && CANSERIAL
    default 500000
choice
    depends on CANSERIAL
    prompt "CAN pins"
    config CAN_PINS_PA11_PA12
        bool "Pins PA11(rx) and PA12(tx)"
    config CAN_PINS_PB8_PB9
        bool "Pins PB8(rx) and PB9(tx)"
    config CAN_PINS_PI8_PH13
        bool "Pins PI9(rx) and PH13(tx)" if MACH_STM32F4
    config CAN_PINS_PB5_PB6
        bool "Pins PB5(rx) and PB6(tx)" if MACH_STM32F4
    config CAN_PINS_PB12_PB13
        bool "Pins PB12(rx) and PB13(tx)" if MACH_STM32F4
    config CAN_PINS_PD0_PD1
        bool "Pins PD0(rx) and PD1(tx)" if MACH_STM32F4
endchoice

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.

config STM32F042_PIN_SWAP
    bool "Use PA9/PA10 for USB or CAN" if MACH_STM32F042
    depends on (USBSERIAL || CANSERIAL) && MACH_STM32F042
    default y if (USBSERIAL || CANSERIAL)
    default n
    help
        Remaps logical pins PA11/PA12 to physical PA9/PA10 on low pincount F042 devices.
config SERIAL
    depends on !USBSERIAL && !CANSERIAL
    bool
    default y
choice
    depends on SERIAL
    prompt "Serial Port" if LOW_LEVEL_OPTIONS
    help
        Select the serial device to use.
    config STM32_SERIAL_USART1
        bool "USART1"
    config STM32_SERIAL_USART1_ALT
        bool "USART1 (on PA15/PA14)" if MACH_STM32F0
    config STM32_SERIAL_USART2
        bool "USART2 (on PA3/PA2)"
    config STM32_SERIAL_USART2_ALT
        bool "USART2 (on PA15/PA14)" if MACH_STM32F0
    config STM32_SERIAL_USART3
        bool "USART3"
    config STM32_SERIAL_USART3_ALT
        bool "USART3 (on PD9/PD8)" if MACH_STM32F405 || MACH_STM32F407
endchoice
config SERIAL_PORT
    int
    default 3 if STM32_SERIAL_USART3 || STM32_SERIAL_USART3_ALT
    default 2 if STM32_SERIAL_USART2 || STM32_SERIAL_USART2_ALT
    default 1

endif