Again could not tell much from your pictures as not sure what the 2.4" display is? I have their 2.2" which does not have touch and their 2.8" one which does... And I don't see a picture now that shows the Teensy side, that I can verify which pins are connected to your displays.
Last night when I read your post you were asking what a Logic Analyzer is. It is typically it is a test hardware. Mine are from Saleae:
https://www.saleae.com/
For other types of tests you might want to use an Oscilloscope, which at times I wish I had... Note: there is a sketch to turn a Teensy into a Logic Analyzer which can be used for some things... I have not tried it too much but you can gather some information from it.
Example usages: Yesterday I was testing out adding Async SPI support to the Teensy 2.0. Took me a second to figure out which pins are SPI on it... Then hooked up analyzer and verified that things looked right. Example screen shots. First one shows a complete screen update, you can see that the CS pin is properly asserted through the complete update, plus the DC pin is asserted for the first several bytes:
Then if you zoom into the start update, you can see the actual bytes that were output. I added a couple of timing annotations showing some timings. Like the time to output one byte (1us) which shows then 1mhz, which if you multiply by 8 you will get 8mhz which is the SPI speed I asked for. You see a second annotation showing time between byte outputs of 7.2us so using this method where each byte is output by an Interrupt handler you are actually getting a throughput of about 1.1mhz which is pretty bad!...
Now back on subject... So the displays work. So again I suggest that run some simple test...
Sorry I am somewhat lazy here and dig through your current code, at least until you narrow down the issues. Like still don't have clue if we are talking hardware wiring issue or software issue.
Example run an extract of the touch paint program from the ili9341_t3 library, that maybe does just:
Code:
#include <ILI9341_t3.h>
#define TFT_DC 9
#define TFT_CS 10
#define TFT_RST 7
#define TFT_SCK 13
#define TFT_MISO 12
#define TFT_MOSI 11
ILI9341_t3 tft = ILI9341_t3(TFT_CS, TFT_DC, TFT_RST, TFT_MOSI, TFT_SCK, TFT_MISO);
// Size of the color selection boxes and the paintbrush size
#define BOXSIZE 40
#define PENRADIUS 3
int oldcolor, currentcolor;
void setup(void) {
while (!Serial && (millis() <= 1000));
Serial.begin(9600);
Serial.println(F("Touch Paint!"));
tft.begin();
tft.fillScreen(ILI9341_BLACK);
// make the color selection boxes
tft.fillRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_RED);
tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, ILI9341_YELLOW);
tft.fillRect(BOXSIZE * 2, 0, BOXSIZE, BOXSIZE, ILI9341_GREEN);
tft.fillRect(BOXSIZE * 3, 0, BOXSIZE, BOXSIZE, ILI9341_CYAN);
tft.fillRect(BOXSIZE * 4, 0, BOXSIZE, BOXSIZE, ILI9341_BLUE);
tft.fillRect(BOXSIZE * 5, 0, BOXSIZE, BOXSIZE, ILI9341_MAGENTA);
// select the current color 'red'
tft.drawRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
currentcolor = ILI9341_RED;
}
void loop()
{
delay(250);
}
Warning simple cut and paste and line deletions... So maybe something wrong here, plus you would need to set the appropriate values for the TFT_... values.
Does this show the simple touch paint screen? If not double check wiring and settings... If it does work (again this is using ili9341_t3 library), and your code does not. Then again double check your wring versus what you are passing into your TFT setup... And/Or - modify the above test to use your library and see if it outputs to the screen... If it does and your program does not, well then again verify the values passed in to the constructor and init.
Also double check that you are not trying to use the same IO pins for something else in your program. I have run into times when something does not work, as I had some other debug code that was toggling IO pins... This hit me awhile ago when I was trying out SPI1 on pins 0, 1 and I had debug code in my program that used these pins... I caught some of these by checking the code. Other times I have tried printing out the actual current configuration of what should be the SPI pins...
Something like: Serial.println(CORE_PIN13_CONFIG, HEX);
And then verify for example that pin 13 is actually set to SPI mode (i.e. pin mode 2)... But this takes understanding of how that stuff works...