Recommendations for 10" TFT Display with touchscreen for Teensy 4.1

DJETH

Active member
I want to get a ~10" display with touchscreen that will work with a Teensy 4.1. It must have a library that works with the 4.1 and is reasonably easy to use. I am NOT a programmer (but continually learn) and have above BASIC knowledge using the Arduino IDE and can do intermediate hardware tasks. I am learning programming and the hardware as a hobby apart from my full time job. I am about to complete a small project using a couple of 4.1's with 4 LCD character 20X4 displays and would like to stick to that microprocessor. I am developing a plan for this project but I want to play with the display to make sure I can get it to perform the tasks. The monitor will be part of a larger project that will monitor temperatures, movements (we have 10 motion sensors around the property), water well pressure, water well leaks, freezer temperatures (we have two in our shop that store vegetables from our garden), chicken coop temperature, lights and heater, shop door opened or closed, ECT... You get the point... I want to be able press a button on the screen an have it display all the items monitored/controlled in the shop and another button to see the chicken coop...ect... again you get the point...

My wish list...
Whatever display is recommended I would like to know it has been done before So I don't have to find out 1/2 way through it can't be done without major recoding... That I can't do...
1024X600 16 bit would work just fine I think 24s bit would possibly be more than I need.
It can be SPI or Parallel but not I2C. If the touchscreen is I2C that is fine.
the teensy 4.1 will only do the display tasks - I will connect another 4.1 to send it the data from all the other 4.1s around the property.
I would like it to have mounting holes to make it easier to mount in/on a plastic box or piece of wood. It will hang on our wall or sit on a shelf.
voltage - any
my understanding some display manufactures have a way make templates with a PC and to store these on the display SD card - this would be nice but not mandatory.
I have seen some displays with a shield that works with one of the Arduino boards (usually a Mega or Due. If I can figure out what pins they use and the library would work on the Teensy I could possibly make a circuit board that goes where the Arduino board would plug in and wire in the teensy. Probably not the best solution but maybe someone here has already done it.
My budget is $200.00 for the display. I already have the teensy 4.1's

Thanks, DJETH
 
There are a few threads on this forum that are related to the ER-TFTM101-1 10.1" display as stated above by @thebigg. The most recent of them is here. Me and a few of the other members have been working on my RA8876 driver for the T4.1 and MicroMod. The best one to use is composed of three libraries:
https://github.com/wwatson4506/TeensyRA8876-GFX-Common - This is the common graphics library that is used by the following two libraries.
https://github.com/wwatson4506/TeensyRA8876-8080 - This is the 8080 parallel driver for the RA8876. It is capable of doing 8-bit bus and 16-bit bus comms with the RA8876 on the T4.1 Teensy. Async mode is also avialable. Be aware that in 16-bit mode with CTS the RA8876 uses quite a lot of the T4.1's pins.
https://github.com/wwatson4506/TeensyRA8876-SPI - This is the SPI driver for the RA8876. It is slower than the 8080 parallel version but uses less of the T4.1's pins.
I have an initial CTS driver for the ER-TFTM101-1 10.1" touch screen based on the Goodix GT9271 controller that is adapted from the "arduino-goodix" library. There is one working example in this library:
https://github.com/wwatson4506/Arduino-goodix-GT9271/tree/main
All of the four libraries are considered to be work in progress and still need more documentation. There are several example sketches that demonstrate many of the libraries capabilities. Hopefully this might be something you are looking for...
 
Note sure what update rate you require for your display, but you could look at the EVE4 range of intelligent controllers. These support smaller displays plus larger 5", 7", 10.1" and 12" displays via SPI at 60Hz frame rate and support touch. Teensy 4 driver and example are available, I use Rudolphs library https://github.com/RudolphRiedel/FT800-FT813
 
Turby,

Thanks for your reply. I looked at your recommendation (Rudolph's Library) and it looks like the code that works for the T4.1 (including the Arduinos) is not in the Arduino IDE .ino format. The example codes provided use PlatformIO IDE. I'm not ready to use another IDE quite yet. Let me know if I missed something. I did go to several of the links to displays that he provided and this will give me more to research. As for the update rate that I will need. not actually sure yet because I have not tried one yet. My philosophy is to go as fast as you can afford in resources (time and money)... or something like that... well you get the point.

thebigg and wwatson,

Thanks for your input. I browsed the ER-TFTM101-1 at buydisplay.com and they have a lot of information, data sheets, ect... on that page. I also see they offer an Arduino shield for the same display and have the Arduino code available. The best I can tell from the schematic the shield uses the parallel data going to the display and the Arduino board controls those parallel lines. So If I wanted to make a T4.1 work I could adapt it to where the Arduino board connects or remove the shield and use the parallel inputs. if I do remove the shield I will loose the SD card and maybe the font chip which I may have to have... Not sure. I downloaded their code and it compiled with a couple of handful of warnings. I also downloaded your code, opened gauges (8080 file) and only got one warning from the common file.

When you buy the display how do you know which display chip you will get? The RA8876 or the LT7683?
Will your drivers have support for both chips?

for the price of this display ER-TFTM101-1 I can get two. Which two? Recommendations appreciated...

1. Parallel with SD card, extra font chip (ER3304-1), CTS and 5 volts - T4.1 16bit parallel will be used mainly for the display as stated above wont have may pins left...

2. SPI 4 wire with SD card, extra font chip (ER3304-1), CTS and 5 volts.

3. Arduino Shield version - leaning towards getting at least one of these.

I appreciate your hard work making these libraries. Without programmers like you I would likely just stick with the character displays. If I can do anything to help let me know.

Thanks,
DJETH
 
When you buy the display how do you know which display chip you will get? The RA8876 or the LT7683?
Will your drivers have support for both chips?
The chips are (supposedly) 100% compatible. The LT7683 manual appears to be copy of the RA8876

for the price of this display ER-TFTM101-1 I can get two. Which two? Recommendations appreciated...

1. Parallel with SD card, extra font chip (ER3304-1), CTS and 5 volts - T4.1 16bit parallel will be used mainly for the display as stated above wont have may pins left...

2. SPI 4 wire with SD card, extra font chip (ER3304-1), CTS and 5 volts.
The difference between 1 and 2 is just solder jumpers on the board. You can easily switch between the 2 using a soldering iron and the display datasheet.
 
If you download this interfacing guide and look in the lower left corner of each section it lists which jumpers to open or close for each type of interface...
 
I understand now. Thank you both for your help... I am ordering shortly.
On the 16 bit interface there are only eight 10K pull up resistors on DB0 - DB7. Any Idea why not on the other 8 data lines DB8 - DB15? Maybe internal pullups on those?
 
I understand now. Thank you both for your help... I am ordering shortly.
On the 16 bit interface there are only eight 10K pull up resistors on DB0 - DB7. Any Idea why not on the other 8 data lines DB8 - DB15? Maybe internal pullups on those?
In our application with the T4.1 those resistors are not needed or used. I did try connecting them and it did not make any difference in operation. Possibly they were needed for use with the STC12LE5A60S2 MCU...
 
Understood... I have two displays on the way... Checkout was a little challenge but got through it... Thanks again for your help.
 
@DJETH - Just as a heads up, I wired up a T41 to a ER-TFTM101-1 for testing purposes and ran through all of the examples. I have found and fixed some bugs in the driver code for 8080 mode. I also made several changes and updates to the examples. I would suggest downloading the latest version of the libraries. Be aware that DMA in 8080 mode on the T41 is not available. Async mode is available...
 
Thank You for your hard work and making the libraries available. I will set up the display for the 8080 mode first and see if it is over my head. Async Mode... got it... Probably would never figure that out. Thanks again...
 
I am working on wiring up my display - 8080 16 bit mode and there are two references to wiring the T4.1 pins to the display. first is from the readme.md and the second is from the RA8876_t41_p_default_pins.h file. I started to wire using the readme but some of the pins are under the T4.1 which is not to big of a problem except Connection D4 pin 44 would go to pin 40 which is ground on the connector (I am using the 40 pin header). So maybe i am missing something.

The RA8876_t41_p_default_pins.h file shows the 16 parallel pins which when I connected my Data logger to these pins all the pins except 22 (D8) and 23 (D9) show some sort of pulsed data running the ILI_Gfx_font_test sketch. so maybe an issue with 22 and 23.

I would like to verify:
T4.1 Display
- RD 37 _______________> 05
- WR 36 _______________> 06
- CS 11 _______________> 07
- RS 13 _______________> 08

One other question...
after the 16 bits are set... is it the RD pin 5 on the display (enable/Read Enable) that gets pulled low to accept the16 bits or is it the WR pin 06 on the display (write/read write)? I looked at the timing chart on page 30 of the RA8876 manual but it only makes partial sense to me.

Thanks DJETH

/////////////////////////////////////////////////////////////////////////////////////////

Readme.md
### Teensy 4.1 <________> RA8876

PIN PIN
*********************************
Use These 8 data lines for 8-bit data bus.
- D0 40 _______________> 19
- D1 41 _______________> 18
- D2 42 _______________> 14
- D3 43 _______________> 15
- D4 44 _______________> 40
- D5 45 _______________> 41
- D6 06 _______________> 17
- D7 09 _______________> 16
*********************************
Use These 8 data lines for 16-bit data bus.
- D8 32 _______________> 22
- D9 47 _______________> 23
- D10 48 _______________> 20
- D11 49 _______________> 21
- D12 08 _______________> 38
- D13 07 _______________> 39
- D14 50 _______________> 26
- D15 51 _______________> 27
*********************************
- RD 37 _______________> 05
- WR 36 _______________> 06
- CS 11 _______________> 07
- RS 13 _______________> 08
- RST 12 _______________> 11
- BL 3.3V (BACKLITE) ____> 14
- TFT 5V ________________> 3,4,37,38
- GND ________________> 1,2,13,31,39,40



RA8876_t41_p_default_pins.h
#if defined(ARDUINO_TEENSY41)
// FlexIO pins: data: 19 18 14 15 40 41 17 16 WR:36 RD:37
// FlexIO3
#define DISPLAY_WR 36
#define DISPLAY_RD 37

#define DISPLAY_D0 19 // FlexIO3:0 D0
#define DISPLAY_D1 18 // FlexIO3:1 |
#define DISPLAY_D2 14 // FlexIO3:2 |
#define DISPLAY_D3 15 // FlexIO3:3 |
#define DISPLAY_D4 40 // FlexIO3:4 |
#define DISPLAY_D5 41 // FlexIO3:5 |
#define DISPLAY_D6 17 // FlexIO3:6 |
#define DISPLAY_D7 16 // FlexIO3:7 D7

#define DISPLAY_D8 22 // FlexIO3:8 D8
#define DISPLAY_D9 23 // FlexIO3:9 |
#define DISPLAY_D10 20 // FlexIO3:10 |
#define DISPLAY_D11 21 // FlexIO3:11 |
#define DISPLAY_D12 38 // FlexIO3:12 |
#define DISPLAY_D13 39 // FlexIO3:13 |
#define DISPLAY_D14 26 // FlexIO3:14 |
#define DISPLAY_D15 27 // FlexIO3:15 D15
 
This is the 8080 interface? just /WR to write (command or data), just /RD to read data. D/C has to be correct too. However this chip seems to have separate address and data busses, so no D/C pin?
I think the diagram that confuses is because it is two diagrams superposed. There is one trace for either /WR and /RD, since they have the same timing requirements - its a confusing way to document. It doing a write that trace means /WR and /RD stays inactive, and vice versa. Well that's my take. Try it and see?
 
There are DC pins...
Which pins are valid for T4.1
If I run my example sketch FlexIO_pin_list on a T4.1 we see:
Code:
Teensy 4.1 FlexIO pin list

FlexIO1:
    Pin Order: Pin:flex
         2:4 3:5 4:6 5:8 33:7 49:13 50:14 52:12 54:15
    Flex Pin Order: flex:in
         4:2 5:3 6:4 7:33 8:5 12:52 13:49 14:50 15:54
FlexIO2:
    Pin Order: Pin:flex
         6:10 7:17 8:16 9:11 10:0 11:2 12:1 13:3 32:12 34:29 35:28 36:18 37:19
    Flex Pin Order: flex:in
         0:10 1:12 2:11 3:13 10:6 11:9 12:32 16:8 17:7 18:36 19:37 28:35 29:34
FlexIO3:
    Pin Order: Pin:flex
         7:17 8:16 14:2 15:3 16:7 17:6 18:1 19:0 20:10 21:11 22:8 23:9 26:14 27:15 34:29 35:28 36:18 37:19 38:12 39:13 40:4 41:5
    Flex Pin Order: flex:in
         0:19 1:18 2:14 3:15 4:40 5:41 6:17 7:16 8:22 9:23 10:20 11:21 12:38 13:39 14:26 15:27 16:8 17:7 18:36 19:37 28:35 29:34
Flex IO Pin ranges:
    FlexIO1: 4-8, 12-15
    FlexIO2: 0-3, 10-12, 16-19, 28-29
    FlexIO3: 0-19, 28-29

Bounds check test:
    FlexIO1  IOToFlex(55):255 IOToFlex(255):255 FlexToIO(16):255 FlexToIO(255):255
    FlexIO2  IOToFlex(55):255 IOToFlex(255):255 FlexToIO(32):255 FlexToIO(255):255
    FlexIO3  IOToFlex(55):255 IOToFlex(255):255 FlexToIO(32):255 FlexToIO(255):255

We see that only FlexIO only has 8 (and 16) Flexio pins in consequence.
0:19 1:18 2:14 3:15 4:40 5:41 6:17 7:16 8:22 9:23 10:20 11:21 12:38 13:39 14:26 15:27
i.e: the 19, 18, 14, 15, ...., 26, 27

The RD and WR pins, also need to be FlexIO pins on the same Flex IO:
From the above list they can be: 8, 7, 36, 37, 35, 34.

The CS, DC, Reset pins can be any digital pins:
Note: the default pins file, I had setup was to handle several different configurations. At the time several of the example sketches
were pretty messy as to try to handle testing on T4.1, T4, Micromod, Dev boards, ...

So @wwatson (the owner of the libraries) cleaned them up. And created a new file RA8876_config_8080.h
which has one configuration, mine is edited, currently to run on my DB5 shield...

So most (maybe all of the example sketches have things in them like:
Code:
#include <Adafruit_GFX.h>
#include "RA8876_Config_8080.h"
//************************************ OpenSans24 FONT NOT WORKING SPI MODE ******************************
#include <RA8876_t41_p.h>

RA8876_t41_p tft = RA8876_t41_p(RA8876_8080_DC,RA8876_8080_CS,RA8876_8080_RESET);

Also in these sketches he has:
Code:
  // Set 8/16bit mode
  tft.setBusWidth(USE_8080_8_BIT_MODE);
  // DB5.0 WR pin, RD pin, D0 pin.
  tft.setFlexIOPins(RA8876_WR,RA8876_RD,RA8876_D0);
  tft.begin(BUS_SPEED); //
So in this case he has it setting it for 8 bit mode: USE_8080_8_BIT_MODE
(Wonder if that setting 8 or 16 should be in config file?)

The next call, sets (Updates) the FlexIO pins to the ones in his config file. Note: this version of the call MAY require my updated
version of the FlexIO library (up on github\kurte). By shorthand, it computes the rest of the FlexIO pins, given the
bus size.

There is also a long hand version of the call, where you specify the above pins, continuing to D1 D2, D3... D7 (D8, ... D15)

Without this call, the constructor for the RA8876_t41_p class defaults all of these flexIO, to those contained within
the RA8876_t41_p_default_pins.h
Code:
RA8876_t41_p::RA8876_t41_p(const uint8_t DCp, const uint8_t CSp, const uint8_t RSTp)
    : _dc(DCp), _cs(CSp), _rst(RSTp),
      _data_pins{DISPLAY_D0, DISPLAY_D1, DISPLAY_D2, DISPLAY_D3, DISPLAY_D4, DISPLAY_D5, DISPLAY_D6, DISPLAY_D7,
#if defined(DISPLAY_D8)
      DISPLAY_D8, DISPLAY_D9, DISPLAY_D10, DISPLAY_D11, DISPLAY_D12, DISPLAY_D13, DISPLAY_D14, DISPLAY_D15},
#else
      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
#endif    
      _wr_pin(DISPLAY_WR), _rd_pin(DISPLAY_RD)
{
    RA8876_GFX(BUS_WIDTH);
}
 
Sorry for the late reply, @DJETH - You might not have the latest updated versions of the libraries. I would update them. I updated the config file and fixed a few bugs in them. Here is the updated config file:
Code:
/* RA8876_Config.h
 A file to place user defines and configs.
*/

#ifndef RA8876_CONFIG_H
#define RA8876_CONFIG_H

#define USE_8080_8_BIT_MODE 8
#define USE_8080_16_BIT_MODE 16
#define BUS_SPEED 20 //Available settings 2,4,8,12,20,24,30,40,60,120

//External backlight control connected to this Arduino pin
// Otherwise 3.3v
//#define BACKLITE 5 or change to your pin choice

#if defined(ARDUINO_TEENSY41)
// Hardware defines T4.1
#define RA8876_8080_CS 11
#define RA8876_8080_DC 13
#define RA8876_8080_RESET 12
#define RA8876_D0 19
#define RA8876_RD 37    // FlexIO3:19: RD
#define RA8876_WR 36    // FlexIO3:18: WR

#elif defined(ARDUINO_TEENSY_DEVBRD5)
// Hardware defines DB5 board and Kurt's shield
#define RA8876_8080_CS 53
#define RA8876_8080_RESET 54
#define RA8876_8080_DC 55
#define RA8876_D0 40
#define BACKLITE 29
#define RA8876_RD 52    // FlexIO3:10: RD
#define RA8876_WR 56    // FlexIO3:11 WR
#endif

// Uncomment to use FT5206 touch.
#define USE_FT5206_TOUCH

#endif // RA8876_CONFIG_H

In the T41 section you will see that DC is pin 13, CS is pin 11 and RESET is pin 12. Note that there are two different boards defined in the config file each with there own pin definitions.
@KurtE:
(Wonder if that setting 8 or 16 should be in config file?)
I did put them in the config file :)
I also removed this message:
//************************************ OpenSans24 FONT NOT WORKING SPI MODE ******************************
It's time for me to add more info to the docs now that the libraries have stabilized...
 
I did put them in the config file :)
Thanks,

I saw that these are defined:
Code:
#define USE_8080_8_BIT_MODE 8
#define USE_8080_16_BIT_MODE 16

What I was wondering is if you are building for a couple different setups, if you want:
Code:
// Set 8/16bit mode
  tft.setBusWidth(USE_8080_8_BIT_MODE);
  // DB5.0 WR pin, RD pin, D0 pin.
  tft.setFlexIOPins(RA8876_WR,RA8876_RD,RA8876_D0);
  tft.begin(BUS_SPEED); //

As if I am using a 16 bit buss, I must edit all of the sketches, to change the 8 to 16
Or maybe you want some other define in your config file like:
Code:
#define RA8876_8080_BUS_WIDTH 16

Which is used in the call to: setBusWidth

Documentation (and maybe examples): might mention somewhere, that the original default pins.h was setup to allow you to
do most of this. That is without the call to setFlexIOPins, the Flexio will configured for 8 bits, with a standard set of pins...
 
Thanks,

I saw that these are defined:
Code:
#define USE_8080_8_BIT_MODE 8
#define USE_8080_16_BIT_MODE 16

What I was wondering is if you are building for a couple different setups, if you want:
Code:
// Set 8/16bit mode
  tft.setBusWidth(USE_8080_8_BIT_MODE);
  // DB5.0 WR pin, RD pin, D0 pin.
  tft.setFlexIOPins(RA8876_WR,RA8876_RD,RA8876_D0);
  tft.begin(BUS_SPEED); //

As if I am using a 16 bit buss, I must edit all of the sketches, to change the 8 to 16
Or maybe you want some other define in your config file like:
Code:
#define RA8876_8080_BUS_WIDTH 16

Which is used in the call to: setBusWidth

Documentation (and maybe examples): might mention somewhere, that the original default pins.h was setup to allow you to
do most of this. That is without the call to setFlexIOPins, the Flexio will configured for 8 bits, with a standard set of pins...
Sounds good. Just noticed that the pinouts for the T41 and DB5 are wrong. I need to fix that first...
 
@DJETH - Just noticed that the pinouts are incorrect.
Here is the corrected pinout:
Code:
RA8876 <___________> Teensy 4.1

      PIN                     PIN
*********************************
Use These 8 data lines for 8-bit data bus.
- D0  15 _______________> 19
- D1  16 _______________> 18
- D2  17 _______________> 14
- D3  18 _______________> 15
- D4  19 _______________> 40
- D5  20 _______________> 41
- D6  21 _______________> 17
- D7  22 _______________> 16
*********************************
Use These 8 data lines for 16-bit data bus.
- D8  23 _______________> 22 
- D9  24 _______________> 23
- D10 25 _______________> 20
- D11 26 _______________> 21
- D12 27 _______________> 38
- D13 28 _______________> 39
- D14 29 _______________> 26
- D15 30 _______________> 27
*********************************
- RD  37 _______________> 05
- WR  36 _______________> 06
- CS  11 _______________> 07
- RS  13 _______________> 08
- RST 12 _______________> 11
- BL  3.3V (BACKLITE) ____> 14 or  I/O pin.
- TFT 5V ________________> 3,4,37,38
- GND    ________________> 1,2,13,31,39,40
Sorry for the confusion :( I will correct the docs in the library as well...
 
WOW... Extremely Fast responses... I have a lot to try and absorb from posts above.

MarkT... Thanks for the info. I will keep at it...

Kurte and WWatson... Thank you for your clarification. I did try both the 8 bit and 16 bit but only changed it in the ILI_Gfx_font_test sketch so it may not have worked correctly through the FlexIO. I am going to start by deleting and then updating the Flexio and Wwatson Libraires so I am sure to have the latest versions.

Also, I appreciate you getting the diagram clarified. I will be using the 8080 16 bit mode so do I need to go into other files and set them to 16 bit as KurtE stated or just the the sketch I am testing with?
 
I worked on this a little last night. I believe these pins are reversed in the schematic .

RA8876 <___________> Teensy 4.1

PIN PIN
*********************************
- RD 37 _______________> 05
- WR 36 _______________> 06
- CS 11 _______________> 07
- RS 13 _______________> 08
- RST 12 _______________> 11

I did try setting the parallel to 16 bit in the .cpp file (I can not remember the file name at the moment) but I only get 8 bits output... But so l am clear I do NOT have the display connected yet. If I remember correctly the initialization setup for the display is 8 bit so if the T4.1 is looking for a response from the display it won't get one. I will play with it more later...
 
I worked on this a little last night. I believe these pins are reversed in the schematic .

RA8876 <___________> Teensy 4.1

PIN PIN
*********************************
- RD 37 _______________> 05
- WR 36 _______________> 06
- CS 11 _______________> 07
- RS 13 _______________> 08
- RST 12 _______________> 11

I did try setting the parallel to 16 bit in the .cpp file (I can not remember the file name at the moment) but I only get 8 bits output... But so l am clear I do NOT have the display connected yet. If I remember correctly the initialization setup for the display is 8 bit so if the T4.1 is looking for a response from the display it won't get one. I will play with it more later...
Thanks, what was actually wrong was the labels were swapped. "RA8876 <___________> Teensy 4.1" should be "Teensy 4.1 <___________> RA8876. Fixed.

To change to 16Bit buss you only have to set:
Code:
// Select 8 or 16 for your bus width.
#define RA8876_8080_BUS_WIDTH 8
to:
Code:
// Select 8 or 16 for your bus width.
#define RA8876_8080_BUS_WIDTH 16
in "RA8876_Config_8080.h".
Or you can set it directly in the sketch:
Code:
  // Set 8/16bit bus mode. Default is 8bit bus mode.
  tft.setBusWidth(RA8876_8080_BUS_WIDTH); // RA8876_8080_BUS_WIDTH is defined in
                                          // src/RA8876_Config_8080.h.
or
  tft.setBusWidth(8);  // Set 8Bit buss width
or
  tft.setBusWidth(16);  // Set 16Bit buss width

Again sorry for the confusion and frustration...

EDIT: You can wire it up with 16Bit buss and still use 8Bit buss mode. I will work with in both modes.
 
All,

I need some more help... Please remember I am not a programmer or hardware engineer... Just a hobbyist.

I have the screen turning on using the ILI_GFX_FontTest.ino in 8 bit mode - tft.setBusWidth(8) and running 20MHZ tft.begin(20)

I cannot get the T4.1 and the display to go to 16 bit mode. I changed tft.setBusWidth(16) in the ILI_GFX_FontTest.ino and also in the RA8876_Config_8080.h file but I never get any data on channels 8-15 of my logic controller (see attached pictures). I added some simple code in the loop to do my testing:
void loop() {
tft.setTextCursor(480,300);
tft.println("A");
tft.setTextCursor(525,300);
tft.println("B");
delay(1000);
tft.setTextCursor(480,300);
tft.println("B");
tft.setTextCursor(525,300);
tft.println("A");
delay(1000);

the pictures of the display has two rectangles near the middle of the screen which switch from A to B then B to A with a 1 second delay between. The Data logger picture shows one of the captures when the letters switch around 50us. As you can see there is no action in the lower 8 channels. I also checked a couple of the lower channels with my scope and nothing there except the same noise the other channels have. The two red circles in the picture is noise likely produced from my ribbon cable and wiring under my board. I do have 10K pullup resistors and 330pf decoupling (may be using the wrong term) caps on the 16 data lines and 330pf decoupling caps on the RD WR CS and RS Lines. The caps removed quiet a bit of the noise but lock me into using 20 MHZ - 40 MHZ settings.

I have already decided to make another setup without the ribbon cable but I don't want to do it yet till I resolve the 8/16 bit problem first.

Some Notes and Observations:

When I set the ILI_GFX_FontTest.ino and RA8876_Config_8080.h to 16 bit the display still starts and works correctly but no 16bit data depth

I did go into the RA8876_t41_p.cpp file and on lines 87 I changed
#define BUS_WIDTH 8 to
#define BUS_WIDTH 16 - No change

I did mess with the constructor in lines 89-96 so it included:
DISPLAY_D8, DISPLAY_D9, DISPLAY_D10, DISPLAY_D11, DISPLAY_D12, DISPLAY_D13, DISPLAY_D14, DISPLAY_D15}, in the constructor by removing the #if defined(DISPLAY_D8) verbage so there was not 8 bit option...
But to be honest I am messing with things I don't understand and it did not work anyway. So I deleted the file and restored it from a copy... So now unchanged

I also tried the piptest.ino and it also runs on 8 bit but when changed to 16bit is it 8 bit only

I took a new teensy4.1 and put it on a bread board (NOT connected to the display). then ran the same programs and it is also 8 bit only. The data logger capture was clean and has no noise. The scope verifies this. I am not sure if the program looks for a response from the display and defaults to 8 bit because there is no response...

I did add a couple of delays to make it easier to see the startup and do data captures. Removing them makes no difference. I did not modify any other code...
Serial.begin(115200);
while (!Serial && millis() < 1000) {} //wait for Serial Monitor
delay(5000);
// Set 8/16bit bus mode. Default is 8bit bus mode.
tft.setBusWidth(16); // RA8876_8080_BUS_WIDTH is defined in
// src/RA8876_Config_8080.h.
tft.begin(20); // RA8876_8080_BUS_WIDTH is defined in
// src/RA8876_Config_8080.h. Default is 20MHz.
delay(5000);

I do have a 5volt 3 amp supply on my board but it is hard to see under the data logger wires.

Any help/suggestions would be appreciated...
 

Attachments

  • Screenshot 2024-09-14 184557.png
    Screenshot 2024-09-14 184557.png
    75 KB · Views: 40
  • 1000006236Small.jpg
    1000006236Small.jpg
    227.7 KB · Views: 39
  • 1000006238Small.jpg
    1000006238Small.jpg
    283.2 KB · Views: 41
Back
Top