Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Will SKR mini E3 support Ender 3 V2? #424

Open
HYC23 opened this issue Oct 11, 2020 · 156 comments
Open

Will SKR mini E3 support Ender 3 V2? #424

HYC23 opened this issue Oct 11, 2020 · 156 comments

Comments

@HYC23
Copy link

HYC23 commented Oct 11, 2020

I recently got an Ender 3 V2, but one of the stepper motor drivers on the motherboard is broken. I have an old ender 3 running SKR mini E3 board and works pretty well, so is the new SKR mini E3 V2 board support the new Ender 3 V2 printer, eg. the screen?

@jernejp21
Copy link

jernejp21 commented Oct 11, 2020

I have just configured Marlin for Ender 3 V2. You also have to do some pin changes on ribbon cable for display, because pinout is different. I will update this post next week.

@mustang5269
Copy link

mustang5269 commented Oct 11, 2020

I was actually looking to do the opposite. Add the ender3 v2 screen to an ender 3 pro with skr mini e3 v2. Curious on the pin changes needed to get this to work.

@HYC23
Copy link
Author

HYC23 commented Oct 12, 2020

I have just configured Marlin for Ender 3 V2. You also have to do some pin changes on ribbon cable for display, because pinout is different. I will update this post next week.

Currently I have some problems with USB connection to PC. Windows don't show anything in device manager. But printing and display works fine.

Would you mind showing us the pinout of the Ender 3 V2 screen and how to change the pinout?
I cannot find any info for that.
Thank you so much.

@jernejp21
Copy link

jernejp21 commented Oct 12, 2020

Edited on Mar 28 2021

This is tested on Marlin version 2.0.7. New Marlin version has changed SERIAL_PORT definition and a lot of other stuff.
You can use my fork for speeding the process. This version works without a bootloader! If you you are using a bootloader, uncomment lines 752 and 753 in platformio.ini
https://github.com/jernejp21/Marlin

Use Marlin's Ender 3 V2 Configuration.h and Configuration_adv.h files.

You need to import this code into pins_BTT_SKR_MINI_E3_common.h file. I pasted this part of code below USB connect control. This code can be found in pins_CREALITY_V4.h.

/**
 *        Ender 3 V2 display                         SKR Mini E3 V2.0
 *                _____                                     _____
 *            5V | 1 2 | GND                            5V | 1 2 | GND
 *   (BTN_E1) A  | 3 4 | B (BTN_E2)         (BTN_EN1) PB15 | 3 4 | PB8 (BTN_E2)
 *          BEEP | 5 6   ENT (BTN_ENC)                PB9  | 5 6   RX1
 *  (SKR_RX1) TX | 7 8 | RX (SKR_TX1)                RESET | 7 8 | TX1
 *            NC | 9 10| NC                  (BEEPER) PA15 | 9 10| PB5  (BTN_ENC)
 *                -----                                     -----
 *                EXP1                                      EXP1
 */
#if ENABLED(DWIN_CREALITY_LCD)

  // RET6 DWIN ENCODER LCD
  #define BTN_ENC                           PB5
  #define BTN_EN1                           PB15
  #define BTN_EN2                           PB8

  #ifndef BEEPER_PIN
    #define BEEPER_PIN                      PA15
    #undef SPEAKER
  #endif
#endif

Commented picture shows pinout for display and SKR board.

CAUTION!!!
You have to create new ribbon cable.
Connect SKR RX to display TX pin and SKR TX to display RX pin! This is the most important part (and setting the correct serial port in Marlin).

You can connect other pins as you like, just make sure you define correct pins in Marlin (you can connect display A to SKR's PB9 etc.).

Pinout for Ender 3 V2 display is printed on display's PCB. If you remove the back cover, you will see the connector marked.

After you have copied this code, adjusted pins on display and adjusted pins in Marlin for button and beeper, change also Configuration.h file.

  • set #define SERIAL_PORT -1, #define SERIAL_PORT_2 1.
  • set #define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V2_0
  • set #define X_DRIVER_TYPE TMC2209. Do this also fro X, Y and E0.
  • set #define INVERT_X_DIR true
  • set #define INVERT_Y_DIR true
  • set #define INVERT_Z_DIR false
    -set #define INVERT_E0_DIR true
  • set #define DWIN_CREALITY_LCD and comment out current display you are using.

Configuration_adv.h file.

  • set #define SDCARD_CONNECTION ONBOARD
  • under #if HAS_TRINAMIC_CONFIG, change motor current. I found out that 580 mA for X, Y and Z is ok. And 700 for E. You can play with this settings.
  • a little bit lower, change slave addresses for serial TX, RX.
    • #define X_SLAVE_ADDRESS 0
    • #define Y_SLAVE_ADDRESS 2
    • #define Z_SLAVE_ADDRESS 1
    • #define E0_SLAVE_ADDRESS 3
  • set #define CHOPPER_TIMING CHOPPER_DEFAULT_24V if you are using 24V power supply

Make sure you also change platformio.ini . Change default_envs = STM32F103RC_btt_512K. You are now using SKR board, not Ender.

From here on you can change Marlin to use BL Touch, sensorless homing etc.

@Stalkeros000
Copy link

Hi all.The day before yesterday I received this board, killed two days on the configuration, was already going to sell it, when I suddenly came across this post. Thank you very much, you have given me hope.
Please tell me in file platformio.ini you indicate default_envs = STM32F103RC_btt_512K and in configuration.h MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V2_0 right?

@jernejp21
Copy link

Please tell me in file platformio.ini you indicate default_envs = STM32F103RC_btt_512K and in configuration.h MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V2_0 right?

Yes, that is correct.

Hope you get it to work. Please comment on the results.

@Stalkeros000
Copy link

Please tell me in file platformio.ini you indicate default_envs = STM32F103RC_btt_512K and in configuration.h MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V2_0 right?

Yes, that is correct.

Hope you get it to work. Please comment on the results.

Thx, but i cant' compile FW file, few days ago i was create new issue (before I was see that post): https://github.com/MarlinFirmware/Configurations/issues/274

Maybe need in configuration.h indicate CREALITY_V4?

@jernejp21
Copy link

@Stalkeros000 did you look at a post above where you have to add some code to pins_BTT_SKR_MINI_E3_common.h?

@dani190
Copy link

dani190 commented Nov 1, 2020

@jernejp21 just to confirm, you would need to place that code in the correct file and build a custom cable to wire it as defined? So basically you can't just use a regular flat ribbon cable for this to work?

@jernejp21
Copy link

@dani190 yes. You have to make new cable or adapter to use with default cable, because pinout of CR10 display differs from Ender 3 V2 display.

@dani190
Copy link

dani190 commented Nov 1, 2020

Ok fair enough - and this will use the stock Creality menus I guess? Since the marlin UI has not been re-written yet?

@jernejp21
Copy link

I have will contact Marlin developers if they want to include this fix or not. You will need to fix HW by yourself (or if BTT or someone else starts to sell adapters). This configuration isn't plug and play like it's for BLTouch and Neopixle and sensorless homing.

@Stalkeros000
Copy link

Hi all. Im not test new board yet, bcs I dont want lose PC connection. Sometimes need use some G-code commands in real-time. Only that stops me to trying made some adapter and change board. If you know how fix that problem, please tell.

@dani190
Copy link

dani190 commented Nov 2, 2020

I have will contact Marlin developers if they want to include this fix or not. You will need to fix HW by yourself (or if BTT or someone else starts to sell adapters). This configuration isn't plug and play like it's for BLTouch and Neopixle and sensorless homing.

Weird that this worked for you... I tried it and got a ton of errors about the encoder wheel or something. I ensured I put the above code into the file you mentioned. Were there any other changes you made?

@jernejp21
Copy link

Check if everything is defined. Also check for #define DWIN_CREALITY_LCD in Configuration.h.

@dani190
Copy link

dani190 commented Nov 2, 2020

@jernejp21 Ok so it seems like the stock Marlin config files are missing some stuff that must be turned on... Fixed it by comparing to the Ender 3 V2 example, enabling a few things for the encoder wheel and didn't have classic jerk enabled causing other issues.
Basically had to merge my SKR mini E3 config with the Ender 3 V2 stock board config to have it compile.

Going to try building a cable now and see how it works.

@MrSalzi
Copy link

MrSalzi commented Nov 3, 2020

after flashing my printer keeps booting. It shows progress bar and after it's full it starts again from the beginning.

@dani190
Copy link

dani190 commented Nov 3, 2020

Ya I had the same behaviour... gave up for now as I know Marlin's dev's are working on fixing this soon.

@jernejp21
Copy link

@MrSalzi @dani190 I have updated my comment on how to setup config file.
Did you #define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V2_0 in Configuration.h? From @MrSalzi comment I think that wiring is wrong. I think that display pulls down REST pin so the main MCU resets. To check my theory, please use jumper cables and connect only +5V, GND, TX and RX pins. If printer boots up correctly (you can see main screen), than you have wiring problems. Check actual wiring and check how pins are set in FW.

@jernejp21
Copy link

Update regrading Marlin support for this configuration.
As you can read here, Marlin is not in favour of this, because it needs HW fiddling. It's not plug and play solution. In my opinion a lot of things Marlin supports are not plug and play, but this is their response.

It's like the time you needed adapter for Ender 3 (8-bit board) for using BLTouch.

@dani190
Copy link

dani190 commented Nov 4, 2020

@MrSalzi @dani190 I have updated my comment on how to setup config file.
Did you #define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V2_0 in Configuration.h? From @MrSalzi comment I think that wiring is wrong. I think that display pulls down REST pin so the main MCU resets. To check my theory, please use jumper cables and connect only +5V, GND, TX and RX pins. If printer boots up correctly (you can see main screen), than you have wiring problems. Check actual wiring and check how pins are set in FW.

yes I had it defined from before. Took a working copy of my config and just added your suggested changes
image

@dani190
Copy link

dani190 commented Nov 4, 2020

Update regrading Marlin support for this configuration.
As you can read here, Marlin is not in favour of this, because it needs HW fiddling. It's not plug and play solution. In my opinion a lot of things Marlin supports are not plug and play, but this is their response.

It's like the time you needed adapter for Ender 3 (8-bit board) for using BLTouch.

Well I don't know if that means they aren't going to support it but like you said... it needs a custom cable.

@MrSalzi
Copy link

MrSalzi commented Nov 4, 2020

Thanks for your fast response. I've done all that and tried to disconnect all the other pins but these didn't fix it :(

@MrSalzi
Copy link

MrSalzi commented Nov 4, 2020

Is this correct?

637AA8A4-DEEB-4D4E-AC26-EB760C956113

D9BE362F-65F6-4C01-92A0-33E011450AE2

@MrSalzi
Copy link

MrSalzi commented Nov 6, 2020

If I comment out #define EEPROM_SETTINGS then it boots to main menu. Button works but rotation doesn't, but anyway my board is alive. I guess this isn't the final solutions?

@Westward12
Copy link

If I comment out #define EEPROM_SETTINGS then it boots to main menu. Button works but rotation doesn't, but anyway my board is alive. I guess this isn't the final solutions?

I am at the same step. I can get it to post by commenting out EEPROM_SETTINGS. With it enabled it just boot loops.

@Madtom2925
Copy link

Ok, so I got it to work with eeprom, and with almost everything working including z offset and a bltouch. There is a flaw in the code for saving the language setting to the eeprom that makes it only work with the eeprom on the creality v4 board. With these lines commented out marlin starts properly however as a default it will always start in English. I'll do a full write up on how to make it work later when I get home.

@jottr
Copy link

jottr commented Dec 14, 2020

@bigtreetech do you plan to officially support the Ender3v2?

@thomasparlette
Copy link

I am getting the following error when compiling.
image

Attached is also my configurations.
Configuration.zip

@thomasparlette
Copy link

I am getting the following error when compiling.
image

Attached is also my configurations.
Configuration.zip

Figured out the issue in Configuration_adv.h calling out the serial connections to each 2209 driver. It compiled now the new board should be in tomorrow and I can install and try out.

@CZDanol
Copy link

CZDanol commented Jun 8, 2021

Oh sorry I haven't realized you were talking about a different board. You can find the pinout config for your board here, so you can cross check it: https://github.com/CZDanol/Marlin/blob/E3V2-EXTUI-BLT-SKRMini3V2/Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h

@4slash1977
Copy link

Still don't see with are TX and RX pins for my board :-(

@jurson8204
Copy link

So I finally installed skr mini e3 v2 with tft 35 display... everything works fine, except two or three things. First screen shows BLT failed bed leveling just when I run the printer, probe goes out and then it's hiding, when levelin it is not going out. 2nd and 3rd thing is that when I try to autohome it works fine, but when I move bed manually direction is reversed. When I reverse Y_dir in marlin, manually it is working, but then homing is going opposite direction. I am trying to fight with bl, but with this autohome and Y direction I have no idea what to change

@Damquis
Copy link

Damquis commented Jun 16, 2021

Unfortunately, I was unable to compile my own Marlin modification. So I downloaded the @jernejp21 branch 2.0.x firmware. The firmware is compiling, but after uploading to the Ender-3 V2 with the SKR mini E3 V2 motherboard, the screen still does not work. Additionally, I cannot connect via Octoprint and USB. I can connect to my firmware without any problems and print from Octoprint (without a working screen, of course).
Cable made according to the @Damquis scheme, I checked the correctness of connections several times.

wiring

My firmware is a minimally modified last official Bugfix2.0.x with an example Ender-3 pro / BigTreeTech SKR Mini E3 2.0 configuration. I used all @jernejp21 guidelines from the first post, only when I enable #define DWIN_CREALITY_LCD it won't compile. The problem message is shown below.

request for member 'write' in '((MultiSerial<ForwardSerial<USBSerial>, int, 0>*)this)->MultiSerial<ForwardSerial<USBSerial>, int, 0>::serial1', which is of non-class type 'int'

request for member 'flush' in '((MultiSerial<ForwardSerial<USBSerial>, int, 0>*)this)->MultiSerial<ForwardSerial<USBSerial>, int, 0>::serial1', which is of non-class type 'int'

My firmware is available at: https://github.com/kubiakoo/Marlin-bugfix-2.0.7--Ender-3-V2-SKR-3-Mini-v2.0
This is a version that compiles, without enabled line #define DWIN_CREALITY_LCD

Where to look for the cause of the problem? Why does the @jernejp21 firmware not work on my Ender3v2?

I had the same problem and I managed to solve it. Replace
#define SERIAL_PORT_2 1
with
#define LCD_SERIAL_PORT 1
in Configuration.h

I successfully compiled the latest Jyers firmware. (https://github.com/Jyers/Marlin)

@blazewicz
Copy link

TLDR: This board DOES support Ender 3 V2 with its stock display, I've opened a request to add it to mainstream Marlin here:

@blazewicz
Copy link

Ender 3 V2 display support on BTT SKR Mini E3 boards is now available in mainstream Marlin. No more need to reconfigure pins and serial ports.

@Stalkeros000
Copy link

Sorry, BTT SKR E3 RRF (with esp8266 module) will work with our display?

@mrbrdo
Copy link

mrbrdo commented Sep 18, 2021

Guys I am confused, is the hardware rewire still needed or not for the E3v2 display?
If yes, could someone just show a photo or something on which wires need to be swapped? The ascii pinout in the comment is not clear enough. Need to know which wires to switch on the ribbon cable itself, relative to the red line on the cable.

@rubesworkshop
Copy link

rubesworkshop commented Sep 18, 2021

@mrbrdo

Guys I am confused, is the hardware rewire still needed or not for the E3v2 display?
If yes, could someone just show a photo or something on which wires need to be swapped? The ascii pinout in the comment is not clear enough. Need to know which wires to switch on the ribbon cable itself, relative to the red line on the cable.

See if the wiring diagram on this page helps -
MarlinFirmware/Configurations#535

Andy

@manpres2
Copy link

Hi,

Please excuse me if its already taken care of but i am trying to enable the stock LCD with ender3V2 on SKR e3 mini v2 board and getting error message "error: #error "EMERGENCY_PARSER is only supported by HardwareSerial or USBComposite in HAL/STM32F1"

I am compiling the firmware for the first time so please point me to a thread which describe exactly what needs to be done as i might not be able to follow instructions which has some obvious steps for an intermediate level but for me those will be tough.

Thank you

@davthomaspilot
Copy link

davthomaspilot commented May 14, 2022

Edited on Mar 28 2021

This is tested on Marlin version 2.0.7. New Marlin version has changed SERIAL_PORT definition and a lot of other stuff. You can use my fork for speeding the process. This version works without a bootloader! If you you are using a bootloader, uncomment lines 752 and 753 in platformio.ini https://github.com/jernejp21/Marlin

Use Marlin's Ender 3 V2 Configuration.h and Configuration_adv.h files.

You need to import this code into pins_BTT_SKR_MINI_E3_common.h file. I pasted this part of code below USB connect control. This code can be found in pins_CREALITY_V4.h.

/**
 *        Ender 3 V2 display                         SKR Mini E3 V2.0
 *                _____                                     _____
 *            5V | 1 2 | GND                            5V | 1 2 | GND
 *   (BTN_E1) A  | 3 4 | B (BTN_E2)         (BTN_EN1) PB15 | 3 4 | PB8 (BTN_E2)
 *          BEEP | 5 6   ENT (BTN_ENC)                PB9  | 5 6   RX1
 *  (SKR_RX1) TX | 7 8 | RX (SKR_TX1)                RESET | 7 8 | TX1
 *            NC | 9 10| NC                  (BEEPER) PA15 | 9 10| PB5  (BTN_ENC)
 *                -----                                     -----
 *                EXP1                                      EXP1
 */
#if ENABLED(DWIN_CREALITY_LCD)

  // RET6 DWIN ENCODER LCD
  #define BTN_ENC                           PB5
  #define BTN_EN1                           PB15
  #define BTN_EN2                           PB8

  #ifndef BEEPER_PIN
    #define BEEPER_PIN                      PA15
    #undef SPEAKER
  #endif
#endif

Commented picture shows pinout for display and SKR board.

CAUTION!!! You have to create new ribbon cable. Connect SKR RX to display TX pin and SKR TX to display RX pin! This is the most important part (and setting the correct serial port in Marlin).

You can connect other pins as you like, just make sure you define correct pins in Marlin (you can connect display A to SKR's PB9 etc.).

Pinout for Ender 3 V2 display is printed on display's PCB. If you remove the back cover, you will see the connector marked.

After you have copied this code, adjusted pins on display and adjusted pins in Marlin for button and beeper, change also Configuration.h file.

  • set #define SERIAL_PORT -1, #define SERIAL_PORT_2 1.
  • set #define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V2_0
  • set #define X_DRIVER_TYPE TMC2209. Do this also fro X, Y and E0.
  • set #define INVERT_X_DIR true
  • set #define INVERT_Y_DIR true
  • set #define INVERT_Z_DIR false
    -set #define INVERT_E0_DIR true
  • set #define DWIN_CREALITY_LCD and comment out current display you are using.

Configuration_adv.h file.

  • set #define SDCARD_CONNECTION ONBOARD

  • under #if HAS_TRINAMIC_CONFIG, change motor current. I found out that 580 mA for X, Y and Z is ok. And 700 for E. You can play with this settings.

  • a little bit lower, change slave addresses for serial TX, RX.

    • #define X_SLAVE_ADDRESS 0
    • #define Y_SLAVE_ADDRESS 2
    • #define Z_SLAVE_ADDRESS 1
    • #define E0_SLAVE_ADDRESS 3
  • set #define CHOPPER_TIMING CHOPPER_DEFAULT_24V if you are using 24V power supply

Make sure you also change platformio.ini . Change default_envs = STM32F103RC_btt_512K. You are now using SKR board, not Ender.

From here on you can change Marlin to use BL Touch, sensorless homing etc.

The code jernejp21 references here:

https://github.com/jernejp21/Marlin

has BEEPER_PIN on PB9. But the ascii picture in his github post for this issue shows it on PA15.

The pretty wiring diagrams show BEEPER_PIN on PA15.

Do the wiring diagrams in this issue need to be updated to be consistent with https://github.com/jernejp21/Marlin, or is there a another branch that should be used that IS consistent with wiring diagram in this issue?

@Will0201
Copy link

Edited on Mar 28 2021

This is tested on Marlin version 2.0.7. New Marlin version has changed SERIAL_PORT definition and a lot of other stuff. You can use my fork for speeding the process. This version works without a bootloader! If you you are using a bootloader, uncomment lines 752 and 753 in platformio.ini https://github.com/jernejp21/Marlin

Use Marlin's Ender 3 V2 Configuration.h and Configuration_adv.h files.

You need to import this code into pins_BTT_SKR_MINI_E3_common.h file. I pasted this part of code below USB connect control. This code can be found in pins_CREALITY_V4.h.

/**
 *        Ender 3 V2 display                         SKR Mini E3 V2.0
 *                _____                                     _____
 *            5V | 1 2 | GND                            5V | 1 2 | GND
 *   (BTN_E1) A  | 3 4 | B (BTN_E2)         (BTN_EN1) PB15 | 3 4 | PB8 (BTN_E2)
 *          BEEP | 5 6   ENT (BTN_ENC)                PB9  | 5 6   RX1
 *  (SKR_RX1) TX | 7 8 | RX (SKR_TX1)                RESET | 7 8 | TX1
 *            NC | 9 10| NC                  (BEEPER) PA15 | 9 10| PB5  (BTN_ENC)
 *                -----                                     -----
 *                EXP1                                      EXP1
 */
#if ENABLED(DWIN_CREALITY_LCD)

  // RET6 DWIN ENCODER LCD
  #define BTN_ENC                           PB5
  #define BTN_EN1                           PB15
  #define BTN_EN2                           PB8

  #ifndef BEEPER_PIN
    #define BEEPER_PIN                      PA15
    #undef SPEAKER
  #endif
#endif

Commented picture shows pinout for display and SKR board.

CAUTION!!! You have to create new ribbon cable. Connect SKR RX to display TX pin and SKR TX to display RX pin! This is the most important part (and setting the correct serial port in Marlin).

You can connect other pins as you like, just make sure you define correct pins in Marlin (you can connect display A to SKR's PB9 etc.).

Pinout for Ender 3 V2 display is printed on display's PCB. If you remove the back cover, you will see the connector marked.

After you have copied this code, adjusted pins on display and adjusted pins in Marlin for button and beeper, change also Configuration.h file.

  • set #define SERIAL_PORT -1, #define SERIAL_PORT_2 1.
  • set #define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V2_0
  • set #define X_DRIVER_TYPE TMC2209. Do this also fro X, Y and E0.
  • set #define INVERT_X_DIR true
  • set #define INVERT_Y_DIR true
  • set #define INVERT_Z_DIR false
    -set #define INVERT_E0_DIR true
  • set #define DWIN_CREALITY_LCD and comment out current display you are using.

Configuration_adv.h file.

  • set #define SDCARD_CONNECTION ONBOARD

  • under #if HAS_TRINAMIC_CONFIG, change motor current. I found out that 580 mA for X, Y and Z is ok. And 700 for E. You can play with this settings.

  • a little bit lower, change slave addresses for serial TX, RX.

    • #define X_SLAVE_ADDRESS 0
    • #define Y_SLAVE_ADDRESS 2
    • #define Z_SLAVE_ADDRESS 1
    • #define E0_SLAVE_ADDRESS 3
  • set #define CHOPPER_TIMING CHOPPER_DEFAULT_24V if you are using 24V power supply

Make sure you also change platformio.ini . Change default_envs = STM32F103RC_btt_512K. You are now using SKR board, not Ender.

From here on you can change Marlin to use BL Touch, sensorless homing etc.

I am extremely new to all of this, and I was wondering if anyone could answer a few questions. They are probably very basic, but like I said, I'm new to it all.

  1. Where are these files and how do I get to them?
  2. Once found, do I edit them using software such as Visual Studios?
  3. Not really a question, but in general, a lot of this is confusing, but I'm sure super helpful, so if anyone wouldn't mind kind of explaining it to me like I'm 10, it would be greatly appreciated.

Thanks in advance.

@jernejp21
Copy link

@davthomaspilot Pinout in discription if different because I made different cable and forgot to make changes to description. I have fixed this. Thank you.

@Will0201

  1. Search for file name in repository. Clone repository and use search function on your desktop.
  2. You can use any text editor, but it is recommended to use VS Code and PlatformIO to compile the code.
  3. You need to learn C programming language. You also need to learn how microcontrollers work. This post isn't meant as tutorial on how to compile and download new code to your printer.

@davthomaspilot
Copy link

@jernejp21

Step by step guides like this:

https://www.smith3d.com/skr-mini-e3-v2-v3-on-ender-3-v2-ender-3-s1-lcd-dwin-knob-screen/?replytocom=14630#respond

and wiring diagrams in this issue assume a configuration.h like your original post-- BEEP on pin 9 of SKR Mini EXP1 connector. So, I think cables already built won't work with the code you changed for a new cable.

I think later posts in this thread say your changes are now in the main line Marlin?

What version of the cable should be expected for compatibility with the latest Marlin release and future releases? Will cables built using the diagrams in this issue (and copied many places) have to be redone for compatibility with newer Marlin software?

Sorry if this sounds negative--it's not intended to be. You did a great job in getting this working and documenting. I'm just trying to save headaches for others that stumble on this thread or use other web resources and later Marlin releases.

Thanks!

Which version of the cable should be built if we want hardware to be compatible with the latest (and future) releases?

@jernejp21
Copy link

@davthomaspilot I have check Marlin's code and my code. It looks like the pinout is the same. I think that Marlin will not change pinout anymore. You can make custom flat cable or use standard cable and make PCB adapter.

Marlin's code

#if HAS_DWIN_E3V2 || IS_DWIN_MARLINUI
  /**
   *        ------                ------                ------
   * (ENT) |10  9 | (BEEP)       |10  9 |              |10  9 |
   *  (RX) | 8  7 |         (RX) | 8  7 | (TX)      RX | 8  7 | TX
   *  (TX)   6  5 |        (ENT)   6  5 | (BEEP)   ENT | 6  5 | BEEP
   *   (B) | 4  3 | (A)      (B) | 4  3 | (A)        B | 4  3 | A
   *   GND | 2  1 | (VCC)    GND | 2  1 | VCC      GND | 2  1 | VCC
   *        ------                ------                ------
   *         EXP1                  DWIN               DWIN (plug)
   *
   * All pins are labeled as printed on DWIN PCB. Connect TX-TX, A-A and so on.
   */

  #error "Ender-3 V2 display requires a custom cable, see diagram above this line. Comment out this line to continue."

  #define BEEPER_PIN                      EXP1_9
  #define BTN_EN1                         EXP1_3
  #define BTN_EN2                           PB8
  #define BTN_ENC                           PB5

My code

/**
 *        Ender 3 V2 display                         SKR Mini E3 V2.0
 *                _____                                     _____
 *            5V | 1 2 | GND                            5V | 1 2 | GND
 *   (BTN_E1) A  | 3 4 | B (BTN_E2)         (BTN_EN1) PB15 | 3 4 | PB8 (BTN_E2)
 *          BEEP | 5 6   ENT (BTN_ENC)       (BEEPER) PB9  | 5 6   RX1
 *  (SKR_RX1) TX | 7 8 | RX (SKR_TX1)                RESET | 7 8 | TX1
 *            NC | 9 10| NC                 (BTN_ENC) PA15 | 9 10| PB5  
 *                -----                                     -----
 *                EXP1                                      EXP1
 */
#if ENABLED(DWIN_CREALITY_LCD)

  // RET6 DWIN ENCODER LCD
  #define BTN_ENC                           PA15
  #define BTN_EN1                           PB15
  #define BTN_EN2                           PB8

  #ifndef BEEPER_PIN
    #define BEEPER_PIN                      PB9
    #undef SPEAKER
  #endif
#endif

I would recommend you use official Marlin's code and check the pinout. My code is outdated. It was meant as a fix, because Marlin didn't have the implementation yet and at the time, they didn't have interest in including support for SKR mini E3 V2 on Ender 3 V2. But now there is full support in Marlin and you should use it, because Marlin gets regular updates. This issue should also be closed, because it is fixed in Marlin now.

@jernejp21
Copy link

@HYC23 Please close this issue with comment:

SKR mini E3 support for Ender 3 V2 is implemented in Marlin since MarlinFirmware/Configurations#535. Please use official Marlin FW (don't use @jernejp21 fork anymore). For cable configuration see pins config file - src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h

@davthomaspilot
Copy link

Just wanted to say another success!

Haven't done a long print yet to make sure I don't get the hangs (I changed to single buffer), but display works and Octoprint connects.

Thanks for all those who posted.

@davthomaspilot
Copy link

davthomaspilot commented Jun 12, 2022

For those who may be worried about making the cable so the stock Ender 3 V2 display can be used

I made two cables, both worked.

I made first cable by cutting a ribbon cable from Amazon, cutting the ribbon and splicing wires:

https://www.amazon.com/dp/B07JNH6J2C?psc=1&ref=ppx_yo2ov_dt_b_product_details

Five of the wires go straight through (black, white, grey, purple, and orange, two from the SKR Mini aren't needed (red and brown, and three need to connect to different color in the ribbon. I just used soldered the wires that need to swap with heat shrink tubing.

image

It worked fine, but looked messy, especially when I added RTV for strain relief.

A better way, IMHO, is to splice no wires, but just use a new connector. I got a bag of them from Amazon:

https://www.amazon.com/dp/B07S1NFG4S?psc=1&ref=ppx_yo2ov_dt_b_product_details

Then, just arrange the wires in the new connector before using a vise to squeeze the connector onto the ribbon cable. It looks like this:

SKR2EnderV2

Important!

The display end of the connector is shown

@NathanBerglas
Copy link

NathanBerglas commented Jul 5, 2022

I have a question. Can you re-arrange the pins of the rainbow cable through the firmware? Instead of mangling my only cable, I tried this.

In pins_BTT_SKR_E3_common.h, I switched

// RET6 DWIN ENCODER LCD
  #define BTN_ENC                           PB5
  #define BTN_EN1                           PB15
  #define BTN_EN2                           PB8

  #ifndef BEEPER_PIN
    #define BEEPER_PIN                      PA15
    #undef SPEAKER
  #endif
#endif

With

 // RET6 DWIN ENCODER LCD
  #define BTN_E1                            PB15 // 3 --> 3 
  #define BTN_EN2                           PB8  // 4 --> 4
  #define BTN_ENC                           PB5  // 5 --> 9
  #define SKR_RX1                           RX1  // 7 --> 6
  #define SKR_TX1                           TX1  // 8 --> 8
  //#define NC                                PB9  // 9 --> 5 (NC)
  //#define NC                                RESET // 10 --> 7 (NC)

  #ifndef BEEPER_PIN
    #define BEEPER_PIN                      PA15 // 6 --> 10
    #undef SPEAKER
  #endif
#endif

When I flashed it, the screen did nothing, but no beeping noise. Is this idea not possible, or am I making a small mistake?

@jernejp21
Copy link

@NathanBerglas Not possible. Marlin doesn't support SW UART. RX and TX pins must be the correct pins to use HW UART. Also if Marlin supported SW UART, I don't think it would be feasible, since it would consume too much resources. Because RX and TX pins are different on DWIN screen, you need custom cable or adapter. You can also make PCB that mixes signals instead of mixing wires of the cable.

@NathanBerglas
Copy link

NathanBerglas commented Jul 11, 2022

Remember, you need to flash not only the motherboard, but also the LCD display! if Marlin loads, but all the icons are missing, then you have this problem. You need to take a FAT32, 4096 sector size formatted SD card to flash the LCD. You need to remove all the files from it, and put only a file called DWIN_SET. For the Ender 3 V2 and this setup, the DWIN_SET file you need to use can be found here. Turn off the printer, undo the back of the LCD display, put the SD card into the slot and turn it back on. The screen should turn blue for a few seconds, then turn orange. Once orange, wait 30 to 60 seconds before turning off the printer and taking out the SD card. After this is done, then all of your icons should appear and Marlin is set up correctly.

P.S This only applies to DWIN-style LCD's! If you have the more recent DACAI display, then you should use the private file instead of the DWIN_SET

@LoganAllen21
Copy link

I was able to get the screen working but it dosent register when I turn the know left and right only clicking it what what did I mess up.

@jottr
Copy link

jottr commented Oct 10, 2023

How do people get the idea that it is cool to inject a comment in a random language into an English speaking thread?
Please use Google translate and post in English for God's sake.

Greetings from Germany.

@PeterPavlik27
Copy link

Hello, can someone please help me? I put a new SKR mini E3 V3.0 board on the ender 3 in 2
I put the firmware in the printer and the desktop, I changed the cable to the DWIN screen, but when I turn on the printer, the screen is black and there are no icons.

@herthd
Copy link

herthd commented Mar 19, 2024

Hello, can someone please help me? I put a new SKR mini E3 V3.0 board on the ender 3 in 2 I put the firmware in the printer and the desktop, I changed the cable to the DWIN screen, but when I turn on the printer, the screen is black and there are no icons.

+1

@haxmanster
Copy link

+1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests