Skip to content

Comments

Support Ender-2 display on SKR E3 boards#15924

Merged
thinkyhead merged 1 commit intoMarlinFirmware:bugfix-2.0.xfrom
TheAssassin:fix-ender2-display-skr-e3
Nov 20, 2019
Merged

Support Ender-2 display on SKR E3 boards#15924
thinkyhead merged 1 commit intoMarlinFirmware:bugfix-2.0.xfrom
TheAssassin:fix-ender2-display-skr-e3

Conversation

@TheAssassin
Copy link
Contributor

Description

This commit adds support for the MKS Mini 12864 style displays used on the Creality Ender-2 for the STM32 based compatible SKR E3 DIP and SKR Mini E3 boards by BigTreeTech.

I do not know whether other MKS Mini 12864 boards are supported with the pinout defined by this commit, but the Ender-2 ones work reliably.

This solution has been suggested by user @Grrby after a lengthy investigation conducted in #15624. If someone can confirm the suggested solution works on the SKR 1.3 as well, this issue could be closed.

I tested this change with today's upstream bugfix-2.0.x branch in a minimal-working-example like environment. All I had to change are the following variables:

sed -i 's|^//#define MKS_MINI_12864|#define MKS_MINI_12864|' Marlin/Configuration.h
sed -i 's|^  #define MOTHERBOARD .*|  #define MOTHERBOARD BOARD_BIGTREE_SKR_E3_DIP|' Marlin/Configuration.h
sed -i 's|^#define SERIAL_PORT .*|#define SERIAL_PORT -1|' Marlin/Configuration.h

Then build like pio run -e STM32F103RC_bigtree.

Of course this minimal build won't work with the printer, but it proves that the display is working. You need additional changes to the configuration, you need the alternative TMC stepper library from BTT etc. Also there's a new series of boards shipping an STM32 with a larger ROM, which I'll send a PR for soon. (However, it seems the bootloader isn't willing to flash larger firmwares anyway right now).
You can find my complete changes in https://github.com/TheAssassin/Marlin-Ender2-SKR-E3-DIP/. I intend to send a PR to add support for the

Benefits

You can use the SKR E3 DIP / SKR Mini E3 boards, which were originally designed for the Creality Ender-3, with the older Ender-2. This PR makes the stock display work.

Related Issues

#15624 (isn't fixed by this PR, though, as the issue is about the SKR 1.3, not the SKR E3 series)

This commit adds support for the MKS Mini 12864 style displays used on the
Creality Ender-2 for the STM32 based compatible SKR E3 DIP and SKR Mini
E3 boards by BigTreeTech.

I do not know whether other MKS Mini 12864 boards are supported with the
pinout defined by this commit, but the Ender-2 ones work reliably

This solution has been suggested by user @Grrby after a lengthy
investigation conducted in MarlinFirmware#15624. If someone can confirm the suggested
solution works on the SKR 1.3 as well, this issue could be closed.
@thisiskeithb
Copy link
Contributor

I do not know whether other MKS Mini 12864 boards are supported with the pinout defined by this commit, but the Ender-2 ones work reliably.

I have a bunch of BigTreeTech boards arriving at some point and have a MKS Mini 12864 display (among a bunch of other hardware) that I plan to test/confirm LCD support where I can.

This PR will likely get merged before they arrive, but I'll be sure to report back if these changes work on stock MKS Mini 12864 & SKR hardware.

@TheAssassin
Copy link
Contributor Author

TheAssassin commented Nov 17, 2019

Thanks @thisiskeithb.

Please note that the default contrast of 195 is too high for the stock Ender-2 display. I use 160.

@thisiskeithb by the way, "reliably" means the display doesn't go blank, as it did with our previous solution in that issue. There are small artifacts from time to time, but only for seconds. You can consider those normal, if you should see them.

@thisiskeithb
Copy link
Contributor

Please note that the default contrast of 195 is too high for the stock Ender-2 display. I use 160.

Instead of trying to stuff the stock Ender-2 LCD into the MKS_MINI_12864 definition, it would make sense to separate it out so we can specify LCD timing depending on the LCD used.

@TheAssassin
Copy link
Contributor Author

As far as I can see, with the Marlin 1.x originally used by Creality, they used the MKS_MINI_12864 definition as well.
The contrast is pretty much the only thing that won't work when just using MKS_MINI_12864.

If you think it makes more sense, how can we make it a separate entity? Shall we introduce an ENDER2_DISPLAY which internally #defines MKS_MINI_12864 and additionally sets LCD_CONTRAST_DEFAULT?

@Grrby
Copy link

Grrby commented Nov 17, 2019

