Support FYSETC_MINI_12864 on Re-ARM, RAMPS_FD, MKS SBASE (#13717)
This commit is contained in:
		@@ -65,10 +65,76 @@
 | 
				
			|||||||
#undef SPI_SPEED
 | 
					#undef SPI_SPEED
 | 
				
			||||||
#define SPI_SPEED 2  // About 2 MHz
 | 
					#define SPI_SPEED 2  // About 2 MHz
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <algorithm>
 | 
				
			||||||
 | 
					#include <LPC17xx.h>
 | 
				
			||||||
 | 
					#include <gpio.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <Arduino.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					uint8_t swSpiTransfer_mode_0(uint8_t b, const uint8_t spi_speed, const pin_t sck_pin, const pin_t miso_pin, const pin_t mosi_pin ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  for (uint8_t i = 0; i < 8; i++) {
 | 
				
			||||||
 | 
					    if (spi_speed == 0) {
 | 
				
			||||||
 | 
					      gpio_set(mosi_pin, !!(b & 0x80));
 | 
				
			||||||
 | 
					      gpio_set(sck_pin, HIGH);
 | 
				
			||||||
 | 
					      b <<= 1;
 | 
				
			||||||
 | 
					      if (miso_pin >= 0 && gpio_get(miso_pin)) b |= 1;
 | 
				
			||||||
 | 
					      gpio_set(sck_pin, LOW);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else {
 | 
				
			||||||
 | 
					      const uint8_t state = (b & 0x80) ? HIGH : LOW;
 | 
				
			||||||
 | 
					      for (uint8_t j = 0; j < spi_speed; j++)
 | 
				
			||||||
 | 
					        gpio_set(mosi_pin, state);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      for (uint8_t j = 0; j < spi_speed + (miso_pin >= 0 ? 0 : 1); j++)
 | 
				
			||||||
 | 
					        gpio_set(sck_pin, HIGH);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      b <<= 1;
 | 
				
			||||||
 | 
					      if (miso_pin >= 0 && gpio_get(miso_pin)) b |= 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      for (uint8_t j = 0; j < spi_speed; j++)
 | 
				
			||||||
 | 
					        gpio_set(sck_pin, LOW);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return b;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					uint8_t swSpiTransfer_mode_3(uint8_t b, const uint8_t spi_speed, const pin_t sck_pin, const pin_t miso_pin, const pin_t mosi_pin ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  for (uint8_t i = 0; i < 8; i++) {
 | 
				
			||||||
 | 
					    const uint8_t state = (b & 0x80) ? HIGH : LOW;
 | 
				
			||||||
 | 
					    if (spi_speed == 0) {
 | 
				
			||||||
 | 
					      gpio_set(sck_pin, LOW);
 | 
				
			||||||
 | 
					      gpio_set(mosi_pin, state);
 | 
				
			||||||
 | 
					      gpio_set(mosi_pin, state);  // need some setup time
 | 
				
			||||||
 | 
					      gpio_set(sck_pin, HIGH);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else {
 | 
				
			||||||
 | 
					      for (uint8_t j = 0; j < spi_speed + (miso_pin >= 0 ? 0 : 1); j++)
 | 
				
			||||||
 | 
					        gpio_set(sck_pin, LOW);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      for (uint8_t j = 0; j < spi_speed; j++)
 | 
				
			||||||
 | 
					        gpio_set(mosi_pin, state);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      for (uint8_t j = 0; j < spi_speed; j++)
 | 
				
			||||||
 | 
					        gpio_set(sck_pin, HIGH);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    b <<= 1;
 | 
				
			||||||
 | 
					    if (miso_pin >= 0 && gpio_get(miso_pin)) b |= 1;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return b;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static uint8_t SPI_speed = 0;
 | 
					static uint8_t SPI_speed = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void u8g_sw_spi_HAL_LPC1768_shift_out(uint8_t dataPin, uint8_t clockPin, uint8_t val) {
 | 
					static void u8g_sw_spi_HAL_LPC1768_shift_out(uint8_t dataPin, uint8_t clockPin, uint8_t val) {
 | 
				
			||||||
  swSpiTransfer(val, SPI_speed, clockPin, -1, dataPin);
 | 
					  #if ENABLED(FYSETC_MINI_12864)
 | 
				
			||||||
 | 
					    swSpiTransfer_mode_3(val, SPI_speed, clockPin, -1, dataPin);
 | 
				
			||||||
 | 
					  #else
 | 
				
			||||||
 | 
					    swSpiTransfer_mode_0(val, SPI_speed, clockPin, -1, dataPin);
 | 
				
			||||||
 | 
					  #endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
uint8_t u8g_com_HAL_LPC1768_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) {
 | 
					uint8_t u8g_com_HAL_LPC1768_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -143,6 +143,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  #define DOGLCD
 | 
					  #define DOGLCD
 | 
				
			||||||
  #define ULTIPANEL
 | 
					  #define ULTIPANEL
 | 
				
			||||||
 | 
					  #define LCD_CONTRAST_MIN 0
 | 
				
			||||||
 | 
					  #define LCD_CONTRAST_MAX 255
 | 
				
			||||||
  #define DEFAULT_LCD_CONTRAST 255
 | 
					  #define DEFAULT_LCD_CONTRAST 255
 | 
				
			||||||
  #define LED_COLORS_REDUCE_GREEN
 | 
					  #define LED_COLORS_REDUCE_GREEN
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -112,7 +112,11 @@
 | 
				
			|||||||
  //#define U8G_CLASS U8GLIB_MINI12864
 | 
					  //#define U8G_CLASS U8GLIB_MINI12864
 | 
				
			||||||
  //#define U8G_PARAM DOGLCD_CS, DOGLCD_A0                            // 8 stripes
 | 
					  //#define U8G_PARAM DOGLCD_CS, DOGLCD_A0                            // 8 stripes
 | 
				
			||||||
  #define U8G_CLASS U8GLIB_MINI12864_2X
 | 
					  #define U8G_CLASS U8GLIB_MINI12864_2X
 | 
				
			||||||
  #define U8G_PARAM DOGLCD_CS, DOGLCD_A0                              // 4 stripes
 | 
					  #if EITHER(FYSETC_MINI_12864, TARGET_LPC1768)
 | 
				
			||||||
 | 
					    #define U8G_PARAM DOGLCD_SCK, DOGLCD_MOSI, DOGLCD_CS, DOGLCD_A0   // 4 stripes SW-SPI
 | 
				
			||||||
 | 
					  #else
 | 
				
			||||||
 | 
					    #define U8G_PARAM DOGLCD_CS, DOGLCD_A0                            // 4 stripes HW-SPI
 | 
				
			||||||
 | 
					  #endif
 | 
				
			||||||
#elif ENABLED(U8GLIB_SH1106_EINSTART)
 | 
					#elif ENABLED(U8GLIB_SH1106_EINSTART)
 | 
				
			||||||
  // Connected via motherboard header
 | 
					  // Connected via motherboard header
 | 
				
			||||||
  #define U8G_CLASS U8GLIB_SH1106_128X64
 | 
					  #define U8G_CLASS U8GLIB_SH1106_128X64
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -253,6 +253,41 @@
 | 
				
			|||||||
    #define DOGLCD_SCK     SCK_PIN
 | 
					    #define DOGLCD_SCK     SCK_PIN
 | 
				
			||||||
    #define DOGLCD_MOSI    MOSI_PIN
 | 
					    #define DOGLCD_MOSI    MOSI_PIN
 | 
				
			||||||
  #endif
 | 
					  #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  #if ENABLED(FYSETC_MINI_12864)
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * The Fysetc display can NOT use the SCK and MOSI pins on EXP2, so a
 | 
				
			||||||
 | 
					     * special cable is needed to go between EXP2 on the FYSETC and the
 | 
				
			||||||
 | 
					     * controller board's EXP2 and J8. It also means that a software SPI
 | 
				
			||||||
 | 
					     * is needed to drive those pins.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * The Fysetc requires mode 3 SPI interface.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * Pins 6, 7 & 8 on EXP2 are no connects. That means a second special
 | 
				
			||||||
 | 
					     * cable will be needed if the RGB LEDs are to be active.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    #define DOGLCD_CS      LCD_PINS_ENABLE // EXP1.3  (LCD_EN on Fysetc schematic)
 | 
				
			||||||
 | 
					    #define DOGLCD_A0      LCD_PINS_RS     // EXP1.4  (LCD_A0 on Fysetc schematic)
 | 
				
			||||||
 | 
					    #define DOGLCD_SCK     P2_11           // J8-5  (SCK on Fysetc schematic)
 | 
				
			||||||
 | 
					    #define DOGLCD_MOSI    P4_28           // J8-6  (MOSI on Fysetc schematic)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #define RGB_LED
 | 
				
			||||||
 | 
					    //#define RGBW_LED
 | 
				
			||||||
 | 
					    #if EITHER(RGB_LED, RGBW_LED)
 | 
				
			||||||
 | 
					      #define RGB_LED_R_PIN P2_12          // J8-4  (LCD_D6 on Fysetc schematic)
 | 
				
			||||||
 | 
					      #define RGB_LED_G_PIN P1_23          // J8-3  (LCD_D5 on Fysetc schematic)
 | 
				
			||||||
 | 
					      #define RGB_LED_B_PIN P1_22          // J8-2  (LCD_D7 on Fysetc schematic)
 | 
				
			||||||
 | 
					      //#define RGB_LED_W_PIN -1
 | 
				
			||||||
 | 
					    #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  #elif ENABLED(MINIPANEL)
 | 
				
			||||||
 | 
					    // GLCD features
 | 
				
			||||||
 | 
					    // Uncomment screen orientation
 | 
				
			||||||
 | 
					    //#define LCD_SCREEN_ROT_90
 | 
				
			||||||
 | 
					    //#define LCD_SCREEN_ROT_180
 | 
				
			||||||
 | 
					    //#define LCD_SCREEN_ROT_270
 | 
				
			||||||
 | 
					  #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -156,7 +156,10 @@
 | 
				
			|||||||
    #define LCD_PINS_D7    29
 | 
					    #define LCD_PINS_D7    29
 | 
				
			||||||
  #endif
 | 
					  #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  #if ENABLED(MINIPANEL)
 | 
					  #if ENABLED(FYSETC_MINI_12864)
 | 
				
			||||||
 | 
					    #define DOGLCD_CS      LCD_PINS_ENABLE
 | 
				
			||||||
 | 
					    #define DOGLCD_A0      LCD_PINS_RS
 | 
				
			||||||
 | 
					  #elif ENABLED(MINIPANEL)
 | 
				
			||||||
    #define DOGLCD_CS      25
 | 
					    #define DOGLCD_CS      25
 | 
				
			||||||
    #define DOGLCD_A0      27
 | 
					    #define DOGLCD_A0      27
 | 
				
			||||||
  #endif
 | 
					  #endif
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -269,11 +269,21 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#elif ENABLED(ULTRA_LCD)
 | 
					#elif ENABLED(ULTRA_LCD)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  //#define SCK_PIN        P0_15   // (52)  system defined J3-9 & AUX-3
 | 
				
			||||||
 | 
					  //#define MISO_PIN       P0_17   // (50)  system defined J3-10 & AUX-3
 | 
				
			||||||
 | 
					  //#define MOSI_PIN       P0_18   // (51)  system defined J3-10 & AUX-3
 | 
				
			||||||
 | 
					  //#define SS_PIN         P1_23   // (53)  system defined J3-5 & AUX-3 (Sometimes called SDSS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  #if ENABLED(FYSETC_MINI_12864)
 | 
				
			||||||
 | 
					    #define BEEPER_PIN     P1_01
 | 
				
			||||||
 | 
					    #define BTN_ENC        P1_04
 | 
				
			||||||
 | 
					  #else
 | 
				
			||||||
    #define BEEPER_PIN     P1_30   // (37) not 5V tolerant
 | 
					    #define BEEPER_PIN     P1_30   // (37) not 5V tolerant
 | 
				
			||||||
 | 
					    #define BTN_ENC        P2_11   // (35) J3-3 & AUX-4
 | 
				
			||||||
 | 
					  #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  #define BTN_EN1          P3_26   // (31) J3-2 & AUX-4
 | 
					  #define BTN_EN1          P3_26   // (31) J3-2 & AUX-4
 | 
				
			||||||
  #define BTN_EN2          P3_25   // (33) J3-4 & AUX-4
 | 
					  #define BTN_EN2          P3_25   // (33) J3-4 & AUX-4
 | 
				
			||||||
  #define BTN_ENC          P2_11   // (35) J3-3 & AUX-4
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  #define SD_DETECT_PIN    P1_31   // (49) J3-1 & AUX-3 (NOT 5V tolerant)
 | 
					  #define SD_DETECT_PIN    P1_31   // (49) J3-1 & AUX-3 (NOT 5V tolerant)
 | 
				
			||||||
  #define KILL_PIN         P1_22   // (41) J5-4 & AUX-4
 | 
					  #define KILL_PIN         P1_22   // (41) J5-4 & AUX-4
 | 
				
			||||||
@@ -296,13 +306,6 @@
 | 
				
			|||||||
  #if ANY(VIKI2, miniVIKI)
 | 
					  #if ANY(VIKI2, miniVIKI)
 | 
				
			||||||
    // #define LCD_SCREEN_ROT_180
 | 
					    // #define LCD_SCREEN_ROT_180
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    #define BTN_EN1        P3_26   // (31) J3-2 & AUX-4
 | 
					 | 
				
			||||||
    #define BTN_EN2        P3_25   // (33) J3-4 & AUX-4
 | 
					 | 
				
			||||||
    #define BTN_ENC        P2_11   // (35) J3-3 & AUX-4
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #define SD_DETECT_PIN  P1_31   // (49) J3-1 & AUX-3 (NOT 5V tolerant)
 | 
					 | 
				
			||||||
    #define KILL_PIN       P1_22   // (41) J5-4 & AUX-4
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #define DOGLCD_CS      P0_16   // (16)
 | 
					    #define DOGLCD_CS      P0_16   // (16)
 | 
				
			||||||
    #define DOGLCD_A0      P2_06   // (59) J3-8 & AUX-2
 | 
					    #define DOGLCD_A0      P2_06   // (59) J3-8 & AUX-2
 | 
				
			||||||
    #define DOGLCD_SCK     SCK_PIN
 | 
					    #define DOGLCD_SCK     SCK_PIN
 | 
				
			||||||
@@ -311,8 +314,17 @@
 | 
				
			|||||||
    #define STAT_LED_BLUE_PIN P0_26 //(63)  may change if cable changes
 | 
					    #define STAT_LED_BLUE_PIN P0_26 //(63)  may change if cable changes
 | 
				
			||||||
    #define STAT_LED_RED_PIN P1_21 // ( 6)  may change if cable changes
 | 
					    #define STAT_LED_RED_PIN P1_21 // ( 6)  may change if cable changes
 | 
				
			||||||
  #else
 | 
					  #else
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #if ENABLED(FYSETC_MINI_12864)
 | 
				
			||||||
 | 
					      #define DOGLCD_SCK   P0_15
 | 
				
			||||||
 | 
					      #define DOGLCD_MOSI  P0_18
 | 
				
			||||||
 | 
					      #define DOGLCD_CS    P1_09  // use Ethernet connector for EXP1 cable signals
 | 
				
			||||||
 | 
					      #define DOGLCD_A0    P1_14
 | 
				
			||||||
 | 
					    #else
 | 
				
			||||||
      #define DOGLCD_CS    P0_26   // (63) J5-3 & AUX-2
 | 
					      #define DOGLCD_CS    P0_26   // (63) J5-3 & AUX-2
 | 
				
			||||||
      #define DOGLCD_A0    P2_06   // (59) J3-8 & AUX-2
 | 
					      #define DOGLCD_A0    P2_06   // (59) J3-8 & AUX-2
 | 
				
			||||||
 | 
					    #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    #define LCD_BACKLIGHT_PIN P0_16 //(16) J3-7 & AUX-4 - only used on DOGLCD controllers
 | 
					    #define LCD_BACKLIGHT_PIN P0_16 //(16) J3-7 & AUX-4 - only used on DOGLCD controllers
 | 
				
			||||||
    #define LCD_PINS_ENABLE P0_18  // (51) (MOSI) J3-10 & AUX-3
 | 
					    #define LCD_PINS_ENABLE P0_18  // (51) (MOSI) J3-10 & AUX-3
 | 
				
			||||||
    #define LCD_PINS_D4    P0_15   // (52) (SCK)  J3-9 & AUX-3
 | 
					    #define LCD_PINS_D4    P0_15   // (52) (SCK)  J3-9 & AUX-3
 | 
				
			||||||
@@ -323,11 +335,6 @@
 | 
				
			|||||||
    #endif
 | 
					    #endif
 | 
				
			||||||
  #endif
 | 
					  #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //#define MISO_PIN         P0_17   // (50)  system defined J3-10 & AUX-3
 | 
					 | 
				
			||||||
  //#define MOSI_PIN         P0_18   // (51)  system defined J3-10 & AUX-3
 | 
					 | 
				
			||||||
  //#define SCK_PIN          P0_15   // (52)  system defined J3-9 & AUX-3
 | 
					 | 
				
			||||||
  //#define SS_PIN           P1_23   // (53)  system defined J3-5 & AUX-3 (Sometimes called SDSS)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  #if ENABLED(MINIPANEL)
 | 
					  #if ENABLED(MINIPANEL)
 | 
				
			||||||
    // GLCD features
 | 
					    // GLCD features
 | 
				
			||||||
    // Uncomment screen orientation
 | 
					    // Uncomment screen orientation
 | 
				
			||||||
@@ -362,10 +369,10 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#if ENABLED(LPC_SD_LCD)
 | 
					#if ENABLED(LPC_SD_LCD)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  #define SCK_PIN          P0_15
 | 
					  #define SCK_PIN          P0_15   // (52)  system defined J3-9 & AUX-3
 | 
				
			||||||
  #define MISO_PIN         P0_17
 | 
					  #define MISO_PIN         P0_17   // (50)  system defined J3-10 & AUX-3
 | 
				
			||||||
  #define MOSI_PIN         P0_18
 | 
					  #define MOSI_PIN         P0_18   // (51)  system defined J3-10 & AUX-3
 | 
				
			||||||
  #define SS_PIN           P1_23   // Chip select for SD card used by Marlin
 | 
					  #define SS_PIN           P1_23   // (53)  system defined J3-5 & AUX-3 (Sometimes called SDSS) - CS used by Marlin
 | 
				
			||||||
  #define ONBOARD_SD_CS    P0_06   // Chip select for "System" SD card
 | 
					  #define ONBOARD_SD_CS    P0_06   // Chip select for "System" SD card
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#elif ENABLED(LPC_SD_ONBOARD)
 | 
					#elif ENABLED(LPC_SD_ONBOARD)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user