Browse Source

✨ Index Pick-and-Place board Rev.3 (#22647)

Co-authored-by: Gonçalo Pereira <goncalo_pereira@outlook.pt>
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
Justin Nesselrotte 3 years ago
parent
commit
76fb131f14

+ 1 - 0
.github/workflows/test-builds.yml

@@ -97,6 +97,7 @@ jobs:
         - REMRAM_V1
         - BTT_SKR_SE_BX
         - chitu_f103
+        - Index_Mobo_Rev03
 
         # Put lengthy tests last
 

+ 1 - 0
Marlin/src/core/boards.h

@@ -395,6 +395,7 @@
 #define BOARD_ANET_ET4P               4230  // ANET ET4P V1.x (STM32F407VGT6)
 #define BOARD_FYSETC_CHEETAH_V20      4231  // FYSETC Cheetah V2.0
 #define BOARD_TH3D_EZBOARD_LITE_V2    4232  // TH3D EZBoard Lite v2.0
+#define BOARD_INDEX_REV03             4233  // Index PnP Controller REV03 (STM32F407VET6/VGT6)
 
 //
 // ARM Cortex M7

+ 2 - 0
Marlin/src/pins/pins.h

@@ -645,6 +645,8 @@
   #include "stm32f4/pins_MKS_MONSTER8.h"        // STM32F4                                env:mks_monster8 env:mks_monster8_usb_flash_drive env:mks_monster8_usb_flash_drive_msc
 #elif MB(TH3D_EZBOARD_LITE_V2)
   #include "stm32f4/pins_TH3D_EZBOARD_LITE_V2.h" // STM32F4                               env:TH3D_EZBoard_Lite_V2
+#elif MB(INDEX_REV03)
+  #include "stm32f4/pins_INDEX_REV03.h"         // STM32F4                                env:Index_Mobo_Rev03
 
 //
 // ARM Cortex M7

+ 157 - 0
Marlin/src/pins/stm32f4/pins_INDEX_REV03.h

@@ -0,0 +1,157 @@
+/**
+ * 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/>.
+ *
+ */
+#pragma once
+
+/**
+ * STM32F407VET6 on Index PnP Mobo Rev03
+ * Website - https://indexmachines.io/
+ */
+
+#define ALLOW_STM32DUINO
+#include "env_validate.h"
+
+#define BOARD_INFO_NAME      "Index Mobo Rev03"
+#define DEFAULT_MACHINE_NAME "Index Pick and Place"
+
+/**
+ * By default, the extra stepper motor configuration is:
+ * I = Left Head
+ * J = Right Head
+ * K = Auxiliary (Conveyor belt)
+ */
+
+#define SRAM_EEPROM_EMULATION
+#define MARLIN_EEPROM_SIZE                0x2000  // 8KB
+
+//
+// Servos
+//
+#define SERVO0_PIN                          PB10
+#define SERVO1_PIN                          PB11
+
+//
+// Limit Switches
+//
+#define X_STOP_PIN                          PC6
+#define Y_STOP_PIN                          PD15
+#define Z_STOP_PIN                          PD14
+
+// None of these require limit switches by default, so we leave these commented
+// here for your reference.
+// #define I_MIN_PIN                           PA8
+// #define I_MAX_PIN                           PA8
+// #define J_MIN_PIN                           PD13
+// #define J_MAX_PIN                           PD13
+// #define K_MIN_PIN                           PC9
+// #define K_MAX_PIN                           PC9
+
+//
+// Steppers
+//
+#define X_STEP_PIN                          PB15
+#define X_DIR_PIN                           PB14
+#define X_ENABLE_PIN                        PD9
+#define X_SERIAL_TX_PIN                     PD8
+#define X_SERIAL_RX_PIN                     PD8
+
+#define Y_STEP_PIN                          PE15
+#define Y_DIR_PIN                           PE14
+#define Y_ENABLE_PIN                        PB13
+#define Y_SERIAL_TX_PIN                     PB12
+#define Y_SERIAL_RX_PIN                     PB12
+
+#define Z_STEP_PIN                          PE7
+#define Z_DIR_PIN                           PB1
+#define Z_ENABLE_PIN                        PE9
+#define Z_SERIAL_TX_PIN                     PE8
+#define Z_SERIAL_RX_PIN                     PE8
+
+#define I_STEP_PIN                          PC4
+#define I_DIR_PIN                           PA4
+#define I_ENABLE_PIN                        PB0
+#define I_SERIAL_TX_PIN                     PC5
+#define I_SERIAL_RX_PIN                     PC5
+
+#define J_STEP_PIN                          PE11
+#define J_DIR_PIN                           PE10
+#define J_ENABLE_PIN                        PE13
+#define J_SERIAL_TX_PIN                     PE12
+#define J_SERIAL_RX_PIN                     PE12
+#define K_SERIAL_TX_PIN                     PA2
+#define K_SERIAL_RX_PIN                     PA2
+
+#define K_STEP_PIN                          PD6
+#define K_DIR_PIN                           PD7
+#define K_ENABLE_PIN                        PA3
+
+// Reduce baud rate to improve software serial reliability
+#define TMC_BAUD_RATE                      19200
+
+// Not required for this board. Fails to compile otherwise.
+// PD0 is not connected on this board.
+#define TEMP_0_PIN                          PD0
+
+// General use mosfets, useful for things like pumps and solenoids
+#define FAN_PIN                             PE2
+#define FAN1_PIN                            PE3
+#define FAN2_PIN                            PE4
+#define FAN3_PIN                            PE5
+
+// Neopixel Rings
+#define NEOPIXEL_PIN                        PC7
+#define NEOPIXEL2_PIN                       PC8
+
+// SPI
+#define MISO_PIN                            PB4
+#define MOSI_PIN                            PB5
+#define SCK_PIN                             PB3
+
+// I2C
+#define I2C_SDA_PIN                         PB7
+#define I2C_SCL_PIN                         PB6
+
+/**
+ * The index mobo rev03 has 3 aux ports. We define them here so they may be used
+ * in other places and to make sure someone doesn't have to go look up the pinout
+ * in the board files. Each 12 pin aux port has this pinout:
+ *
+ * VDC    1   2    GND
+ * 3.3V   3   4    SCL  (I2C_SCL_PIN)
+ * PWM1   5   6    SDA  (I2C_SDA_PIN)
+ * PWM2   7   8    CIPO (MISO_PIN)
+ * A1     9  10    COPI (MOSI_PIN)
+ * A2     11 12    SCK  (SCK_PIN)
+ */
+#define INDEX_AUX1_PWM1                     PA15
+#define INDEX_AUX1_PWM2                     PA5
+#define INDEX_AUX1_A1                       PC0
+#define INDEX_AUX1_A2                       PC1
+
+#define INDEX_AUX2_PWM1                     PA6
+#define INDEX_AUX2_PWM2                     PA7
+#define INDEX_AUX2_A1                       PC2
+#define INDEX_AUX2_A2                       PC3
+
+#define INDEX_AUX3_PWM1                     PB8
+#define INDEX_AUX3_PWM2                     PB9
+#define INDEX_AUX3_A1                       PA0
+#define INDEX_AUX3_A2                       PA1

+ 51 - 0
buildroot/share/PlatformIO/boards/marlin_index_mobo_rev03.json

@@ -0,0 +1,51 @@
+{
+  "build": {
+    "core": "stm32",
+    "cpu": "cortex-m4",
+    "extra_flags": "-DSTM32F407xx",
+    "f_cpu": "168000000L",
+    "hwids": [
+      [
+        "0x1EAF",
+        "0x0003"
+      ],
+      [
+        "0x0483",
+        "0x3748"
+      ],
+      [
+        "0x0483",
+        "0xdf11"
+      ]
+    ],
+    "mcu": "stm32f407vet6",
+    "variant": "MARLIN_F407VE"
+  },
+  "debug": {
+    "jlink_device": "STM32F407VE",
+    "openocd_target": "stm32f4x",
+    "svd_path": "STM32F40x.svd"
+  },
+  "frameworks": [
+    "arduino",
+    "stm32cube"
+  ],
+  "name": "STM32F407VE (192k RAM. 512k Flash)",
+  "upload": {
+    "disable_flushing": false,
+    "maximum_ram_size": 131072,
+    "maximum_size": 524288,
+    "protocol": "stlink",
+    "protocols": [
+      "stlink",
+      "dfu",
+      "jlink",
+      "blackmagic"
+    ],
+    "require_upload_port": true,
+    "use_1200bps_touch": false,
+    "wait_for_upload_port": false
+  },
+  "url": "https://www.st.com/en/microcontrollers-microprocessors/stm32f407ve.html",
+  "vendor": "Generic"
+}

+ 13 - 0
buildroot/tests/Index_Mobo_Rev03

@@ -0,0 +1,13 @@
+#!/usr/bin/env bash
+#
+# Build tests for Index_Mobo_Rev03
+#
+
+# exit on first failure
+set -e
+
+use_example_configs Index/REV_03
+exec_test $1 $2 "Index REV03 Pick and Place" "$3"
+
+# cleanup
+restore_configs

+ 12 - 0
ini/stm32f4.ini

@@ -99,6 +99,18 @@ board             = marlin_blackSTM32F407VET6
 build_flags       = ${stm32_variant.build_flags}
                     -DUSBD_USE_CDC_COMPOSITE -DUSE_USB_FS
 
+#
+# STM32F407VET6 Index Mobo Rev 03
+#
+[env:Index_Mobo_Rev03]
+platform          = ${common_stm32.platform}
+extends           = stm32_variant
+board             = marlin_index_mobo_rev03
+build_flags       = ${stm32_variant.build_flags}
+  -DARDUINO_BLACK_F407VE
+  -DUSBD_USE_CDC_COMPOSITE -DUSE_USB_FS
+extra_scripts     = ${stm32_variant.extra_scripts}
+
 #
 # Anet ET4-MB_V1.x/ET4P-MB_V1.x (STM32F407VGT6 ARM Cortex-M4)
 # For use with with davidtgbe's OpenBLT bootloader https://github.com/davidtgbe/openblt/releases