If you take a look at configuration.h for Creality->Ender2 of Marlin 2.0, MKS_MINI_12864 is specified. My first idea was to define new LCD but after some problems I realized that MKS_MINI_12864 is already defined for Melzi board of Ender-2. So finally I decided to follow this solution on SKR Mini E3 with different pins assignment. Display works perfect. I didn't change contrast and I don't have any problem with it.

@TheAssassin
Copy link
Contributor Author

@Grrby can you please show a picture of your screen with the menu open where you can change the contrast? Perhaps it's me doing something wrong.

@Grrby
Copy link

Grrby commented Nov 17, 2019

On my display menu:
Configuration->LCD Contrast 195

As I mentioned before, I didn't touched contrast for MKS_MINI_12864.

@TheAssassin
Copy link
Contributor Author

I was specifically asking for a picture, to compare it to my screen's look.

@Grrby
Copy link

Grrby commented Nov 17, 2019

Sorry, misunderstanding :-)
One picture from now and two in different light condition ftom the SKR Mini benchy tests (perfect results btw)
DSC_2141 (Medium)
DSC_2146 (Medium)
DSC_2140 (Medium)

@TheAssassin
Copy link
Contributor Author

Thanks. Perhaps you just like it darker than me then, it's definitely darker than with mine on 160, but looks lighter than 195. I'll make pictures later, I put the printer on the shelf right now.

@Grrby
Copy link

Grrby commented Nov 17, 2019

I don't see any difference after swapping the board from Melzi.
Level of contrast can be the same but can be a difference in display (hardware) - different LCD, different contrast resistor value / potentiometer etc.

@thisiskeithb
Copy link
Contributor

195 has been tested to work with a real MKS_MINI_12864, so that may be another reason to separate LCD types.

@Grrby
Copy link

Grrby commented Nov 17, 2019

@thisiskeithb "Real MKS_MINI_12864" is mysterious and you can find many variants, all of them is just a variants of REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER. Creaity MINIPANEL is just another type of MKS_MINI_12864. If you check MINIPANEL Wiki ling from Configuration.h you will see diferent display then Ender2. Maybe Crealty doesn't wanted use "MKS" brand in their product, so they defined MINIPANEL.
Anyway if you want you can define separate LCD, good luck. I've spend some time on this topic and everything drove me to MKS_MINI_12864. But I'm not code/Marlin guru, so maybe there is a better solution. This works for me.
And look at this
https://github.com/MarlinFirmware/Marlin/blob/bugfix-2.0.x/config/examples/Creality/Ender-2/Configuration.h

@thisiskeithb
Copy link
Contributor

Maybe Crealty doesn't wanted use "MKS" brand in their product, so they defined MINIPANEL.

MINIPANEL is just the LCD, whereas MKS_MINI_12864 is the LCD, SD, encoder, etc. It's not a matter of companies disagreeing with each other 🙂

@TheAssassin
Copy link
Contributor Author

500px_DSC00407
500px_DSC00408

The latter contrast is most problematic when you're not looking at the screen perpendicularly. My display is mounted at an angle to work both when sitting and standing in front of a table.

I had to reduce the contrast, 160 seems to work best. That of course doesn't mean it works for anyone else just as well. My screen could also just be fabricated differently. I have no other of those screens compare with. I'm completely fine with using 195 as default value, and changing contrast in Configuration.h.

@Grrby since the value is sent to the screen via SPI as a value and the screen then interprets that and configures the contrast in some way, the board should not make any difference of course.

@Grrby
Copy link

Grrby commented Nov 18, 2019

@TheAssassin I don't see any problem with your LCD. C'mon this is not a TV screen, you just need to set/read few thinks. I've expected something serious.

@Grrby since the value is sent to the screen via SPI as a value and the screen then interprets that and configures the contrast in some way, the board should not make any difference of course.

Yes and now. Contrast value is sent by SPI, obliviously , but nobody knows if all of the LCD screen mounted in Ender2 are the same, with the same specification etc. For example I have two Sony Xperia phones, same model, bought at the same time at same shop. Displays are slightly different...

@TheAssassin
Copy link
Contributor Author

That's what I meant in my previous comment. I only mentioned I had to change the contrast, I never requested this should become standard for this display.

@thinkyhead thinkyhead merged commit 814d908 into MarlinFirmware:bugfix-2.0.x Nov 20, 2019
philippniethammer pushed a commit to philippniethammer/Marlin that referenced this pull request Dec 21, 2019
christran206 pushed a commit to christran206/Marlin2.0-SKR-Mini-E3-1.2 that referenced this pull request Dec 30, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants