Comments (21)
Shouldn't we work with the TFT_eSPI author to make changes for this board? It would not affect other existing users of TFT_eSPI, right? It only takes effect with TFT_DATA_PIN_OFFSET_EN build_flags, correct?
The problem I am having is, I have a project using source I didnt write, and it dynamically is pulling the latest TFT_eSPI from the web, and I cannot seem to "patch" anything locally to take effect. Even if I could... this patch should be in the official lib, otherwise, to use t-display-s3 is very "hacky".
I agree. As Micky is the author of the patch and I jsut cleaned up a few things to make it work with the latest released TFT_eSPI, I was hoping Micky would make a pull request on the TFT_eSPI project, which would enable the TFT_eSPI author to merge the patch into a future release.
from t-display-s3.
I have submitted a pull request to the TFT_eSPI author.
Bodmer/TFT_eSPI#2296
from t-display-s3.
My bigger beef is that the directions have you (potentially) replace several standard Arduino libraries with the particular version Lilygo's developer used, which in many cases is much older than the current version. In most cases, the Tips should just have you make sure the latest versions are installed, using the Arduino Library Manager.
The unpleasant exception I have found is that there have been nonstandard modifications made to the TFT_eSPI library, which is also used by many other Lilygo boards. All you should ever have to do to configure TFT_eSPI is uncomment the correct setup file in User_Setup_Select.h, or possibly create a new Setupnnn_xxxxxx.h file in the User_Setups folder and add a line for it in User_Setup.h if a suitable setup does not already exist. This technique works for just about every other Lilygo board, but there appear to have been additional code changes made to the TFT_eSPI library in the T-DisplayS3 repository. This is unacceptable, as it creates conflicts when you're developing for multiple board types and makes it impossible to stay current with the latest official copy of the library. If these changes are really necessary and not just the result of a lack of understanding, Lilygo should make them on the latest official version of TFT_eSPI and then submit them as a PR to the library's maintainer.
from t-display-s3.
https://github.com/Xinyuan-LilyGO/T-Display-S3/blob/main/lib/TFT_eSPI/micky_commit.patch
Thank you - I will apply the patches to the latest official TFT_eSPI and see how that works.
If it checks out, why not submit it as a pull request to the author of TFT_eSPI?
I have successfully merged Micky's patch with the latest official TFT_eSPI (version 2.4.79). Several differences from Micky's patch were necessary:
- TFT_Drivers/ST7789_init.h should NOT be modified, as this breaks any user config where TFT_INVERSION_ON was not explicitly specified
- User_Setup.h does not need to be modified when User_Setup_Select.h is present, so I have omitted it from the patch
- in User_Setups/TFT_eSPI_ESP32_S3.h, the name of the macro for the clear mask had to be changed to be consistent with changes the library owner had made
- I created a new user setup file (User_Setups/User_Setup151_ST7789_TDisplay_S3.h) specifically for this board so that the patch would not break any other boards that were already using User_Setups/Setup24_ST7789.h
- Because of a change in the library owner's code, #define TFT_RGB_ORDER TFT_BGR was added to User_Setups/User_Setup151_ST7789_TDisplay_S3.h.
Here is a zip of my final patch. It is no longer necessary to completely overwrite the official library in your libraries folder. Instead, these files can just be copied on top of the official version 2.4.79 with no other changes necessary:
TFT_eSPI - T-DisplayS3 patch.zip
My patch files also include updated User_SetupNNN files for the original T-DIsplay and the T-Display-RP2040. If you have either of these boards, you only need to add these two files to the User_Setups folder and update User_Setup_Select.h in the official library.
from t-display-s3.
The patch pull request has been applied to this TFT_eSPI master branch:
https://github.com/Bodmer/TFT_eSPI/tree/T-Display-S3
Please test before I merge into the master branch as I do not have one of these boards.
from t-display-s3.
The patch pull request has been applied to this TFT_eSPI master branch:
https://github.com/Bodmer/TFT_eSPI/tree/T-Display-S3
Please test before I merge into the master branch as I do not have one of these boards.
I used the library in this link with the alphaBlend_Test example and the example in the link below
carry out testing.
https://github.com/Xinyuan-LilyGO/T-Display-S3/blob/main/example/tft/tft.ino#L21
works fine.
I suggest adding the following initialization commands to this model and using macros to control whether to enable or disable, sometimes it will make the screen display better.
T-Display-S3/example/tft/tft.ino
Line 21 in f155cb3
from t-display-s3.
My bigger beef is that the directions have you (potentially) replace several standard Arduino libraries with the particular version Lilygo's developer used, which in many cases is much older than the current version. In most cases, the Tips should just have you make sure the latest versions are installed, using the Arduino Library Manager.
The unpleasant exception I have found is that there have been nonstandard modifications made to the TFT_eSPI library, which is also used by many other Lilygo boards. All you should ever have to do to configure TFT_eSPI is uncomment the correct setup file in User_Setup_Select.h, or possibly create a new Setupnnn_xxxxxx.h file in the User_Setups folder and add a line for it in User_Setup.h if a suitable setup does not already exist. This technique works for just about every other Lilygo board, but there appear to have been additional code changes made to the TFT_eSPI library in the T-DisplayS3 repository. This is unacceptable, as it creates conflicts when you're developing for multiple board types and makes it impossible to stay current with the latest official copy of the library. If these changes are really necessary and not just the result of a lack of understanding, Lilygo should make them on the latest official version of TFT_eSPI and then submit them as a PR to the library's maintainer.
The I8080 interface of the TFT_eSPI library to the ESP32S3 chip is driven by software simulation. The library itself uses register operations for speed. In fact, the GPIO register width of ESP32S3 is only 32 bits, and one register is not enough to allocate more than 40 pins. So the gpio control register of ESP32S3 has two groups. In TFT_eSPI, it only takes effect on the low pin registers. So I had to modify the driver inside the library to support high pins.
from t-display-s3.
At the same time, I will place the modified places in the TFT_eSPI directory in the form of patches. You can use this patch to supplement the new version TFT_eSPI.
from t-display-s3.
https://github.com/Xinyuan-LilyGO/T-Display-S3/blob/main/lib/TFT_eSPI/micky_commit.patch
from t-display-s3.
https://github.com/Xinyuan-LilyGO/T-Display-S3/blob/main/lib/TFT_eSPI/micky_commit.patch
Thank you - I will apply the patches to the latest official TFT_eSPI and see how that works.
If it checks out, why not submit it as a pull request to the author of TFT_eSPI?
from t-display-s3.
Shouldn't we work with the TFT_eSPI author to make changes for this board? It would not affect other existing users of TFT_eSPI, right? It only takes effect with TFT_DATA_PIN_OFFSET_EN build_flags, correct?
The problem I am having is, I have a project using source I didnt write, and it dynamically is pulling the latest TFT_eSPI from the web, and I cannot seem to "patch" anything locally to take effect. Even if I could... this patch should be in the official lib, otherwise, to use t-display-s3 is very "hacky".
from t-display-s3.
Thank you Bratoff for posting this fix. I was pulling my hair for days after updating TFT_ESPI to version 4.79 on IDE 2.03. The screen is working once again.
I agree with OP TeaStainGit regarding the tips section needing improvements. They have added useful information in the past couple of months, but beginners like me could use a bit more hand holding during set up.Of course, this has to do with the TFT_ESP Lib adaptation for this board as well.
from t-display-s3.
Thank you for all the work you've done to make these great little boards more accessible.
from t-display-s3.
from t-display-s3.
I have submitted a pull request to the TFT_eSPI author. Bodmer/TFT_eSPI#2296
Did that patch include updates that @bratoff made? And to @Bodmer 's question about testing... we can test if it works with the T-Display-S3 board, but how can we be sure other boards don't break?
from t-display-s3.
The master library of TFT_eSPI has been updated to include support for 8 bit parallel bus using high (>31) GPIO numbers.
All display data bits (D0-7) must use either high (>=32) or low (<=31) processor GPIO numbers since a single register write is used to output all data bits at the same time.
from t-display-s3.
Other than uncommenting line 131
#include <User_Setups/Setup206_LilyGo_T_Display_S3.h>
is there anything else. The text is all over the pace in a T3
I downloaded the zip file from github as the Arduino version is old.
from t-display-s3.
Quick note to confirm the new TFT_ESPI library version 2.50 works nicely with T Display S3 using the new user selected profile ID 206 for 8 bit parallel display on Arduino IDE 2.03/Windows 10. Thank you Bodmer!
from t-display-s3.
I tried to run with TFT_ESPI v2.50 but I get a garbled or offset display. I uncommented #include <User_Setups/Setup206_LilyGo_T_Display_S3.h>
in User_Setup_Select.h
@ElectricDream5 did you do anything else?
from t-display-s3.
Did you comment out the default setup line like this:
//#include <User_Setup.h>
from t-display-s3.
That helped, thanks.
from t-display-s3.
Related Issues (20)
- Trying to use SD card for images HOT 2
- New T-Display S3 - WIFI 5G not working HOT 1
- t-display-s3-full.stp corrupt file HOT 1
- Query regarding voltage input at C-port (VERSION_20200811) HOT 1
- periodically resynchronise the internal Real time clock HOT 2
- Detecting charging state HOT 3
- Using the PCBDesignClock example compiles but there is not enough memory on device to run? HOT 9
- Max power allowed on the USB-C port HOT 5
- Detecting USB Power HOT 3
- T-display-s3
- Help identify the oscillator on the board HOT 3
- ESP version 3.0.2 HOT 1
- SPI Speed & SPI Mode HOT 2
- Lilygo T-Display S3 Touch - Unable to mount filesystem HOT 2
- T-DISPLAY-S3 PlatformIO and framework ESP-IDF monitor doesn't work HOT 8
- External antenna HOT 1
- How to make it as an arduino IDE library HOT 1
- Nerd Miner Flashen HOT 1
- Output voltage pins 5V, 3.3V, 3V HOT 2
- How to use GPIO43 as Input HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from t-display-s3.