aboutsummaryrefslogtreecommitdiff
path: root/Marlin/src/pins/stm32f4/pins_STEVAL_3DP001V1.h
blob: 25679517c269211ac1050c5ac2f255aa5983a5a6 (plain) (blame)
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
/**
 * Marlin 3D Printer Firmware
 * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
 *
 * Based on Sprinter and grbl.
 * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 *
 */

// Source: https://github.com/stm32duino/Arduino_Core_STM32/blob/master/variants/ST3DP001_EVAL/variant.cpp

/**
 * HOW TO COMPILE
 *
 * PlatformIO - Use the STM32F401VE_STEVAL environment (or the "Auto Build Marlin" extension).
 *
 * Arduino - Tested with 1.8.10
 *      Install library per https://github.com/stm32duino/Arduino_Core_STM32
 *      Make the following selections under the TOOL menu in the Arduino IDE
 *          Board: "3D printer boards"
 *          Board part number: "STEVAL-3DP001V1"
 *          U(S)ART support: "Enabled (generic "Serial")"
 *          USB support (if available): "CDC (no generic "Serial")"
 *          Optimize: "Smallest (-Os default)"
 *          C Runtime Library: "newlib Nano (default)"
 */

#pragma once

#if NOT_TARGET(STM32F4)
  #error "Oops! Select an STM32F4 board in 'Tools > Board.'"
#endif

#ifndef MACHINE_NAME
  #define MACHINE_NAME "STEVAL-3DP001V1"
#endif

//
// Limit Switches
//
#define X_MIN_PIN                             39  // PD8   X_STOP
#define Y_MIN_PIN                             40  // PD9   Y_STOP
#define Z_MIN_PIN                             41  // PD10  Z_STOP

#define X_MAX_PIN                             44  // PD0   W_STOP
#define Y_MAX_PIN                             43  // PA8   V_STOP
#define Z_MAX_PIN                             42  // PD11  U_STOP

//
// Z Probe (when not Z_MIN_PIN)
//
//#ifndef Z_MIN_PROBE_PIN
//  #define Z_MIN_PROBE_PIN  16  // PA4
//#endif

//
// Filament runout
//
//#define FIL_RUNOUT_PIN                      53  // PA3    BED_THE

//
// Steppers
//

#define X_STEP_PIN                            61  // PE14    X_PWM
#define X_DIR_PIN                             62  // PE15    X_DIR
#define X_ENABLE_PIN                          60  // PE13    X_RES
#define X_CS_PIN                              16  // PA4     SPI_CS

#define Y_STEP_PIN                            64  // PB10    Y_PWM
#define Y_DIR_PIN                             65  // PE9     Y_DIR
#define Y_ENABLE_PIN                          63  // PE10    Y_RES
#define Y_CS_PIN                              16  // PA4     SPI_CS

#define Z_STEP_PIN                            67  // PC6     Z_PWM
#define Z_DIR_PIN                             68  // PC0     Z_DIR
#define Z_ENABLE_PIN                          66  // PC15    Z_RES
#define Z_CS_PIN                              16  // PA4     SPI_CS

#define E0_STEP_PIN                           71  // PD12    E1_PW
#define E0_DIR_PIN                            70  // PC13    E1_DIR
#define E0_ENABLE_PIN                         69  // PC14    E1_RE
#define E0_CS_PIN                             16  // PA4     SPI_CS

#define E1_STEP_PIN                           73  // PE5     E2_PWM
#define E1_DIR_PIN                            74  // PE6     E2_DIR
#define E1_ENABLE_PIN                         72  // PE4     E2_RESE
#define E1_CS_PIN                             16  // PA4     SPI_CS

#define E2_STEP_PIN                           77  // PB8     E3_PWM
#define E2_DIR_PIN                            76  // PE2     E3_DIR
#define E2_ENABLE_PIN                         75  // PE3     E3_RESE
#define E2_CS_PIN                             16  // PA4     SPI_CS

// needed to pass a sanity check
#define X2_CS_PIN                             16  // PA4     SPI_CS
#define Y2_CS_PIN                             16  // PA4     SPI_CS
#define Z2_CS_PIN                             16  // PA4     SPI_CS
#define Z3_CS_PIN                             16  // PA4     SPI_CS
#define E3_CS_PIN                             16  // PA4     SPI_CS
#define E4_CS_PIN                             16  // PA4     SPI_CS
#define E5_CS_PIN                             16  // PA4     SPI_CS

#if HAS_L64XX
  #define L6470_CHAIN_SCK_PIN                 17  // PA5
  #define L6470_CHAIN_MISO_PIN                18  // PA6
  #define L6470_CHAIN_MOSI_PIN                19  // PA7
  #define L6470_CHAIN_SS_PIN                  16  // PA4

  //#define SD_SCK_PIN       L6470_CHAIN_SCK_PIN
  //#define SD_MISO_PIN     L6470_CHAIN_MISO_PIN
  //#define SD_MOSI_PIN     L6470_CHAIN_MOSI_PIN
#else
  //#define SD_SCK_PIN                        13  // PB13    SPI_S
  //#define SD_MISO_PIN                       12  // PB14    SPI_M
  //#define SD_MOSI_PIN                       11  // PB15    SPI_M
#endif

/**
 * Macro to reset/enable L6474 stepper drivers
 *
 * IMPORTANT - To disable (bypass) L6474s, install the corresponding
 *             resistors (R11 - R17) and change the "V" to "0" for the
 *             corresponding pins here:
 */
#define ENABLE_RESET_L64XX_CHIPS(V)   do{ OUT_WRITE(X_ENABLE_PIN, V); \
                                          OUT_WRITE(Y_ENABLE_PIN, V); \
                                          OUT_WRITE(Z_ENABLE_PIN, V); \
                                          OUT_WRITE(E0_ENABLE_PIN,V); \
                                          OUT_WRITE(E1_ENABLE_PIN,V); \
                                          OUT_WRITE(E2_ENABLE_PIN,V); \
                                        }while(0)

//
// Temperature Sensors
//
#define TEMP_0_PIN                             3  // Analog input 3,  digital pin 54   PA0     E1_THERMISTOR
#define TEMP_1_PIN                             4  // Analog input 4,  digital pin 55   PA1     E2_THERMISTOR
#define TEMP_2_PIN                             5  // Analog input 5,  digital pin 56   PA2     E3_THERMISTOR
#define TEMP_BED_PIN                           0  // Analog input 0,  digital pin 51   PC2     BED_THERMISTOR_1
#define TEMP_BED_1_PIN                         1  // Analog input 1,  digital pin 52   PC3     BED_THERMISTOR_2
#define TEMP_BED_2_PIN                         2  // Analog input 2,  digital pin 53   PA3     BED_THERMISTOR_3

//
// Heaters / Fans
//
#define HEATER_0_PIN                          48  // PC7   E1_HEAT_PWM
#define HEATER_1_PIN                          49  // PB0   E2_HEAT_PWM
#define HEATER_2_PIN                          50  // PB1   E3_HEAT_PWM
#define HEATER_BED_PIN                        46  // PD14 (BED_HEAT_1 FET
#define HEATER_BED_1_PIN                      45  // PD13 (BED_HEAT_2 FET
#define HEATER_BED_2_PIN                      47  // PD15 (BED_HEAT_3 FET

#define FAN_PIN                               57  // PC4   E1_FAN   PWM pin, Part cooling fan FET
#define FAN1_PIN                              58  // PC5   E2_FAN   PWM pin, Extruder fan FET
#define FAN2_PIN                              59  // PE8   E3_FAN   PWM pin, Controller fan FET

#ifndef E0_AUTO_FAN_PIN
  #define E0_AUTO_FAN_PIN                     58  // FAN1_PIN
#endif

//
// Misc functions
//
#define SDSS                                  16  // PA4    SPI_CS
#define LED_PIN                               -1  // 9 // PE1 green LED   Heart beat
#define PS_ON_PIN                             -1
#define KILL_PIN                              -1
#define POWER_LOSS_PIN                        -1  // PWR_LOSS / nAC_FAULT

//
// LCD / Controller
//
//#define SD_DETECT_PIN                       66  // PA15    SD_CA
//#define BEEPER_PIN                          24  // PC9     SDIO_D1
//#define LCD_PINS_RS                         65  // PE9     Y_DIR
//#define LCD_PINS_ENABLE                     59  // PE8     E3_FAN
//#define LCD_PINS_D4                         10  // PB12    SPI_C
//#define LCD_PINS_D5                         13  // PB13    SPI_S
//#define LCD_PINS_D6                         12  // PB14    SPI_M
//#define LCD_PINS_D7                         11  // PB15    SPI_M
//#define BTN_EN1                             57  // PC4     E1_FAN
//#define BTN_EN2                             58  // PC5     E2_FAN
//#define BTN_ENC                             52  // PC3     BED_THE

//
// Extension pins
//
//#define EXT0_PIN                            49  // PB0     E2_HEAT
//#define EXT1_PIN                            50  // PB1     E3_HEAT
//#define EXT2_PIN                                // PB2    not used (tied to ground
//#define EXT3_PIN                            39  // PD8     X_STOP
//#define EXT4_PIN                            40  // PD9     Y_STOP
//#define EXT5_PIN                            41  // PD10    Z_STOP
//#define EXT6_PIN                            42  // PD11
//#define EXT7_PIN                            71  // PD12    E1_PW
//#define EXT8_PIN                            64  // PB10    Y_PWM

// WIFI
//  2   // PD3   CTS
//  3   // PD4   RTS
//  4   // PD5   TX
//  5   // PD6   RX
//  6   // PB5   WIFI_WAKEUP
//  7   // PE11  WIFI_RESET
//  8   // PE12  WIFI_BOOT

// I2C USER
// 14   // PB7   SDA
// 15   // PB6   SCL

// JTAG
// 20   // PA13  JTAG_TMS/SWDIO
// 21   // PA14  JTAG_TCK/SWCLK
// 22   // PB3   JTAG_TDO/SWO

//
// Onboard SD support
//
#define SDIO_D0_PIN                           23  // PC8   SDIO_D0
#define SDIO_D1_PIN                           24  // PC9   SDIO_D1
//#define SD_CARD_DETECT_PIN                  25  // PA15  SD_CARD_DETECT
#define SDIO_D2_PIN                           26  // PC10  SDIO_D2
#define SDIO_D3_PIN                           27  // PC11  SDIO_D3
#define SDIO_CK_PIN                           28  // PC12  SDIO_CK
#define SDIO_CMD_PIN                          29  // PD2   SDIO_CMD

#ifndef SDCARD_CONNECTION
  #define SDCARD_CONNECTION              ONBOARD
#endif

#if SD_CONNECTION_IS(ONBOARD)
  #define SDIO_SUPPORT                            // Use SDIO for onboard SD

  #ifndef SDIO_SUPPORT
    #define SOFTWARE_SPI                          // Use soft SPI for onboard SD
    #undef SDSS
    #define SDSS                     SDIO_D3_PIN
    #define SD_SCK_PIN               SDIO_CK_PIN
    #define SD_MISO_PIN              SDIO_D0_PIN
    #define SD_MOSI_PIN             SDIO_CMD_PIN
  #endif
#endif

// OTG
// 30   // PA11  OTG_DM
// 31   // PA12  OTG_DP

// USER_PINS
// 34   // PD7   USER3
// 35   // PB9   USER1
// 36   // PE0   USER2
// 37   // PB4   USER4

// USERKET
// 38   // PE7   USER_BUTTON

//  0   // PA9   TX
//  1   // PA10  RX

// IR/PROBE
// 32   // PD1   IR_OUT
// 33   // PC1   IR_ON

/**
 * Logical pin vs. port/pin cross reference
 *
 * PA0  54   //  E1_THERMISTOR       PA9   0   //  TX
 * PA1  55   //  E2_THERMISTOR       PA10  1   //  RX
 * PA2  56   //  E3_THERMISTOR       PD3   2   //  CTS
 * PA3  53   //  BED_THERMISTOR_3    PD4   3   //  RTS
 * PA4  16   //  SPI_CS              PD5   4   //  TX
 * PA5  17   //  SPI_SCK             PD6   5   //  RX
 * PA6  18   //  SPI_MISO            PB5   6   //  WIFI_WAKEUP
 * PA7  19   //  SPI_MOSI            PE11  7   //  WIFI_RESET
 * PA8  43   //  V_STOP              PE12  8   //  WIFI_BOOT
 * PA9   0   //  TX                  PE1   9   //  STATUS_LED
 * PA10  1   //  RX                  PB12 10   //  SPI_CS
 * PA11 30   //  OTG_DM              PB15 11   //  SPI_MOSI
 * PA12 31   //  OTG_DP              PB14 12   //  SPI_MISO
 * PA13 20   //  JTAG_TMS/SWDIO      PB13 13   //  SPI_SCK
 * PA14 21   //  JTAG_TCK/SWCLK      PB7  14   //  SDA
 * PA15 25   //  SD_CARD_DETECT      PB6  15   //  SCL
 * PB0  49   //  E2_HEAT_PWM         PA4  16   //  SPI_CS
 * PB1  50   //  E3_HEAT_PWM         PA5  17   //  SPI_SCK
 * PB3  22   //  JTAG_TDO/SWO        PA6  18   //  SPI_MISO
 * PB4  37   //  USER4               PA7  19   //  SPI_MOSI
 * PB5   6   //  WIFI_WAKEUP         PA13 20   //  JTAG_TMS/SWDIO
 * PB6  15   //  SCL                 PA14 21   //  JTAG_TCK/SWCLK
 * PB7  14   //  SDA                 PB3  22   //  JTAG_TDO/SWO
 * PB8  77   //  E3_PWM              PC8  23   //  SDIO_D0
 * PB9  35   //  USER1               PC9  24   //  SDIO_D1
 * PB10 64   //  Y_PWM               PA15 25   //  SD_CARD_DETECT
 * PB12 10   //  SPI_CS              PC10 26   //  SDIO_D2
 * PB13 13   //  SPI_SCK             PC11 27   //  SDIO_D3
 * PB14 12   //  SPI_MISO            PC12 28   //  SDIO_CK
 * PB15 11   //  SPI_MOSI            PD2  29   //  SDIO_CMD
 * PC0  68   //  Z_DIR               PA11 30   //  OTG_DM
 * PC1  33   //  IR_ON               PA12 31   //  OTG_DP
 * PC2  51   //  BED_THERMISTOR_1    PD1  32   //  IR_OUT
 * PC3  52   //  BED_THERMISTOR_2    PC1  33   //  IR_ON
 * PC4  57   //  E1_FAN              PD7  34   //  USER3
 * PC5  58   //  E2_FAN              PB9  35   //  USER1
 * PC6  67   //  Z_PWM               PE0  36   //  USER2
 * PC7  48   //  E1_HEAT_PWM         PB4  37   //  USER4
 * PC8  23   //  SDIO_D0             PE7  38   //  USER_BUTTON
 * PC9  24   //  SDIO_D1             PD8  39   //  X_STOP
 * PC10 26   //  SDIO_D2             PD9  40   //  Y_STOP
 * PC11 27   //  SDIO_D3             PD10 41   //  Z_STOP
 * PC12 28   //  SDIO_CK             PD11 42   //  U_STOP
 * PC13 70   //  E1_DIR              PA8  43   //  V_STOP
 * PC14 69   //  E1_RESET            PD0  44   //  W_STOP
 * PC15 66   //  Z_RESET             PD13 45   //  BED_HEAT_2
 * PD0  44   //  W_STOP              PD14 46   //  BED_HEAT_1
 * PD1  32   //  IR_OUT              PD15 47   //  BED_HEAT_3
 * PD2  29   //  SDIO_CMD            PC7  48   //  E1_HEAT_PWM
 * PD3   2   //  CTS                 PB0  49   //  E2_HEAT_PWM
 * PD4   3   //  RTS                 PB1  50   //  E3_HEAT_PWM
 * PD5   4   //  TX                  PC2  51   //  BED_THERMISTOR_1
 * PD6   5   //  RX                  PC3  52   //  BED_THERMISTOR_2
 * PD7  34   //  USER3               PA3  53   //  BED_THERMISTOR_3
 * PD8  39   //  X_STOP              PA0  54   //  E1_THERMISTOR
 * PD9  40   //  Y_STOP              PA1  55   //  E2_THERMISTOR
 * PD10 41   //  Z_STOP              PA2  56   //  E3_THERMISTOR
 * PD11 42   //  U_STOP              PC4  57   //  E1_FAN
 * PD12 71   //  E1_PWM              PC5  58   //  E2_FAN
 * PD13 45   //  BED_HEAT_2          PE8  59   //  E3_FAN
 * PD14 46   //  BED_HEAT_1          PE13 60   //  X_RESET
 * PD15 47   //  BED_HEAT_3          PE14 61   //  X_PWM
 * PE0  36   //  USER2               PE15 62   //  X_DIR
 * PE1   9   //  STATUS_LED          PE10 63   //  Y_RESET
 * PE2  76   //  E3_DIR              PB10 64   //  Y_PWM
 * PE3  75   //  E3_RESET            PE9  65   //  Y_DIR
 * PE4  72   //  E2_RESET            PC15 66   //  Z_RESET
 * PE5  73   //  E2_PWM              PC6  67   //  Z_PWM
 * PE6  74   //  E2_DIR              PC0  68   //  Z_DIR
 * PE7  38   //  USER_BUTTON         PC14 69   //  E1_RESET
 * PE8  59   //  E3_FAN              PC13 70   //  E1_DIR
 * PE9  65   //  Y_DIR               PD12 71   //  E1_PWM
 * PE10 63   //  Y_RESET             PE4  72   //  E2_RESET
 * PE11  7   //  WIFI_RESET          PE5  73   //  E2_PWM
 * PE12  8   //  WIFI_BOOT           PE6  74   //  E2_DIR
 * PE13 60   //  X_RESET             PE3  75   //  E3_RESET
 * PE14 61   //  X_PWM               PE2  76   //  E3_DIR
 * PE15 62   //  X_DIR               PB8  77   //  E3_PWM
 */