-
-
Notifications
You must be signed in to change notification settings - Fork 37
BTT GTR and TFT35v3 E3 not working #5
Comments
So you see the "NoTouchFw V1.2" on the top and below that "ST7920Emulator ready", correct? If that's the case, please check your klipper config. How does your klipper display config look like? |
Super quick response. +2
|
Have you restarted Klipper after installing the firmware? |
Those files from BTT are not required for this firmware, you can remove them from the SD card. You could try this config which works for the TFT35v3 E3 and the SKR 1.4 turbo:
|
something has gone sideways. deleted everything other than the config.ini and your .bin file, inserted SD card and rebooted. It says illegal flash app. |
Make sure you use the correct binary file for your display. If you have successfully flashed the TFT, there is no need to reflash it again. If you have seen the expected content (#5 (comment)) the issue is most likely in the klipper config. |
FWIW - To regress to prior state I had to have those files that you said were unnecessary. What does your alias look like for SKR? |
My aliases above are correct for marlin. What might be confusing is the different terminology between Marlin and Klipper for display pins. Klipper: Marlin? Other options are LCD_D4(D6, D7), MISO, MOSI, SD_SS, SCK, SD_DETECT |
cs_pin = LCD_PINS_RS = PA8 = EXP1_4, so the skr aren't going to be equivalent. |
I don't know your particular display or mainboard, but I noticed that the display config for the TFT35v3 E3 in the wiki differs for the other. You could try this config:
|
I tried that and it didn't work. for example, my last post I was able to track down the cs_pin to the EXP1_4, which was what the original GTR settings, rather than the SKR settings. What I really need is the Marlin equivalent for PIN names. |
I tried to crack the code with skr1.4, but there are rewiring variants that really confuse things for me. |
I have tried both variants herein:
|
So digging around in a generic RAMPS with Full discount on Marlin: a little less clear so for GTR: I went ahead and forked the repo and compiled as an E3 just in case the bins wrong but nothing changed. |
From the TFT35v3E3 schematics I saw that there is another connector which has the power pins at the same locations as the EXP1 connector. Have you tried using the other connector insteat (try both pin configs please)? There seems to be some confusion about the pinout here: bigtreetech/BTT-TFT35-E3-V3.0#59 The encoder uses two pins for direction and one pin for the click. For the rotation two pins are used because otherwise the software wouldn't be able to tell in which direction the encoder has been turned. But the encoder is handled by klipper directly. If you can't get the v1.2 firmware to work, please try the v1.1 firmware. This has been reported working by @Sineos: #2 (comment) |
I have to correct my working configuration to:
I noticed something very strange:
--> In the end it turned out for my board and my Klipper install that I had to do a full power cycle of the printer board until it would pick up a changed configuration and be able to initialize. If not powered-cycled it would remember the old config (or so it seemed to me at least) On my side I still have the problem that I need potentially multiple power cycles with following
My recommendation when doing this: Maybe paranoid but I had my fingers burned and spent some hours screaming at the stupid display |
I guess the thing to ask here is if the connectors were working on marlin whether they are correct now? I just migrated from a functional current Marlin printer to Klipper. I didn't move the plugs. If that solves this question, then I won't move them. |
I would need to understand how you envision that I use that pinout to fix my problem, which is on a GTR board. My [display] section is identical to yours. My aliases are specific to my board, but if I grasp your intent, it was to be sure that I have the display setting correct. Check. Now I have fully powered down multiple times. Everything off and cold. It is always the same - "ST7920Emulator ready" |
I think the If you tests your screen with Marlin, please test the original BTT firmware for the screen as well. |
Much to my embarrassment, I cannot find binaries or source of V1.1. There wasn't a fork, only tags in history. I haven't often gone back to prior revisions of anything in Github, so I might just lack the knowledge of where to go. I apologize, but can you point me in the correct direction? |
The releases can be found here: https://github.com/teeminus/NoTouchScreenFirmware/releases In the meantime there has been an other user with TFTv3E3 display (and a SKR V1.4 mainboard) who had problems with his display. In the end it was just the config but it might be worth a look: #13 |
With the v1.1 bin I get notouchfirmware v1.1 only at the top with klipper restart then klipper firmware restart. |
My [display] is the same as the recommended settings in the thread |
I can only confirm that v1.2 is working on my SKR1.4 with the above settings. The only thing is that it can be very touchy to properly initialize. Sometimes multiple full power cycles of the printer board combined with |
I no longer have marlin on the printer. what I was saying was that when I had marlin and the btt firmware on the screen, the current cable positions and orientation worked. |
As a last test you could test the V1.0 release. This is the closest this firmware has been to the original BTT firmware. |
After looking through the code it seems like there is not much difference between the TFT35v3 and the E3 version. The only difference is that the E3 version has (one or more) WS2812. But regarding the Marlin mode, the screens are identical. So besides the filename of the binaries the firmware for both screens are identical (the filename is hardcoded in the binary though). You reported that the Possible reasons for that might (without judging oder weighting):
|
swapping exp 1 and 2 doesn't work (black screen). there is nothing wrong with the connections - validated by using Marlin. There is a difference in the two boards in that E3 can run in E3/creality format, so I tried the regular board version (v1.2) and it didn't work. I tried E3 v1.0, v1.1, and v1.2. I give up. |
https://drive.google.com/file/d/17KdFRhUaWo0_mE9XPh184C3NUSflZjSd/view?usp=sharing Moving the
before What I noticed as well is that no combination of
Well, thank YOU for supporting this 😄 |
The garbled screen is cause by corrupted data. Thats data from the buildin ST7920 font. Seems liks the emulator got a sequence that caused him to think that chars from this font shall be drawn to the screen. Does your screen restart completely by I will try adding SPI re-init when long pressing the knob. Maybe that helps reducing the number of restarts you have to perform before the screen works 😉 |
When in "garbled mode" any restart (
|
Your screen seems to be not resetted on And it seems like that the CS pin has a contant high level, otherwise the SPI would be reinitialized. |
I tried to make a more systematic approach now and compared
For me it looks quite sensible. Do you see anything amiss?
|
Looks okay so far. I made a video of my display when I played a bit with the SPI polarity (CPOL and CHPA) but that did not improve the behaviour. I pushed a new commit to the dev branch which allows resetting of the SPI peripherals of the display if the knob button is pressed for at least 5 seconds. Once you release the button, the screen will turn off and on again to indicate that the SPI has restarted. Afterwards I also looked through the klipper firmware source and noticed, that the firmware can be restarted by sending a specific USB command. Unfortunatelly this feature is only available for the LPC176X platform when the |
Yes, it is plugged
Quite obvious. This step over the reset is missing on my side. From the pin assignment it should be correct, so is there anything I can do from my side?
Seems to work well on first tests. I can revive a garbled display by resetting it via "knob long press" and |
Is there a way to branch this discussion. As the OP, I have lost the thread. |
We could move to Discussions
Thats a bit crude but they fix that by rotating the cable. Strange but it works. On thing that really bugs be is the following. I hooked up a logic analyzer to the display data bus to see if the SPI config is correct: From that image I would have expected that the SPI data is sampled on the rising edge of clock signal (falling edge would work as well). The idle level of the clock signal is obviously low. Speaking from the SPI config this would mean CPOL=0 and CPHA=0/1 (CPOL=clock polarity, CPHA=clock phase): CPHA basically defines if the SPI data is sampled on the first or the second edge of the clock signal. BTT initializes the SPI bus with CPOL=CPHA=1 meaning an idle high level of the clock signal is expected and data is sampled on a rising edge of the clock signal. But from my opinion this is wrong and I don't know why this has ever worked. Thats seems to be the reason why the display firmware no longer works after klipper has been restarted. But that does not explain why it works sometimes but not always. --- Break here from the previous low level SPI topic --- |
NOPE 😄 😄 😄 I recompiled the original BTT firmware and tested it with my klipper fix. And it works even when the display is not reset on I joined the klipper discord to discuss this there. Maybe the fix will be added to klipper so we finally ge rid of that issue. In case you want to try the klipper fix yourself I can post the required code changes here. |
First - I am glad progress is getting made. I just can't tell what was relevant to my issue. Second - I just installed the ADXL345 yesterday and after hours of trouble shooting we figured out that the SPI0 bus was being used by another touch screen. We assigned the ADXL345 to SPI1 but it didn't work, and I had to comment out the other display in config.txt to reclaim the SPI0 and everything started working with Klipper and ADXL345 (so far). So could the problem be SPI in my case as well? Sorry if I haven't captured everything you both have talked about - it was a lot (which is good). |
It could be a problem if the display pins are used by SPI0. The klipper firmware does not use a hardware SPI but bitbangs the data by using the IO pins directly. If these pins are used elsewhere, this could cause your problems.
The pins on the mainboard are mirrored. E.g. EXP1.1 is |
Quoting a statement from Kevin over at Klipper repo:
|
Maybe the best approach would be to open a PR at Klipper to have Kevin a look at it. Amazing job. Thanks for digging in so deeply |
I already spoke to Kevin (on discord) about my finding and my suggested fix. It would have been a low level fix in the MCU firmware but Kevin does not like the approach as he wants to keep the MCU code as simple as possible. I can totally understand this and as he suggested to fix this problem in the python code, that's what I am currently looking at 😆 I will keep you updated once I got it working.
I do what I can 😄 |
Pretty cool - keep us up to date please
… On Feb 19, 2021, at 2:10 AM, teeminus ***@***.***> wrote:
Maybe the best approach would be to open a PR at Klipper to have Kevin a look at it.
If you want I will make the relevant changes to the klipper src to verify your findings.
I already spoke to Kevin (on discord) about my finding and my suggested fix. It would have been a low level fix in the MCU firmware but Kevin does not like the approach as he wants to keep the MCU code as simple as possible. I can totally understand this and as he suggested to fix this problem in the python code, that's what I am currently looking at 😆 I will keep you updated once I got it working.
Amazing job. Thanks for digging in so deeply
I do what I can 😄
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub <#5 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AHTLR2DNEVREYYAIEHPOLFTS7YFH7ANCNFSM4XLEM7KA>.
|
It seems like we found a solution for this problem. Once the fix have been merged to Klipper I will create a new release of this firmware and a short writeup on how to setup Klipper correctly. |
thanks - I have not been able to circle back to this but would love to see it working. Any sense of whether the TFT side will ever see the light of day? |
I'm sorry, I don't understand your question. |
I am very sorry for being unclear. You have indicated that you have the no touch (marlin side) working. Is there the potential to get the touch side working in the future? |
You mean the "other" mode with the touch button which uses the uart to communicate with the printer? No, I won't add that to this firmware. Mostly because I want to keep this firmware as simple as possible - and because I think the original BTT firmware is to complex and bloated. And I am not sure if this touch mode will work with Klipper. |
Thank you for all that you do! |
The PR for Klipper has been merged. I created a new release for this firmware and updated the wiki to show how to migrate to the new Klipper display driver. Please checkout the release notes as well. |
@bakaufman Could you please test again with the latest klipper and tft firmware? |
I’ll try to this week. It has been moved to a different printer.
… On May 2, 2021, at 10:38 AM, teeminus ***@***.***> wrote:
@bakaufman <https://github.com/bakaufman> Could you please test again with the latest klipper and tft firmware?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub <#5 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AHTLR2CQOPJGVHUFO67GV4TTLVPVVANCNFSM4XLEM7KA>.
|
I am running an TFT35 E3 on a GTR board with Klipper. I DL'd the config.ini from BTT and the Notouchscreen binary "BIGTREETECH-TFT35_V3.0_E3.26.x.bin" and put them on an SD, inserted and restarted. Now it just says ST7920 Ready. Please let me know what I need to change.
The text was updated successfully, but these errors were encountered: