makerbase-mks / MKS-RUMBA32

MKS RUMBA32 is modified in Aus3D RUMBA32 version and a powerful 32-bit 3D printer control board with STM32F446VET6 , The main frequency is 180MHZ. Support Marlin2.0 , support MKS LCD12864B/MINI12864/2004/12864, support MKS TFT24/28/32/35/70 Screens. The motherboard integrates 6 AXIS interface, integrates SPI / UART interface…
16 stars 15 forks source link

No MKS-MINI12864-V3 support! #40

Open alex18881 opened 2 years ago

alex18881 commented 2 years ago

Hi. I've recently bought one MKS-MINI12864-V3 LCD and still can't find where are pins for it in MKS Rumba32.

So far I figured out that the following code will make this LCD to work almost fine:

pins_RUMBA32_common.h:

/**
 * 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

/**
 * Common pin assignments for all RUMBA32 boards
 */

#include "env_validate.h"

#if HOTENDS > 3 || E_STEPPERS > 3
  #error "RUMBA32 boards support up to 3 hotends / E-steppers."
#endif

#define DEFAULT_MACHINE_NAME BOARD_INFO_NAME

// Use soft PWM for fans - PWM is not working properly when paired with STM32 Arduino Core v1.7.0
// This can be removed when Core version is updated and PWM behaviour is fixed.
#define FAN_SOFT_PWM

/**
 *                 ------                                     ------                
 *  (BEEPER) PE8  | 1  2 | PE7 (BTN_ENC)          (MISO) PA6 | 1  2 | PA5 (SD_SCK) 
 *  (LCD_EN) PE9  | 3  4 | PE10 (LCD_RS)       (BTN_EN1) PB2 | 3  4 | PA2 (SD_SS)  
 *  (LCD_D4) PE12 | 5  6   PE13 (LCD_D5)      (BTN_EN2)  PB1 | 5  6   PA7 (SD_MOSI)
 *  (LCD_D6) PE14 | 7  8 | PE15 (LCD_D7)     (SD_DETECT) PB0 | 7  8 | RESET         
 *           GND  | 9  10| 5V                            GND | 9  10| PC5 (NC)            
 *                 ------                                     ------                
 *                 EXP1                                        EXP2                 
*/

#define EXP1_08_PIN PE15
#define EXP1_07_PIN PE14
#define EXP1_06_PIN PE13
#define EXP1_05_PIN PE12
#define EXP1_04_PIN PE10
#define EXP1_03_PIN PE9
#define EXP1_02_PIN PE7
#define EXP1_01_PIN PE8

#define EXP2_10_PIN PC5 // KILL
#define EXP2_08_PIN NRST // RESET
#define EXP2_07_PIN PB0
#define EXP2_06_PIN PA7
#define EXP2_05_PIN PB1
#define EXP2_04_PIN PA2
#define EXP2_03_PIN PB2
#define EXP2_02_PIN PA5
#define EXP2_01_PIN PA6

//
// Configure Timers
// TIM6 is used for TONE
// TIM7 is used for SERVO
// TIMER_SERIAL defaults to TIM7 and must be overridden in the platformio.h file if SERVO will also be used.
//              This will be difficult to solve from the Arduino IDE, without modifying the RUMBA32 variant
//              included with the STM32 framework.

#define STEP_TIMER                            10
#define TEMP_TIMER                            14

//
// Limit Switches
//
#define X_MIN_PIN                           PB12
#define X_MAX_PIN                           PB13
#define Y_MIN_PIN                           PB15
#define Y_MAX_PIN                           PD8
#define Z_MIN_PIN                           PD9
#define Z_MAX_PIN                           PD10

//
// Steppers
//
#define X_STEP_PIN                          PA0
#define X_DIR_PIN                           PC15
#define X_ENABLE_PIN                        PC11
#define X_CS_PIN                            PC14

#define Y_STEP_PIN                          PE5
#define Y_DIR_PIN                           PE6
#define Y_ENABLE_PIN                        PE3
#define Y_CS_PIN                            PE4

#define Z_STEP_PIN                          PE1
#define Z_DIR_PIN                           PE2
#define Z_ENABLE_PIN                        PB7
#define Z_CS_PIN                            PE0

#define E0_STEP_PIN                         PB5
#define E0_DIR_PIN                          PB6
#define E0_ENABLE_PIN                       PC12
#define E0_CS_PIN                           PC13

#define E1_STEP_PIN                         PD6
#define E1_DIR_PIN                          PD7
#define E1_ENABLE_PIN                       PD4
#define E1_CS_PIN                           PD5

#define E2_STEP_PIN                         PD2
#define E2_DIR_PIN                          PD3
#define E2_ENABLE_PIN                       PD0
#define E2_CS_PIN                           PD1

#if ENABLED(TMC_USE_SW_SPI)
  #ifndef TMC_SW_MOSI
    #define TMC_SW_MOSI                     EXP2_06_PIN
  #endif
  #ifndef TMC_SW_MISO
    #define TMC_SW_MISO                     EXP2_01_PIN
  #endif
  #ifndef TMC_SW_SCK
    #define TMC_SW_SCK                      EXP2_02_PIN
  #endif
#endif

//
// Temperature Sensors
//
#define TEMP_0_PIN                          PC4
#define TEMP_1_PIN                          PC3
#define TEMP_2_PIN                          PC2
#define TEMP_3_PIN                          PC1
#define TEMP_BED_PIN                        PC0

//
// Heaters / Fans
//
#define HEATER_0_PIN                        PC6
#define HEATER_1_PIN                        PC7
#define HEATER_2_PIN                        PC8
#define HEATER_BED_PIN                      PA1

#define FAN_PIN                             PC9
#define FAN1_PIN                            PA8

//
// SPI
//
#define SD_SCK_PIN                          EXP2_02_PIN
#define SD_MISO_PIN                         EXP2_01_PIN
#define SD_MOSI_PIN                         EXP2_06_PIN

//
// Misc. Functions
//
#define LED_PIN                             PB14
#define PS_ON_PIN                           PE11
#define KILL_PIN                            EXP2_10_PIN

#define SDSS                                EXP2_04_PIN
#define SD_DETECT_PIN                       EXP2_07_PIN
#define BEEPER_PIN                          EXP1_01_PIN

//
// LCD / Controller
//
#if HAS_WIRED_LCD

  #define BTN_EN1                           EXP2_03_PIN
  #define BTN_EN2                           EXP2_05_PIN
  #define BTN_ENC                           EXP1_02_PIN

  #define LCD_PINS_RS                       EXP1_04_PIN
  #define LCD_PINS_ENABLE                   EXP1_03_PIN
  #define LCD_PINS_D4                       EXP1_05_PIN

  #if ENABLED(MKS_MINI_12864)
    #define DOGLCD_CS                       EXP1_06_PIN
    #define DOGLCD_A0                       EXP1_07_PIN

  #elif ENABLED(MKS_MINI_12864_V3)
    #define DOGLCD_CS                EXP1_03_PIN
    #define DOGLCD_A0                EXP1_04_PIN
    #define LCD_PINS_DC                DOGLCD_A0
    #define LCD_BACKLIGHT_PIN               -1
    #define LCD_RESET_PIN            EXP1_05_PIN
    #define NEOPIXEL_PIN             EXP1_06_PIN
    #define DOGLCD_MOSI              EXP2_06_PIN
    #define DOGLCD_SCK               EXP2_02_PIN
    #define FORCE_SOFT_SPI
    #define SOFTWARE_SPI
    //#define LCD_SCREEN_ROT_180
  #endif

  #if IS_ULTIPANEL
    #define LCD_PINS_D5                     EXP1_06_PIN
    #define LCD_PINS_D6                     EXP1_07_PIN
    #define LCD_PINS_D7                     EXP1_08_PIN

    #if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
      #define BTN_ENC_EN             LCD_PINS_D7  // Detect the presence of the encoder
    #endif
  #endif

#endif // HAS_WIRED_LCD

// Alter timing for graphical display
#if ENABLED(U8GLIB_ST7920)
  #define BOARD_ST7920_DELAY_1                96
  #define BOARD_ST7920_DELAY_2                48
  #define BOARD_ST7920_DELAY_3               640
#endif

The only thing I can't make to work is the SD support. It detects (not always) card is inserted or removed but when I insert it in most of the times nothing happens and sometimes it says "SD Init failed". In the other hand my old reprap discount 2004 LCD with SD detects it and I can easily print from SD. Both LCDs are connected to the same Rumba32 with the same Marlin version. the only difference is LCD definitions in configuration.h