Parcourir la source

Fysetc S6 support (#15850)

George Fu il y a 5 ans
Parent
révision
cf1e19d167

+ 1
- 0
Marlin/src/core/boards.h Voir le fichier

@@ -302,6 +302,7 @@
302 302
 #define BOARD_LERDGE_K                4209  // Lerdge K (STM32F407ZG)
303 303
 #define BOARD_LERDGE_X                4210  // Lerdge X (STM32F407VE)
304 304
 #define BOARD_VAKE403D                4211  // VAkE 403D (STM32F446VET6)
305
+#define BOARD_FYSETC_S6               4212  // FYSETC S6 board
305 306
 
306 307
 //
307 308
 // ARM Cortex M7

+ 2
- 0
Marlin/src/pins/pins.h Voir le fichier

@@ -523,6 +523,8 @@
523 523
   #include "stm32/pins_LERDGE_X.h"              // STM32F4                                env:STM32F4
524 524
 #elif MB(VAKE403D)
525 525
   #include "stm32/pins_VAKE403D.h"              // STM32F4                                env:STM32F4
526
+#elif MB(FYSETC_S6)
527
+  #include "stm32/pins_FYSETC_S6.h"             // STM32F4                                env:FYSETC_S6
526 528
 
527 529
 //
528 530
 // ARM Cortex M7

+ 234
- 0
Marlin/src/pins/stm32/pins_FYSETC_S6.h Voir le fichier

@@ -0,0 +1,234 @@
1
+/**
2
+ * Marlin 3D Printer Firmware
3
+ * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
4
+ *
5
+ * Based on Sprinter and grbl.
6
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
7
+ *
8
+ * This program is free software: you can redistribute it and/or modify
9
+ * it under the terms of the GNU General Public License as published by
10
+ * the Free Software Foundation, either version 3 of the License, or
11
+ * (at your option) any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ * GNU General Public License for more details.
17
+ *
18
+ * You should have received a copy of the GNU General Public License
19
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+ *
21
+ */
22
+#pragma once
23
+
24
+#ifndef STM32F4
25
+  #error "Oops! Select an STM32F4 board in 'Tools > Board.'"
26
+#elif HOTENDS > 3 || E_STEPPERS > 3
27
+  #error "RUMBA32 supports up to 3 hotends / E-steppers."
28
+#endif
29
+
30
+#ifndef BOARD_INFO_NAME
31
+  #define BOARD_INFO_NAME "FYSETC_S6"
32
+#endif
33
+#ifndef DEFAULT_MACHINE_NAME
34
+  #define DEFAULT_MACHINE_NAME BOARD_INFO_NAME
35
+#endif
36
+
37
+// change the prio to 3 , 2 is for software serial
38
+//#define TEMP_TIMER_IRQ_PRIO 3
39
+
40
+//
41
+// EEPROM Emulation
42
+// 
43
+#define FLASH_EEPROM_EMULATION
44
+//#define SRAM_EEPROM_EMULATION
45
+
46
+//
47
+// Limit Switches
48
+//
49
+#define X_MIN_PIN          PB14
50
+#define X_MAX_PIN          PA1
51
+#define Y_MIN_PIN          PB13
52
+#define Y_MAX_PIN          PA2
53
+#define Z_MIN_PIN          PA0
54
+#define Z_MAX_PIN          PA3
55
+
56
+//
57
+// Servos
58
+// share with Z_MAX_PIN
59
+//
60
+#define SERVO0_PIN         PA3
61
+
62
+//
63
+// Steppers
64
+//
65
+#define X_STEP_PIN         PE11
66
+#define X_DIR_PIN          PE10
67
+#define X_ENABLE_PIN       PE12
68
+#define X_CS_PIN           PE7
69
+
70
+#define Y_STEP_PIN         PD8
71
+#define Y_DIR_PIN          PB12
72
+#define Y_ENABLE_PIN       PD9
73
+#define Y_CS_PIN           PE15
74
+
75
+#define Z_STEP_PIN         PD14
76
+#define Z_DIR_PIN          PD13
77
+#define Z_ENABLE_PIN       PD15
78
+#define Z_CS_PIN           PD10
79
+
80
+#define E0_STEP_PIN        PD5
81
+#define E0_DIR_PIN         PD6
82
+#define E0_ENABLE_PIN      PD4
83
+#define E0_CS_PIN          PD7
84
+
85
+#define E1_STEP_PIN        PE6
86
+#define E1_DIR_PIN         PC13
87
+#define E1_ENABLE_PIN      PE5
88
+#define E1_CS_PIN          PC14
89
+
90
+#define E2_STEP_PIN        PE2
91
+#define E2_DIR_PIN         PE4
92
+#define E2_ENABLE_PIN      PE3
93
+#define E2_CS_PIN          PC15
94
+
95
+#if HAS_TMC220x
96
+  /**
97
+   * TMC2208/TMC2209 stepper drivers
98
+   *
99
+   */
100
+
101
+  //
102
+  // Software serial
103
+  //
104
+  #define X_SERIAL_TX_PIN  PE9
105
+  #define X_SERIAL_RX_PIN  PE8
106
+
107
+  #define Y_SERIAL_TX_PIN  PE14
108
+  #define Y_SERIAL_RX_PIN  PE13
109
+
110
+  #define Z_SERIAL_TX_PIN  PD11
111
+  #define Z_SERIAL_RX_PIN  PD12
112
+
113
+  #define E0_SERIAL_TX_PIN PD3
114
+  #define E0_SERIAL_RX_PIN PA15
115
+
116
+  #define E1_SERIAL_TX_PIN PC4
117
+  #define E1_SERIAL_RX_PIN PC5
118
+
119
+  #define E2_SERIAL_TX_PIN PE1
120
+  #define E2_SERIAL_RX_PIN PE0
121
+#endif
122
+
123
+//
124
+// Temperature Sensors
125
+//
126
+#define TEMP_0_PIN         PC0
127
+#define TEMP_1_PIN         PC1
128
+#define TEMP_2_PIN         PC2
129
+#define TEMP_BED_PIN       PC3
130
+
131
+//
132
+// Heaters / Fans
133
+//
134
+#define HEATER_0_PIN       PB3
135
+#define HEATER_1_PIN       PB4
136
+#define HEATER_2_PIN       PB15
137
+#define HEATER_BED_PIN     PC8
138
+
139
+#define FAN_PIN            PB0
140
+#define FAN1_PIN           PB1
141
+#define FAN2_PIN           PB2
142
+
143
+//
144
+// SPI
145
+//
146
+#define SCK_PIN            PA5
147
+#define MISO_PIN           PA6
148
+#define MOSI_PIN           PA7
149
+
150
+//
151
+// Misc. Functions
152
+//
153
+//#define LED_PIN            PB14
154
+//#define BTN_PIN            PC10
155
+//#define PS_ON_PIN          PE11
156
+//#define KILL_PIN           PC5
157
+
158
+#define SDSS               PA4
159
+
160
+//
161
+// LCD / Controller
162
+//
163
+
164
+#define BEEPER_PIN         PC9
165
+#define SD_DETECT_PIN      PB10
166
+
167
+#if ENABLED(FYSETC_MINI_12864)
168
+  //
169
+  // See https://wiki.fysetc.com/Mini12864_Panel/?fbclid=IwAR1FyjuNdVOOy9_xzky3qqo_WeM5h-4gpRnnWhQr_O1Ef3h0AFnFXmCehK8
170
+  //
171
+  #define DOGLCD_A0        PD2
172
+  #define DOGLCD_CS        PC11
173
+
174
+  //#define LCD_BACKLIGHT_PIN -1
175
+  //#define KILL_PIN          -1
176
+
177
+  #define LCD_RESET_PIN    PC10 // Must be high or open for LCD to operate normally.
178
+                                // Seems to work best if left open.
179
+
180
+  #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0)
181
+    #ifndef RGB_LED_R_PIN
182
+      #define RGB_LED_R_PIN PC12
183
+    #endif
184
+    #ifndef RGB_LED_G_PIN
185
+      #define RGB_LED_G_PIN PD0
186
+    #endif
187
+    #ifndef RGB_LED_B_PIN
188
+      #define RGB_LED_B_PIN PD1
189
+    #endif
190
+  #elif ENABLED(FYSETC_MINI_12864_2_1)
191
+    #define NEOPIXEL_PIN    PC12
192
+  #endif
193
+
194
+#elif HAS_GRAPHICAL_LCD
195
+  #define LCD_PINS_RS      PD2
196
+  #define LCD_PINS_ENABLE  PC11
197
+  #define LCD_PINS_D4      PC10
198
+  #define LCD_PINS_D5      PC12
199
+  #define LCD_PINS_D6      PD0
200
+  #define LCD_PINS_D7      PD1
201
+
202
+  #if ENABLED(MKS_MINI_12864)
203
+    #define DOGLCD_CS      PC12
204
+    #define DOGLCD_A0      PD0
205
+  #endif
206
+  
207
+#endif
208
+
209
+#if ENABLED(NEWPANEL)
210
+  #define BTN_EN1          PC6
211
+  #define BTN_EN2          PC7
212
+  #define BTN_ENC          PA8
213
+#endif
214
+
215
+// Alter timing for graphical display
216
+#if HAS_GRAPHICAL_LCD
217
+  #define BOARD_ST7920_DELAY_1 DELAY_NS(96)
218
+  #define BOARD_ST7920_DELAY_2 DELAY_NS(48)
219
+  #define BOARD_ST7920_DELAY_3 DELAY_NS(600)
220
+#endif
221
+
222
+#ifndef RGB_LED_R_PIN
223
+  #define RGB_LED_R_PIN    PB6
224
+#endif
225
+#ifndef RGB_LED_G_PIN
226
+  #define RGB_LED_G_PIN    PB5
227
+#endif
228
+#ifndef RGB_LED_B_PIN
229
+  #define RGB_LED_B_PIN    PB7
230
+#endif
231
+#ifndef RGB_LED_W_PIN
232
+  #define RGB_LED_W_PIN    -1
233
+#endif
234
+

+ 35
- 0
buildroot/share/PlatformIO/boards/fysetc_s6.json Voir le fichier

@@ -0,0 +1,35 @@
1
+{
2
+  "build": {
3
+    "cpu": "cortex-m4",
4
+    "extra_flags": "-DSTM32F446xx",
5
+    "f_cpu": "180000000L",
6
+    "mcu": "stm32f446ret6",
7
+    "variant": "FYSETC_S6"
8
+  },
9
+  "connectivity": [
10
+    "can"
11
+  ],
12
+  "debug": {
13
+    "jlink_device": "STM32F446RE",
14
+    "openocd_target": "stm32f4x",
15
+    "svd_path": "STM32F446x.svd"
16
+  },
17
+  "frameworks": [
18
+    "arduino",
19
+    "stm32cube"
20
+  ],
21
+  "name": "3D Printer control board",
22
+  "upload": {
23
+    "maximum_ram_size": 131072,
24
+    "maximum_size": 524288,
25
+    "protocol": "stlink",
26
+    "protocols": [
27
+      "jlink",
28
+      "stlink",
29
+      "blackmagic",
30
+      "serial"
31
+    ]
32
+  },
33
+  "url": "https://www.st.com/en/microcontrollers-microprocessors/stm32f446.html",
34
+  "vendor": "FYSETC"
35
+}

+ 55
- 0
buildroot/share/PlatformIO/scripts/fysetc_STM32S6.py Voir le fichier

@@ -0,0 +1,55 @@
1
+from os.path import join
2
+Import("env", "projenv")
3
+
4
+import os,shutil
5
+from SCons.Script import DefaultEnvironment
6
+from platformio import util
7
+
8
+env = DefaultEnvironment()
9
+platform = env.PioPlatform()
10
+board = env.BoardConfig()
11
+
12
+FRAMEWORK_DIR = platform.get_package_dir("framework-arduinoststm32")
13
+#FRAMEWORK_DIR = platform.get_package_dir("framework-arduinoststm32@3.10500.190327") 
14
+CMSIS_DIR = os.path.join(FRAMEWORK_DIR, "CMSIS", "CMSIS")
15
+assert os.path.isdir(FRAMEWORK_DIR)
16
+assert os.path.isdir(CMSIS_DIR)
17
+assert os.path.isdir("buildroot/share/PlatformIO/variants")
18
+
19
+mcu_type = board.get("build.mcu")[:-2]
20
+variant = board.get("build.variant")
21
+series = mcu_type[:7].upper() + "xx"
22
+variant_dir = os.path.join(FRAMEWORK_DIR, "variants", variant)
23
+
24
+source_dir = os.path.join("buildroot/share/PlatformIO/variants", variant)
25
+assert os.path.isdir(source_dir)
26
+
27
+if not os.path.isdir(variant_dir):
28
+    os.mkdir(variant_dir)
29
+
30
+for file_name in os.listdir(source_dir):
31
+    full_file_name = os.path.join(source_dir, file_name)
32
+    if os.path.isfile(full_file_name):
33
+        shutil.copy(full_file_name, variant_dir)
34
+		
35
+# Relocate firmware from 0x08000000 to 0x08002000
36
+#env['CPPDEFINES'].remove(("VECT_TAB_ADDR", 134217728))
37
+#env['CPPDEFINES'].append(("VECT_TAB_ADDR", "0x08010000"))
38
+#env.Replace(LDSCRIPT_PATH="buildroot/share/PlatformIO/ldscripts/fysetc_aio_ii.ld")
39
+
40
+# Custom HEX from ELF
41
+env.AddPostAction(
42
+	"$BUILD_DIR/${PROGNAME}.elf",
43
+	env.VerboseAction(" ".join([
44
+				"$OBJCOPY",
45
+				"-O",
46
+				"ihex",
47
+				"$BUILD_DIR/${PROGNAME}.elf",
48
+				"$BUILD_DIR/${PROGNAME}.hex"
49
+			]), "Building $TARGET"))
50
+
51
+# In-line command with arguments
52
+env.Replace(
53
+	UPLOADER=platform.get_package_dir("tool-stm32duino") + '/stm32flash/stm32flash',
54
+	UPLOADCMD='"${UPLOADER}" -v -i rts,-dtr,dtr,-rts -R -b 115200 -g 0x8000000 -w "${BUILD_DIR}/${PROGNAME}.hex" ${UPLOAD_PORT}'
55
+)

+ 361
- 0
buildroot/share/PlatformIO/variants/FYSETC_S6/PeripheralPins.c Voir le fichier

@@ -0,0 +1,361 @@
1
+/*
2
+ *******************************************************************************
3
+ * Copyright (c) 2016, STMicroelectronics
4
+ * All rights reserved.
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions are met:
8
+ *
9
+ * 1. Redistributions of source code must retain the above copyright notice,
10
+ *    this list of conditions and the following disclaimer.
11
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ *    this list of conditions and the following disclaimer in the documentation
13
+ *    and/or other materials provided with the distribution.
14
+ * 3. Neither the name of STMicroelectronics nor the names of its contributors
15
+ *    may be used to endorse or promote products derived from this software
16
+ *    without specific prior written permission.
17
+ *
18
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
22
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
+ *******************************************************************************
29
+ */
30
+#include "Arduino.h"
31
+#include "PeripheralPins.h"
32
+
33
+// =====
34
+// Note: Commented lines are alternative possibilities which are not used per default.
35
+//       If you change them, you will have to know what you do
36
+// =====
37
+
38
+
39
+//*** ADC ***
40
+
41
+#ifdef HAL_ADC_MODULE_ENABLED
42
+const PinMap PinMap_ADC[] = {
43
+  //  {PA_0,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC1_IN0
44
+  //  {PA_0,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC2_IN0
45
+  //  {PA_0,  ADC3,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC3_IN0
46
+  //  {PA_1,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC1_IN1
47
+  //  {PA_1,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC2_IN1
48
+  //  {PA_1,  ADC3,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC3_IN1
49
+  //  {PA_2,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC1_IN2
50
+  //  {PA_2,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC2_IN2
51
+  //  {PA_2,  ADC3,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC3_IN2
52
+  {PA_3,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC1_IN3
53
+  //  {PA_3,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC2_IN3
54
+  //  {PA_3,  ADC3,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC3_IN3
55
+  {PA_4,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC1_IN4
56
+  //  {PA_4,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC2_IN4
57
+  //  {PA_5,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC1_IN5
58
+  //  {PA_5,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC2_IN5
59
+  //  {PA_6,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC1_IN6
60
+  //  {PA_6,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC2_IN6
61
+  //  {PA_7,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC1_IN7
62
+  //  {PA_7,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC2_IN7
63
+  //  {PB_0,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC1_IN8
64
+  //  {PB_0,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC2_IN8
65
+  //  {PB_1,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC1_IN9
66
+  //  {PB_1,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC2_IN9
67
+  {PC_0,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC1_IN10
68
+  //  {PC_0,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC2_IN10
69
+  //  {PC_0,  ADC3,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC3_IN10
70
+  {PC_1,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC1_IN11
71
+  //  {PC_1,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC2_IN11
72
+  //  {PC_1,  ADC3,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC3_IN11
73
+  {PC_2,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC1_IN12
74
+  //  {PC_2,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC2_IN12
75
+  //  {PC_2,  ADC3,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC3_IN12
76
+  {PC_3,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC1_IN13
77
+  //  {PC_3,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC2_IN13
78
+  //  {PC_3,  ADC3,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC3_IN13
79
+  {PC_4,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC1_IN14
80
+  //  {PC_4,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC2_IN14
81
+  //  {PC_5,  ADC1,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_IN15
82
+  //  {PC_5,  ADC2,  STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC2_IN15
83
+  {NC,    NP,    0}
84
+};
85
+#endif
86
+
87
+//*** DAC ***
88
+
89
+#ifdef HAL_DAC_MODULE_ENABLED
90
+const PinMap PinMap_DAC[] = {
91
+  //  {PA_4,  DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // DAC_OUT1
92
+  //  {PA_5,  DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // DAC_OUT2 - LD2
93
+  {NC,   NP,    0}
94
+};
95
+#endif
96
+
97
+//*** I2C ***
98
+
99
+#ifdef HAL_I2C_MODULE_ENABLED
100
+const PinMap PinMap_I2C_SDA[] = {
101
+  //  {PB_3,  I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
102
+  //  {PB_4,  I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)},
103
+  //  {PB_7,  I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
104
+  {PB_9,  I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
105
+  //  {PC_7,  FMPI2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_FMPI2C1)},
106
+  //  {PC_9,  I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)},
107
+  //  {PC_12, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
108
+  {NC,    NP,    0}
109
+};
110
+#endif
111
+
112
+#ifdef HAL_I2C_MODULE_ENABLED
113
+const PinMap PinMap_I2C_SCL[] = {
114
+  //  {PA_8,  I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)},
115
+  //  {PB_6,  I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
116
+  {PB_8,  I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
117
+  //  {PB_10, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
118
+  //  {PC_6,  FMPI2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_FMPI2C1)},
119
+  {NC,    NP,    0}
120
+};
121
+#endif
122
+
123
+//*** PWM ***
124
+
125
+#ifdef HAL_TIM_MODULE_ENABLED
126
+const PinMap PinMap_PWM[] = {
127
+  {PA_0,  TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)},  // TIM2_CH1
128
+  //  {PA_0,  TIM5,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 1, 0)},  // TIM5_CH1
129
+  //  {PA_1,  TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)},  // TIM2_CH2
130
+  {PA_1,  TIM5,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 2, 0)},  // TIM5_CH2
131
+  //  {PA_2,  TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)},  // TIM2_CH3 - STLink Tx
132
+  //  {PA_2,  TIM5,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 3, 0)},  // TIM5_CH3 - STLink Tx
133
+  //  {PA_2,  TIM9,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 1, 0)},  // TIM9_CH1 - STLink Tx
134
+  //  {PA_3,  TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)},  // TIM2_CH4 - STLink Rx
135
+  //  {PA_3,  TIM5,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 4, 0)},  // TIM5_CH4 - STLink Rx
136
+  //  {PA_3,  TIM9,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 2, 0)},  // TIM9_CH2 - STLink Rx
137
+  {PA_5,  TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)},  // TIM2_CH1
138
+  //  {PA_5,  TIM8,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 1)},  // TIM8_CH1N
139
+  {PA_6,  TIM13,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM13, 1, 0)},  // TIM13_CH1
140
+  //  {PA_6,  TIM3,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)},  // TIM3_CH1
141
+  //{PA_7,  TIM14,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM14, 1, 0)},  // TIM14_CH1
142
+  //  {PA_7,  TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)},  // TIM1_CH1N
143
+  //  {PA_7,  TIM3,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)},  // TIM3_CH2
144
+  //  {PA_7,  TIM8,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 1)},  // TIM8_CH1N
145
+  //  {PA_8,  TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)},  // TIM1_CH1
146
+  {PA_9,  TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)},  // TIM1_CH2
147
+  {PA_10, TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)},  // TIM1_CH3
148
+  {PA_11, TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)},  // TIM1_CH4
149
+  {PA_15, TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)},  // TIM2_CH1
150
+  //  {PB_0,  TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)},  // TIM1_CH2N
151
+  //  {PB_0,  TIM3,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)},  // TIM3_CH3
152
+  {PB_0,  TIM8,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 1)},  // TIM8_CH2N
153
+  //  {PB_1,  TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)},  // TIM1_CH3N
154
+  //  {PB_1,  TIM3,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)},  // TIM3_CH4
155
+  {PB_1,  TIM8,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 1)},  // TIM8_CH3N
156
+  {PB_2,  TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)},  // TIM2_CH4
157
+  {PB_3,  TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)},  // TIM2_CH2
158
+  {PB_4,  TIM3,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)},  // TIM3_CH1
159
+  {PB_5,  TIM3,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)},  // TIM3_CH2
160
+  {PB_6,  TIM4,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 1, 0)},  // TIM4_CH1
161
+  {PB_7,  TIM4,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 2, 0)},  // TIM4_CH2
162
+  //  {PB_8,  TIM10,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM10, 1, 0)},  // TIM10_CH1
163
+  //  {PB_8,  TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)},  // TIM2_CH1
164
+  {PB_8,  TIM4,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 3, 0)},  // TIM4_CH3
165
+  {PB_9,  TIM11,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM11, 1, 0)},  // TIM11_CH1
166
+  //  {PB_9,  TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)},  // TIM2_CH2
167
+  //  {PB_9,  TIM4,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)},  // TIM4_CH4
168
+  {PB_10, TIM2,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)},  // TIM2_CH3
169
+  {PB_13, TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)},  // TIM1_CH1N
170
+  {PB_14, TIM12,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM12, 1, 0)},  // TIM12_CH1
171
+  //  {PB_14, TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)},  // TIM1_CH2N
172
+  //  {PB_14, TIM8,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 1)},  // TIM8_CH2N
173
+  {PB_15, TIM12,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM12, 2, 0)},  // TIM12_CH2
174
+  //  {PB_15, TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)},  // TIM1_CH3N
175
+  //  {PB_15, TIM8,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 1)},  // TIM8_CH3N
176
+  {PC_6,  TIM3,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)},  // TIM3_CH1
177
+  //  {PC_6,  TIM8,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 0)},  // TIM8_CH1
178
+  //  {PC_7,  TIM3,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)},  // TIM3_CH2
179
+  {PC_7,  TIM8,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 0)},  // TIM8_CH2
180
+  {PC_8,  TIM3,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)},  // TIM3_CH3
181
+  //  {PC_8,  TIM8,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 0)},  // TIM8_CH3
182
+  //  {PC_9,  TIM3,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)},  // TIM3_CH4
183
+  {PC_9,  TIM8,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 4, 0)},  // TIM8_CH4
184
+  {PD_15, TIM4,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)},  // TIM4_CH4
185
+  {PE_9,  TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)},  // TIM1_CH1
186
+  {PE_10, TIM1,   STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)},  // TIM1_CH2N
187
+  {NC,    NP,    0}
188
+};
189
+#endif
190
+
191
+//*** SERIAL ***
192
+
193
+#ifdef HAL_UART_MODULE_ENABLED
194
+const PinMap PinMap_UART_TX[] = {
195
+  //  {PA_0,  UART4,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)},
196
+  //  {PA_2,  USART2,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
197
+  {PA_9,  USART1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
198
+  //  {PB_6,  USART1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
199
+  //  {PB_10, USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
200
+  //  {PC_6,  USART6,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)},
201
+  //  {PC_10, UART4,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)},
202
+  {PD_2, USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
203
+  //  {PC_12, UART5,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)},
204
+  {NC,    NP,    0}
205
+};
206
+#endif
207
+
208
+#ifdef HAL_UART_MODULE_ENABLED
209
+const PinMap PinMap_UART_RX[] = {
210
+  //  {PA_1,  UART4,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)},
211
+  //  {PA_3,  USART2,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
212
+  {PA_10, USART1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
213
+  //  {PB_7,  USART1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
214
+  //  {PC_5,  USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
215
+  //  {PC_7,  USART6,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)},
216
+  //  {PC_11, UART4,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)},
217
+  {PC_11, USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
218
+  //  {PD_2,  UART5,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)},
219
+  {NC,    NP,    0}
220
+};
221
+#endif
222
+
223
+#ifdef HAL_UART_MODULE_ENABLED
224
+const PinMap PinMap_UART_RTS[] = {
225
+  //  {PA_1,  USART2,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
226
+  //  {PA_12, USART1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
227
+  //  {PA_15, UART4,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)},
228
+  //  {PB_14, USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
229
+  //  {PC_8,  UART5,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART5)},
230
+  {NC,    NP,    0}
231
+};
232
+#endif
233
+
234
+#ifdef HAL_UART_MODULE_ENABLED
235
+const PinMap PinMap_UART_CTS[] = {
236
+  //  {PA_0,  USART2,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
237
+  //  {PA_11, USART1,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
238
+  //  {PB_0,  UART4,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)},
239
+  //  {PB_13, USART3,  STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
240
+  //  {PC_9,  UART5,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART5)},
241
+  {NC,    NP,    0}
242
+};
243
+#endif
244
+
245
+//*** SPI ***
246
+
247
+#ifdef HAL_SPI_MODULE_ENABLED
248
+const PinMap PinMap_SPI_MOSI[] = {
249
+  {PA_7,  SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
250
+  //  {PB_0,  SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_SPI3)},
251
+  //  {PB_2,  SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_SPI3)},
252
+  //  {PB_5,  SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
253
+  //  {PB_5,  SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
254
+  //  {PB_15, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
255
+  //  {PC_1,  SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_SPI2)},
256
+  //  {PC_1,  SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI3)},
257
+  //  {PC_3,  SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
258
+  //  {PC_12, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
259
+  {NC,    NP,    0}
260
+};
261
+#endif
262
+
263
+#ifdef HAL_SPI_MODULE_ENABLED
264
+const PinMap PinMap_SPI_MISO[] = {
265
+  {PA_6,  SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
266
+  //  {PB_4,  SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
267
+  //  {PB_4,  SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
268
+  //  {PB_14, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
269
+  //  {PC_2,  SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
270
+  //  {PC_11, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
271
+  {NC,    NP,    0}
272
+};
273
+#endif
274
+
275
+#ifdef HAL_SPI_MODULE_ENABLED
276
+const PinMap PinMap_SPI_SCLK[] = {
277
+  {PA_5,  SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
278
+  //  {PA_9,  SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
279
+  //  {PB_3,  SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
280
+  //  {PB_3,  SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
281
+  //  {PB_10, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
282
+  //  {PB_13, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
283
+  //  {PC_7,  SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
284
+  //  {PC_10, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
285
+  {NC,    NP,    0}
286
+};
287
+#endif
288
+
289
+#ifdef HAL_SPI_MODULE_ENABLED
290
+const PinMap PinMap_SPI_SSEL[] = {
291
+  {PA_4,  SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
292
+  //  {PA_4,  SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
293
+  //  {PA_15, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
294
+  //  {PA_15, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
295
+  //  {PB_4,  SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_SPI2)},
296
+  //  {PB_9,  SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
297
+  //  {PB_12, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
298
+  {NC,    NP,    0}
299
+};
300
+#endif
301
+
302
+//*** CAN ***
303
+
304
+#ifdef HAL_CAN_MODULE_ENABLED
305
+const PinMap PinMap_CAN_RD[] = {
306
+  //  {PA_11, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)},
307
+  //  {PB_5,  CAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN2)},
308
+  //  {PB_8,  CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)},
309
+  //  {PB_12, CAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN2)},
310
+  {NC,    NP,    0}
311
+};
312
+#endif
313
+
314
+#ifdef HAL_CAN_MODULE_ENABLED
315
+const PinMap PinMap_CAN_TD[] = {
316
+  //  {PA_12, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)},
317
+  //  {PB_6,  CAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN2)},
318
+  //  {PB_9,  CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)},
319
+  //  {PB_13, CAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN2)},
320
+  {NC,    NP,    0}
321
+};
322
+#endif
323
+
324
+//*** ETHERNET ***
325
+
326
+//*** No Ethernet ***
327
+
328
+//*** QUADSPI ***
329
+
330
+#ifdef HAL_QSPI_MODULE_ENABLED
331
+const PinMap PinMap_QUADSPI[] = {
332
+  //  {PA_1,  QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QSPI)},  // QUADSPI_BK1_IO3
333
+  //  {PB_2,  QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QSPI)},  // QUADSPI_CLK
334
+  //  {PB_6,  QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QSPI)},  // QUADSPI_BK1_NCS
335
+  //  {PC_9,  QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QSPI)},  // QUADSPI_BK1_IO0
336
+  //  {PC_10, QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QSPI)},  // QUADSPI_BK1_IO1
337
+  //  {PC_11, QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QSPI)},  // QUADSPI_BK2_NCS
338
+  {NC,    NP,    0}
339
+};
340
+#endif
341
+
342
+//*** USB ***
343
+
344
+#ifdef HAL_PCD_MODULE_ENABLED
345
+const PinMap PinMap_USB_OTG_FS[] = {
346
+  //  {PA_8,  USB_OTG_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_FS)}, // USB_OTG_FS_SOF
347
+  //  {PA_9,  USB_OTG_FS, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)}, // USB_OTG_FS_VBUS
348
+  //  {PA_10, USB_OTG_FS, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_PULLUP, GPIO_AF10_OTG_FS)}, // USB_OTG_FS_ID
349
+  {PA_11, USB_OTG_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_FS)}, // USB_OTG_FS_DM
350
+  {PA_12, USB_OTG_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_FS)}, // USB_OTG_FS_DP
351
+  {NC,    NP,    0}
352
+};
353
+#endif
354
+
355
+#ifdef HAL_PCD_MODULE_ENABLED
356
+const PinMap PinMap_USB_OTG_HS[] = {
357
+  {NC,    NP,    0}
358
+};
359
+#endif
360
+
361
+

+ 30
- 0
buildroot/share/PlatformIO/variants/FYSETC_S6/PinNamesVar.h Voir le fichier

@@ -0,0 +1,30 @@
1
+/* SYS_WKUP */
2
+#ifdef PWR_WAKEUP_PIN1
3
+SYS_WKUP1 = PA_0, /* SYS_WKUP0 */
4
+#endif
5
+#ifdef PWR_WAKEUP_PIN2
6
+SYS_WKUP2 = NC,
7
+#endif
8
+#ifdef PWR_WAKEUP_PIN3
9
+SYS_WKUP3 = NC,
10
+#endif
11
+#ifdef PWR_WAKEUP_PIN4
12
+SYS_WKUP4 = NC,
13
+#endif
14
+#ifdef PWR_WAKEUP_PIN5
15
+SYS_WKUP5 = NC,
16
+#endif
17
+#ifdef PWR_WAKEUP_PIN6
18
+SYS_WKUP6 = NC,
19
+#endif
20
+#ifdef PWR_WAKEUP_PIN7
21
+SYS_WKUP7 = NC,
22
+#endif
23
+#ifdef PWR_WAKEUP_PIN8
24
+SYS_WKUP8 = NC,
25
+#endif
26
+/* USB */
27
+#ifdef USBCON
28
+USB_OTG_FS_DM = PA_11,
29
+USB_OTG_FS_DP = PA_12,
30
+#endif

+ 189
- 0
buildroot/share/PlatformIO/variants/FYSETC_S6/ldscript.ld Voir le fichier

@@ -0,0 +1,189 @@
1
+/*
2
+*****************************************************************************
3
+**
4
+
5
+**  File        : LinkerScript.ld
6
+**
7
+**  Abstract    : Linker script for STM32F407VETx Device with
8
+**                512KByte FLASH, 128KByte RAM
9
+**
10
+**                Set heap size, stack size and stack location according
11
+**                to application requirements.
12
+**
13
+**                Set memory bank area and size if external memory is used.
14
+**
15
+**  Target      : STMicroelectronics STM32
16
+**
17
+**
18
+**  Distribution: The file is distributed as is, without any warranty
19
+**                of any kind.
20
+**
21
+*****************************************************************************
22
+** @attention
23
+**
24
+** <h2><center>&copy; COPYRIGHT(c) 2014 Ac6</center></h2>
25
+**
26
+** Redistribution and use in source and binary forms, with or without modification,
27
+** are permitted provided that the following conditions are met:
28
+**   1. Redistributions of source code must retain the above copyright notice,
29
+**      this list of conditions and the following disclaimer.
30
+**   2. Redistributions in binary form must reproduce the above copyright notice,
31
+**      this list of conditions and the following disclaimer in the documentation
32
+**      and/or other materials provided with the distribution.
33
+**   3. Neither the name of Ac6 nor the names of its contributors
34
+**      may be used to endorse or promote products derived from this software
35
+**      without specific prior written permission.
36
+**
37
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
38
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
39
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
40
+** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
41
+** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
42
+** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
43
+** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
44
+** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
45
+** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
46
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
47
+**
48
+*****************************************************************************
49
+*/
50
+
51
+/* Entry Point */
52
+ENTRY(Reset_Handler)
53
+
54
+/* Highest address of the user mode stack */
55
+_estack = 0x20020000;    /* end of RAM */
56
+/* Generate a link error if heap and stack don't fit into RAM */
57
+_Min_Heap_Size = 0x200;;      /* required amount of heap  */
58
+_Min_Stack_Size = 0x400;; /* required amount of stack */
59
+
60
+/* Specify the memory areas */
61
+MEMORY
62
+{
63
+FLASH (rx)      : ORIGIN = 0x8010000, LENGTH = 512K
64
+RAM (xrw)      : ORIGIN = 0x20000000, LENGTH = 128K
65
+}
66
+
67
+/* Define output sections */
68
+SECTIONS
69
+{
70
+  /* The startup code goes first into FLASH */
71
+  .isr_vector :
72
+  {
73
+    . = ALIGN(4);
74
+    KEEP(*(.isr_vector)) /* Startup code */
75
+    . = ALIGN(4);
76
+  } >FLASH
77
+
78
+  /* The program code and other data goes into FLASH */
79
+  .text ALIGN(4):
80
+  {
81
+    . = ALIGN(4);
82
+    *(.text)           /* .text sections (code) */
83
+    *(.text*)          /* .text* sections (code) */
84
+    *(.glue_7)         /* glue arm to thumb code */
85
+    *(.glue_7t)        /* glue thumb to arm code */
86
+    *(.eh_frame)
87
+
88
+    KEEP (*(.init))
89
+    KEEP (*(.fini))
90
+
91
+    . = ALIGN(4);
92
+    _etext = .;        /* define a global symbols at end of code */
93
+  } >FLASH
94
+
95
+  /* Constant data goes into FLASH */
96
+  .rodata ALIGN(4):
97
+  {
98
+    . = ALIGN(4);
99
+    *(.rodata)         /* .rodata sections (constants, strings, etc.) */
100
+    *(.rodata*)        /* .rodata* sections (constants, strings, etc.) */
101
+    . = ALIGN(4);
102
+  } >FLASH
103
+
104
+  .ARM.extab   : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
105
+  .ARM : {
106
+    __exidx_start = .;
107
+    *(.ARM.exidx*)
108
+    __exidx_end = .;
109
+  } >FLASH
110
+
111
+  .preinit_array     :
112
+  {
113
+    PROVIDE_HIDDEN (__preinit_array_start = .);
114
+    KEEP (*(.preinit_array*))
115
+    PROVIDE_HIDDEN (__preinit_array_end = .);
116
+  } >FLASH
117
+  .init_array :
118
+  {
119
+    PROVIDE_HIDDEN (__init_array_start = .);
120
+    KEEP (*(SORT(.init_array.*)))
121
+    KEEP (*(.init_array*))
122
+    PROVIDE_HIDDEN (__init_array_end = .);
123
+  } >FLASH
124
+  .fini_array :
125
+  {
126
+    PROVIDE_HIDDEN (__fini_array_start = .);
127
+    KEEP (*(SORT(.fini_array.*)))
128
+    KEEP (*(.fini_array*))
129
+    PROVIDE_HIDDEN (__fini_array_end = .);
130
+  } >FLASH
131
+
132
+  /* used by the startup to initialize data */
133
+  _sidata = LOADADDR(.data);
134
+
135
+  /* Initialized data sections goes into RAM, load LMA copy after code */
136
+  .data : 
137
+  {
138
+    . = ALIGN(4);
139
+    _sdata = .;        /* create a global symbol at data start */
140
+    *(.data)           /* .data sections */
141
+    *(.data*)          /* .data* sections */
142
+
143
+    . = ALIGN(4);
144
+    _edata = .;        /* define a global symbol at data end */
145
+  } >RAM AT> FLASH
146
+
147
+  /*_siccmram = LOADADDR(.ccmram);*/
148
+
149
+  /* Uninitialized data section */
150
+  . = ALIGN(4);
151
+  .bss :
152
+  {
153
+    /* This is used by the startup in order to initialize the .bss secion */
154
+    _sbss = .;         /* define a global symbol at bss start */
155
+    __bss_start__ = _sbss;
156
+    *(.bss)
157
+    *(.bss*)
158
+    *(COMMON)
159
+
160
+    . = ALIGN(4);
161
+    _ebss = .;         /* define a global symbol at bss end */
162
+    __bss_end__ = _ebss;
163
+  } >RAM
164
+
165
+  /* User_heap_stack section, used to check that there is enough RAM left */
166
+  ._user_heap_stack :
167
+  {
168
+    . = ALIGN(4);
169
+    PROVIDE ( end = . );
170
+    PROVIDE ( _end = . );
171
+    . = . + _Min_Heap_Size;
172
+    . = . + _Min_Stack_Size;
173
+    . = ALIGN(4);
174
+  } >RAM
175
+
176
+  
177
+
178
+  /* Remove information from the standard libraries */
179
+  /DISCARD/ :
180
+  {
181
+    libc.a ( * )
182
+    libm.a ( * )
183
+    libgcc.a ( * )
184
+  }
185
+
186
+  .ARM.attributes 0 : { *(.ARM.attributes) }
187
+}
188
+
189
+

+ 201
- 0
buildroot/share/PlatformIO/variants/FYSETC_S6/variant.cpp Voir le fichier

@@ -0,0 +1,201 @@
1
+/*
2
+  Copyright (c) 2011 Arduino.  All right reserved.
3
+
4
+  This library is free software; you can redistribute it and/or
5
+  modify it under the terms of the GNU Lesser General Public
6
+  License as published by the Free Software Foundation; either
7
+  version 2.1 of the License, or (at your option) any later version.
8
+
9
+  This library is distributed in the hope that it will be useful,
10
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
+  See the GNU Lesser General Public License for more details.
13
+
14
+  You should have received a copy of the GNU Lesser General Public
15
+  License along with this library; if not, write to the Free Software
16
+  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
17
+*/
18
+
19
+#include "pins_arduino.h"
20
+
21
+#ifdef __cplusplus
22
+extern "C" {
23
+#endif
24
+
25
+// Pin number
26
+const PinName digitalPin[] = {
27
+  PA_0,  //D0
28
+  PA_1,  //D1
29
+  PA_2,  //D2
30
+  PA_3,  //D3
31
+  PA_4,  //D4
32
+  PA_5,  //D5
33
+  PA_6,  //D6
34
+  PA_7,  //D7
35
+  PA_8,  //D8
36
+  PA_9,  //D9
37
+  PA_10, //D10
38
+  PA_11, //D11
39
+  PA_12, //D12
40
+  PA_13, //D13
41
+  PA_14, //D14
42
+  PA_15, //D15
43
+  PB_0,  //D16
44
+  PB_1,  //D17
45
+  PB_2,  //D18
46
+  PB_3,  //D19
47
+  PB_4,  //D20
48
+  PB_5,  //D21
49
+  PB_6,  //D22
50
+  PB_7,  //D23
51
+  PB_8,  //D24
52
+  PB_9,  //D25
53
+  PB_10, //D26
54
+  PB_11, //D27
55
+  PB_12, //D28
56
+  PB_13, //D29
57
+  PB_14, //D30
58
+  PB_15, //D31
59
+  PC_0,  //D32
60
+  PC_1,  //D33
61
+  PC_2,  //D34
62
+  PC_3,  //D35
63
+  PC_4,  //D36
64
+  PC_5,  //D37
65
+  PC_6,  //D38
66
+  PC_7,  //D39
67
+  PC_8,  //D40
68
+  PC_9,  //D41
69
+  PC_10, //D42
70
+  PC_11, //D43
71
+  PC_12, //D44
72
+  PC_13, //D45
73
+  PC_14, //D46
74
+  PC_15, //D47
75
+  PD_0,  //D48
76
+  PD_1,  //D49
77
+  PD_2,  //D50
78
+  PD_3,  //D51
79
+  PD_4,  //D52
80
+  PD_5,  //D53
81
+  PD_6,  //D54
82
+  PD_7,  //D55
83
+  PD_8,  //D56
84
+  PD_9,  //D57
85
+  PD_10, //D58
86
+  PD_11, //D59
87
+  PD_12, //D60
88
+  PD_13, //D61
89
+  PD_14, //D62
90
+  PD_15, //D63
91
+  PE_0,  //D64
92
+  PE_1,  //D65
93
+  PE_2,  //D66
94
+  PE_3,  //D67
95
+  PE_4,  //D68
96
+  PE_5,  //D69
97
+  PE_6,  //D70
98
+  PE_7,  //D71
99
+  PE_8,  //D72
100
+  PE_9,  //D73
101
+  PE_10, //D74
102
+  PE_11, //D75
103
+  PE_12, //D76
104
+  PE_13, //D77
105
+  PE_14, //D78
106
+  PE_15, //D79
107
+
108
+  //Duplicated ADC Pins
109
+  PA_3,  //D80/A0
110
+  PA_4,  //D81/A1
111
+  PC_0,  //D82/A2
112
+  PC_1,  //D83/A3
113
+  PC_2,  //D84/A4
114
+  PC_3,  //D85/A5
115
+  PC_4   //D86/A6
116
+};
117
+
118
+#ifdef __cplusplus
119
+}
120
+#endif
121
+
122
+// ----------------------------------------------------------------------------
123
+
124
+#ifdef __cplusplus
125
+extern "C" {
126
+#endif
127
+
128
+/**
129
+  * @brief  System Clock Configuration
130
+  *         The system Clock is configured as follow :
131
+  *            System Clock source            = PLL (HSE)
132
+  *            SYSCLK(Hz)                     = 180000000
133
+  *            HCLK(Hz)                       = 180000000
134
+  *            AHB Prescaler                  = 1
135
+  *            APB1 Prescaler                 = 4
136
+  *            APB2 Prescaler                 = 2
137
+  *            HSE Frequency(Hz)              = 12000000
138
+  *            PLL_M                          = 6
139
+  *            PLL_N                          = 180
140
+  *            PLL_P                          = 2
141
+  *            PLL_Q                          = 7
142
+  *            VDD(V)                         = 3.3
143
+  *            Main regulator output voltage  = Scale1 mode
144
+  *            Flash Latency(WS)              = 5
145
+  * @param  None
146
+  * @retval None
147
+  */
148
+WEAK void SystemClock_Config(void)
149
+{
150
+  RCC_ClkInitTypeDef RCC_ClkInitStruct;
151
+  RCC_OscInitTypeDef RCC_OscInitStruct;
152
+  RCC_PeriphCLKInitTypeDef PeriphClkInitStruct;
153
+
154
+
155
+  /* Enable Power Control clock */
156
+  __HAL_RCC_PWR_CLK_ENABLE();
157
+
158
+#ifdef HAL_PWR_MODULE_ENABLED
159
+  /* The voltage scaling allows optimizing the power consumption when the device is
160
+     clocked below the maximum system frequency, to update the voltage scaling value
161
+     regarding system frequency refer to product datasheet.  */
162
+  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
163
+#endif
164
+
165
+  /* Enable HSE Oscillator and activate PLL with HSE as source */
166
+  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
167
+  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
168
+  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
169
+  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
170
+  RCC_OscInitStruct.PLL.PLLM = 6;
171
+  RCC_OscInitStruct.PLL.PLLN = 180;
172
+  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
173
+  RCC_OscInitStruct.PLL.PLLQ = 7;
174
+  RCC_OscInitStruct.PLL.PLLR = 2;
175
+  HAL_RCC_OscConfig(&RCC_OscInitStruct);
176
+
177
+  HAL_PWREx_EnableOverDrive();
178
+
179
+  /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2
180
+     clocks dividers */
181
+  RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK |
182
+                                 RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
183
+  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLRCLK;
184
+  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
185
+  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
186
+  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
187
+  HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5);
188
+
189
+  PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_CLK48;
190
+  PeriphClkInitStruct.PLLSAI.PLLSAIM = 6;
191
+  PeriphClkInitStruct.PLLSAI.PLLSAIN = 96;
192
+  PeriphClkInitStruct.PLLSAI.PLLSAIQ = 2;
193
+  PeriphClkInitStruct.PLLSAI.PLLSAIP = RCC_PLLSAIP_DIV4;
194
+  PeriphClkInitStruct.PLLSAIDivQ = 1;
195
+  PeriphClkInitStruct.Clk48ClockSelection = RCC_CLK48CLKSOURCE_PLLSAIP;
196
+  HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct);
197
+}
198
+
199
+#ifdef __cplusplus
200
+}
201
+#endif

+ 181
- 0
buildroot/share/PlatformIO/variants/FYSETC_S6/variant.h Voir le fichier

@@ -0,0 +1,181 @@
1
+/*
2
+  Copyright (c) 2011 Arduino.  All right reserved.
3
+
4
+  This library is free software; you can redistribute it and/or
5
+  modify it under the terms of the GNU Lesser General Public
6
+  License as published by the Free Software Foundation; either
7
+  version 2.1 of the License, or (at your option) any later version.
8
+
9
+  This library is distributed in the hope that it will be useful,
10
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
+  See the GNU Lesser General Public License for more details.
13
+
14
+  You should have received a copy of the GNU Lesser General Public
15
+  License along with this library; if not, write to the Free Software
16
+  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
17
+*/
18
+
19
+#ifndef _VARIANT_ARDUINO_STM32_
20
+#define _VARIANT_ARDUINO_STM32_
21
+
22
+#ifdef __cplusplus
23
+extern "C" {
24
+#endif // __cplusplus
25
+
26
+/*----------------------------------------------------------------------------
27
+ *        Pins
28
+ *----------------------------------------------------------------------------*/
29
+
30
+#define PA0   0  //D0
31
+#define PA1   1  //D1
32
+#define PA2   2  //D2
33
+#define PA3   3  //D3
34
+#define PA4   4  //D4
35
+#define PA5   5  //D5
36
+#define PA6   6  //D6
37
+#define PA7   7  //D7
38
+#define PA8   8  //D8
39
+#define PA9   9  //D9
40
+#define PA10  10 //D10
41
+#define PA11  11 //D11
42
+#define PA12  12 //D12
43
+#define PA13  13 //D13
44
+#define PA14  14 //D14
45
+#define PA15  15 //D15
46
+#define PB0   16 //D16
47
+#define PB1   17 //D17
48
+#define PB2   18 //D18
49
+#define PB3   19 //D19
50
+#define PB4   20 //D20
51
+#define PB5   21 //D21
52
+#define PB6   22 //D22
53
+#define PB7   23 //D23
54
+#define PB8   24 //D24
55
+#define PB9   25 //D25
56
+#define PB10  26 //D26
57
+#define PB11  27 //D27
58
+#define PB12  28 //D28
59
+#define PB13  29 //D29
60
+#define PB14  30 //D30
61
+#define PB15  31 //D31
62
+#define PC0   32 //D32
63
+#define PC1   33 //D33
64
+#define PC2   34 //D34
65
+#define PC3   35 //D35
66
+#define PC4   36 //D36
67
+#define PC5   37 //D37
68
+#define PC6   38 //D38
69
+#define PC7   39 //D39
70
+#define PC8   40 //D40
71
+#define PC9   41 //D41
72
+#define PC10  42 //D42
73
+#define PC11  43 //D43
74
+#define PC12  44 //D44
75
+#define PC13  45 //D45
76
+#define PC14  46 //D46
77
+#define PC15  47 //D47
78
+#define PD0   48 //D48
79
+#define PD1   49 //D49
80
+#define PD2   50 //D50
81
+#define PD3   51 //D51
82
+#define PD4   52 //D52
83
+#define PD5   53 //D53
84
+#define PD6   54 //D54
85
+#define PD7   55 //D55
86
+#define PD8   56 //D56
87
+#define PD9   57 //D57
88
+#define PD10  58 //D58
89
+#define PD11  59 //D59
90
+#define PD12  60 //D60
91
+#define PD13  61 //D61
92
+#define PD14  62 //D62
93
+#define PD15  63 //D63
94
+#define PE0   64 //D64
95
+#define PE1   65 //D65
96
+#define PE2   66 //D66
97
+#define PE3   67 //D67
98
+#define PE4   68 //D68
99
+#define PE5   69 //D69
100
+#define PE6   70 //D70
101
+#define PE7   71 //D71
102
+#define PE8   72 //D72
103
+#define PE9   73 //D73
104
+#define PE10  74 //D74
105
+#define PE11  75 //D75
106
+#define PE12  76 //D76
107
+#define PE13  77 //D77
108
+#define PE14  78 //D78
109
+#define PE15  79 //D79
110
+
111
+// This must be a literal with the same value as PEND
112
+#define NUM_DIGITAL_PINS        87
113
+// This must be a literal with a value less than or equal to to MAX_ANALOG_INPUTS
114
+#define NUM_ANALOG_INPUTS       7
115
+#define NUM_ANALOG_FIRST        80
116
+
117
+// PWM resolution
118
+#define PWM_RESOLUTION          8
119
+#define PWM_FREQUENCY           20000 // >= 20 Khz => inaudible noise for fans
120
+#define PWM_MAX_DUTY_CYCLE      255
121
+
122
+// SPI Definitions
123
+#define PIN_SPI_SS              PA4
124
+#define PIN_SPI_MOSI            PA7
125
+#define PIN_SPI_MISO            PA6
126
+#define PIN_SPI_SCK             PA5
127
+
128
+// I2C Definitions
129
+#define PIN_WIRE_SDA            PB9
130
+#define PIN_WIRE_SCL            PB8
131
+
132
+// Timer Definitions
133
+// Do not use timer used by PWM pin. See PinMap_PWM.
134
+#define TIMER_TONE              TIM6
135
+#define TIMER_SERVO             TIM14
136
+#define TIMER_SERIAL            TIM7
137
+
138
+// UART Definitions
139
+//#define SERIAL_UART_INSTANCE    1 // Connected to EXP3 header
140
+/* Enable Serial 3 */
141
+#define HAVE_HWSERIAL1
142
+#define HAVE_HWSERIAL3
143
+
144
+// Default pin used for 'Serial' instance (ex: ST-Link)
145
+// Mandatory for Firmata
146
+#define PIN_SERIAL_RX           PA10
147
+#define PIN_SERIAL_TX           PA9
148
+
149
+/* HAL configuration */
150
+#define HSE_VALUE               12000000U
151
+
152
+#define FLASH_PAGE_SIZE			((uint32_t)(4*1024))
153
+
154
+#ifdef __cplusplus
155
+} // extern "C"
156
+#endif
157
+/*----------------------------------------------------------------------------
158
+ *        Arduino objects - C++ only
159
+ *----------------------------------------------------------------------------*/
160
+
161
+#ifdef __cplusplus
162
+// These serial port names are intended to allow libraries and architecture-neutral
163
+// sketches to automatically default to the correct port name for a particular type
164
+// of use.  For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
165
+// the first hardware serial port whose RX/TX pins are not dedicated to another use.
166
+//
167
+// SERIAL_PORT_MONITOR        Port which normally prints to the Arduino Serial Monitor
168
+//
169
+// SERIAL_PORT_USBVIRTUAL     Port which is USB virtual serial
170
+//
171
+// SERIAL_PORT_LINUXBRIDGE    Port which connects to a Linux system via Bridge library
172
+//
173
+// SERIAL_PORT_HARDWARE       Hardware serial port, physical RX & TX pins.
174
+//
175
+// SERIAL_PORT_HARDWARE_OPEN  Hardware serial ports which are open for use.  Their RX & TX
176
+//                            pins are NOT connected to anything by default.
177
+#define SERIAL_PORT_MONITOR     Serial
178
+#define SERIAL_PORT_HARDWARE_OPEN  Serial
179
+#endif
180
+
181
+#endif /* _VARIANT_ARDUINO_STM32_ */

+ 2210
- 0
config/examples/FYSETC/S6/Configuration.h
Fichier diff supprimé car celui-ci est trop grand
Voir le fichier


+ 2867
- 0
config/examples/FYSETC/S6/Configuration_adv.h
Fichier diff supprimé car celui-ci est trop grand
Voir le fichier


+ 26
- 4
platformio.ini Voir le fichier

@@ -396,6 +396,28 @@ src_filter    = ${common.default_src_filter} +<src/HAL/HAL_STM32_F4_F7> -<src/HA
396 396
 monitor_speed = 250000
397 397
 
398 398
 #
399
+# FYSETC S6 (STM32F446VET6 ARM Cortex-M4)
400
+#
401
+[env:FYSETC_S6]
402
+platform          = ststm32
403
+framework         = arduino
404
+board             = fysetc_s6
405
+extra_scripts     = buildroot/share/PlatformIO/scripts/fysetc_STM32S6.py
406
+build_flags       = ${common.build_flags}
407
+  -DTARGET_STM32F4 -std=gnu++14
408
+  -DVECT_TAB_OFFSET=0x10000
409
+  -DUSBCON -DUSBD_USE_CDC -DHAL_PCD_MODULE_ENABLED -DUSBD_VID=0x0483 '-DUSB_PRODUCT="FYSETC_S6"'
410
+build_unflags     = -std=gnu++11
411
+lib_deps          = ${common.lib_deps}
412
+lib_ignore        = Arduino-L6470
413
+src_filter        = ${common.default_src_filter} +<src/HAL/HAL_STM32>
414
+monitor_speed     = 250000
415
+platform_packages = tool-stm32duino
416
+debug_tool        = stlink
417
+#upload_protocol   = stlink
418
+upload_protocol   = serial
419
+
420
+#
399 421
 # STM32F7 with STM32GENERIC
400 422
 #
401 423
 [env:STM32F7]
@@ -412,7 +434,7 @@ monitor_speed = 250000
412 434
 # ARMED (STM32)
413 435
 #
414 436
 [env:ARMED]
415
-platform      = ststm32@>=5.7.0
437
+platform      = ststm32
416 438
 framework     = arduino
417 439
 board         = armed_v1
418 440
 build_flags   = ${common.build_flags}
@@ -523,7 +545,7 @@ monitor_speed = 250000
523 545
 # Shield - https://github.com/jmz52/Hardware
524 546
 #
525 547
 [env:STM32F407VE_black]
526
-platform          = ststm32@>=5.7.0
548
+platform          = ststm32
527 549
 framework         = arduino
528 550
 platform_packages = framework-arduinoststm32@>=3.10700.191028
529 551
 board             = blackSTM32F407VET6
@@ -541,7 +563,7 @@ monitor_speed     = 250000
541 563
 # Bigtreetech SKR Pro (STM32F407ZGT6 ARM Cortex-M4)
542 564
 #
543 565
 [env:BIGTREE_SKR_PRO]
544
-platform          = ststm32@>=5.7.0
566
+platform          = ststm32
545 567
 framework         = arduino
546 568
 platform_packages = framework-arduinoststm32@>=3.10700.191028
547 569
 board             = BigTree_SKR_Pro
@@ -600,7 +622,7 @@ monitor_speed = 250000
600 622
 # Malyan M200 (STM32F103CB)
601 623
 #
602 624
 [env:STM32F103CB_malyan]
603
-platform    = ststm32@>=5.7.0
625
+platform    = ststm32
604 626
 framework   = arduino
605 627
 board       = malyanM200
606 628
 build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py -DMCU_STM32F103CB -D __STM32F1__=1 -std=c++1y -D MOTHERBOARD="BOARD_MALYAN_M200" -DSERIAL_USB -ffunction-sections -fdata-sections -Wl,--gc-sections

Chargement…
Annuler
Enregistrer