Teensy 4.0 First Beta Test

Status
Not open for further replies.
I suppose I'll wait for my display units from China - hopefully I followed the right link from Paul. Looks like I have an rPi display … says free returns - in the US so shipping about $4 ...

Funny the ebay text says 'V6.2 version' and 6.3 on silkscreen - like Mike's. I wonder if it might be setup to work right, is rPi SPI at 3v?
 
I suppose I'll wait for my display units from China - hopefully I followed the right link from Paul. Looks like I have an rPi display … says free returns - in the US so shipping about $4 ...

Funny the ebay text says 'V6.2 version' and 6.3 on silkscreen - like Mike's. I wonder if it might be setup to work right, is rPi SPI at 3v?

Yes, the PI is 3.3v.

Here is a pinout of the 20 pin connector:

AFAIK, there are 3 revisions to the pinout:
  • The original Pi had 2 columns of 13 rows of pins;
  • The second revision had the same 2x13 pinout, but they changed the i2c pins (same physical location) from being pin #0 and #1 to pin #2 and #3, and the i2c switched from i2c #0 to i2c #1;
  • The third revision went to 2x20 pins, with the 2x13 pins being the same (other than the i2c pin # change in the original Pi's).

The Pi 2x20 pinout has 8 ground pins, 2 3.3v pins, and 2 5v pins. Just in case, you might need to connect each of the pins, depending on how the device is actually wired.
 
Last edited:
Thanks MichaelM - knowing SPI is 3.3V is promising. I got a link for rPi drivers from the seller - no docs there though to ID the controller Driver is a 1.4 GB RAR file! The sales page did note it uses the same XPT2046 touch controller. It has two CS's and IRQ and shows MISO and MOSI a CLK but no reset. So when Mike/Kurt show a lib that works on T_3.6 I can try it there. Using the driver name I found some links - but none specify the LCD controller #.
 
@defragster - @KurtE

Have had much luck with what I got but I did manage to find a few other implementations and discussions:
1. https://github.com/loboris/ESP32_SPI_MASTER_NODMA_EXAMPLE, found from this link - https://www.esp32.com/viewtopic.php?f=13&t=1683&start=20#p8220
2. https://www.udoo.org/forum/threads/...-for-arduino-uno-r3-board-plug-and-play.7514/
3. https://github.com/avrxml/asf/blob/master/sam/components/display/ili9488/ili9488.c
4. http://www.lcdwiki.com/3.5inch_RPi_Display - the closet thing to my display (at least for connections.

Still no schematic though.
 
Thanks MichaelM - knowing SPI is 3.3V is promising. I got a link for rPi drivers from the seller - no docs there though to ID the controller Driver is a 1.4 GB RAR file! The sales page did note it uses the same XPT2046 touch controller. It has two CS's and IRQ and shows MISO and MOSI a CLK but no reset. So when Mike/Kurt show a lib that works on T_3.6 I can try it there. Using the driver name I found some links - but none specify the LCD controller #.

If I had to guess, I would say the pinouts are probably that same as the Adafruit 3.5" display:
 
@defragster, @mjs513 - As I mentioned, the display is working on my T3.6 using the library that we both mentioned...

However so far it is not working with my edited version of Adafruit ili... The main difference is that he has set the pixel format to 18 bits of input (3 byte per pixel), stating that 16 bit format does not work in SPI 4 wire mode... Maybe he is right? I just downloaded another copy of the ILI9488 document... And again while the 4-line Serial Interface section (Page 121) mentions that available display data formats are: the 1 (1,1,1) byte, 2 (565)byte and 3 (666)byte formats, the sub-sections only describe the 1 byte and 3 byte data...

Also found discussions like: https://www.esp32.com/viewtopic.php?t=1683&start=10
Which again implies they are outputting 3 bytes per pixel...
Comments like:
I've had ILI9488 working on STM32F4. Still no time to check it on ESP32.
Basically, all you have to do is make shure the initialization sequence is correct (always include soft reset (0x01) as the first command + delay 100 ms) and replace in every function which sends 16-bit color (RGB565) with 3-byte color (RGB 6-6-6).
I'll try to test it this week.
Have you checked https://github.com/jaretburkett/ILI9488, it's a good starting point.

So wondering if should move this to different topic (not T4 specific) Or
@Paul - Or you wanting a Frame buffer implementation for this? Needless to say it will take more memory than the ili9341 as twice as many pixels and 3 bytes per pixel.
So buffer on ili9341 is: 153600 bytes, The buffer for this display would be 460800 bytes, which I don't think would fit on this chip...
 
@defragster, @mjs513 - As I mentioned, the display is working on my T3.6 using the library that we both mentioned...

However so far it is not working with my edited version of Adafruit ili... The main difference is that he has set the pixel format to 18 bits of input (3 byte per pixel), stating that 16 bit format does not work in SPI 4 wire mode... Maybe he is right? I just downloaded another copy of the ILI9488 document... And again while the 4-line Serial Interface section (Page 121) mentions that available display data formats are: the 1 (1,1,1) byte, 2 (565)byte and 3 (666)byte formats, the sub-sections only describe the 1 byte and 3 byte data...
...

Hi Kurt
Yeah that's the same as reference 1. From what I also came across they looked like they were limiting it 2 bytes (565 format). The link it esp32 for another init shows both a 9341 partial init and a modification for 9488. Haven't had time to check it out along with the comparisons. Everything I see has it set for 0x55. Even if I change back to 3byte is still does not work with the T4. Don't know if its an SPI transfer issue - later this after noon was going to check it with the T3.6 like you did.

Mike

EDIT: Took a break and loaded up the original example from https://github.com/jaretburkett/ILI9488 on the T3.6. I compiled and loaded no problem. But same thing is happening with my display as with the T4, i.e,, no photons but it runs. Just for reference these are my connections:
Code:
24--GPIO7 --------> TP_CS  --------> 9
26--GPIO8 --------> LCD_CS  --------> 10
22--GPIO25 --------> TP_irq  --------> NC
23--GPIO11 --------> SPI_CLK  --------> 13
21--GPIO9 ---------> SPI_MISO --------> 12
19--GPIO10 ---------> SPI_MOSI  --------> 11

EDIT2: I did find this link that has a schematic for my board and a teardown, https://www.raspberrypi.org/forums/viewtopic.php?f=44&t=124961
 
Last edited:
For what it is worth: I just hooked it up to my T4...

My connections are: Display-T4

1-GND, 2-+3.3v, 21-7, 23-10, 24-13, 25-9, 27-11, 28-12, 29-8

I updated the sketch a little to turn the LED on and to change the pin numbers...
Code:
/***************************************************
  This is our GFX example for the Adafruit ILI9488 Breakout and Shield
  ----> http://www.adafruit.com/products/1651

  Check out the links above for our tutorials and wiring diagrams
  These displays use SPI to communicate, 4 or 5 pins are required to
  interface (RST is optional)
  Adafruit invests time and resources providing this open source code,
  please support Adafruit and open-source hardware by purchasing
  products from Adafruit!

  Written by Limor Fried/Ladyada for Adafruit Industries.
  MIT license, all text above must be included in any redistribution
 ****************************************************/


#include "SPI.h"
#include <Adafruit_GFX.h>
#include <ILI9488.h>

#define TFT_CS         10
#define TFT_DC         9
#define TFT_LED        8
#define TFT_RST        7

// Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC
ILI9488 tft = ILI9488(TFT_CS, TFT_DC, TFT_RST);
// If using the breakout, change pins as desired
//Adafruit_ILI9488 tft = Adafruit_ILI9488(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO);

void setup() {
  Serial.begin(9600);
  Serial.println("ILI9488 Test!");
  pinMode(TFT_LED, OUTPUT);
  digitalWrite(TFT_LED, HIGH);
  tft.begin();

  // read diagnostics (optional but can help debug problems)
  uint8_t x = tft.readcommand8(ILI9488_RDMODE);
  Serial.print("Display Power Mode: 0x"); Serial.println(x, HEX);
  x = tft.readcommand8(ILI9488_RDMADCTL);
  Serial.print("MADCTL Mode: 0x"); Serial.println(x, HEX);
  x = tft.readcommand8(ILI9488_RDPIXFMT);
  Serial.print("Pixel Format: 0x"); Serial.println(x, HEX);
  x = tft.readcommand8(ILI9488_RDIMGFMT);
  Serial.print("Image Format: 0x"); Serial.println(x, HEX);
  x = tft.readcommand8(ILI9488_RDSELFDIAG);
  Serial.print("Self Diagnostic: 0x"); Serial.println(x, HEX);

  Serial.println(F("Benchmark                Time (microseconds)"));

  Serial.print(F("Screen fill              "));
  Serial.println(testFillScreen());
  delay(500);

  Serial.print(F("Text                     "));
  Serial.println(testText());
  delay(3000);

  Serial.print(F("Lines                    "));
  Serial.println(testLines(ILI9488_CYAN));
  delay(500);

  Serial.print(F("Horiz/Vert Lines         "));
  Serial.println(testFastLines(ILI9488_RED, ILI9488_BLUE));
  delay(500);

  Serial.print(F("Rectangles (outline)     "));
  Serial.println(testRects(ILI9488_GREEN));
  delay(500);

  Serial.print(F("Rectangles (filled)      "));
  Serial.println(testFilledRects(ILI9488_YELLOW, ILI9488_MAGENTA));
  delay(500);

  Serial.print(F("Circles (filled)         "));
  Serial.println(testFilledCircles(10, ILI9488_MAGENTA));

  Serial.print(F("Circles (outline)        "));
  Serial.println(testCircles(10, ILI9488_WHITE));
  delay(500);

  Serial.print(F("Triangles (outline)      "));
  Serial.println(testTriangles());
  delay(500);

  Serial.print(F("Triangles (filled)       "));
  Serial.println(testFilledTriangles());
  delay(500);

  Serial.print(F("Rounded rects (outline)  "));
  Serial.println(testRoundRects());
  delay(500);

  Serial.print(F("Rounded rects (filled)   "));
  Serial.println(testFilledRoundRects());
  delay(500);

  Serial.println(F("Done!"));

}


void loop(void) {
  for(uint8_t rotation=0; rotation<4; rotation++) {
    tft.setRotation(rotation);
    testText();
    delay(1000);
  }
}

unsigned long testFillScreen() {
  unsigned long start = micros();
  tft.fillScreen(ILI9488_BLACK);
  tft.fillScreen(ILI9488_RED);
  tft.fillScreen(ILI9488_GREEN);
  tft.fillScreen(ILI9488_BLUE);
  tft.fillScreen(ILI9488_BLACK);
  return micros() - start;
}

unsigned long testText() {
  tft.fillScreen(ILI9488_BLACK);
  unsigned long start = micros();
  tft.setCursor(0, 0);
  tft.setTextColor(ILI9488_WHITE);  tft.setTextSize(1);
  tft.println("Hello World!");
  tft.setTextColor(ILI9488_YELLOW); tft.setTextSize(2);
  tft.println(1234.56);
  tft.setTextColor(ILI9488_RED);    tft.setTextSize(3);
  tft.println(0xDEADBEEF, HEX);
  tft.println();
  tft.setTextColor(ILI9488_GREEN);
  tft.setTextSize(5);
  tft.println("Groop");
  tft.setTextSize(2);
  tft.println("I implore thee,");
  tft.setTextSize(1);
  tft.println("my foonting turlingdromes.");
  tft.println("And hooptiously drangle me");
  tft.println("with crinkly bindlewurdles,");
  tft.println("Or I will rend thee");
  tft.println("in the gobberwarts");
  tft.println("with my blurglecruncheon,");
  tft.println("see if I don't!");
  return micros() - start;
}

unsigned long testLines(uint16_t color) {
  unsigned long start, t;
  int           x1, y1, x2, y2,
                w = tft.width(),
                h = tft.height();

  tft.fillScreen(ILI9488_BLACK);

  x1 = y1 = 0;
  y2    = h - 1;
  start = micros();
  for(x2=0; x2<w; x2+=6) tft.drawLine(x1, y1, x2, y2, color);
  x2    = w - 1;
  for(y2=0; y2<h; y2+=6) tft.drawLine(x1, y1, x2, y2, color);
  t     = micros() - start; // fillScreen doesn't count against timing

  tft.fillScreen(ILI9488_BLACK);

  x1    = w - 1;
  y1    = 0;
  y2    = h - 1;
  start = micros();
  for(x2=0; x2<w; x2+=6) tft.drawLine(x1, y1, x2, y2, color);
  x2    = 0;
  for(y2=0; y2<h; y2+=6) tft.drawLine(x1, y1, x2, y2, color);
  t    += micros() - start;

  tft.fillScreen(ILI9488_BLACK);

  x1    = 0;
  y1    = h - 1;
  y2    = 0;
  start = micros();
  for(x2=0; x2<w; x2+=6) tft.drawLine(x1, y1, x2, y2, color);
  x2    = w - 1;
  for(y2=0; y2<h; y2+=6) tft.drawLine(x1, y1, x2, y2, color);
  t    += micros() - start;

  tft.fillScreen(ILI9488_BLACK);

  x1    = w - 1;
  y1    = h - 1;
  y2    = 0;
  start = micros();
  for(x2=0; x2<w; x2+=6) tft.drawLine(x1, y1, x2, y2, color);
  x2    = 0;
  for(y2=0; y2<h; y2+=6) tft.drawLine(x1, y1, x2, y2, color);

  return micros() - start;
}

unsigned long testFastLines(uint16_t color1, uint16_t color2) {
  unsigned long start;
  int           x, y, w = tft.width(), h = tft.height();

  tft.fillScreen(ILI9488_BLACK);
  start = micros();
  for(y=0; y<h; y+=5) tft.drawFastHLine(0, y, w, color1);
  for(x=0; x<w; x+=5) tft.drawFastVLine(x, 0, h, color2);

  return micros() - start;
}

unsigned long testRects(uint16_t color) {
  unsigned long start;
  int           n, i, i2,
                cx = tft.width()  / 2,
                cy = tft.height() / 2;

  tft.fillScreen(ILI9488_BLACK);
  n     = min(tft.width(), tft.height());
  start = micros();
  for(i=2; i<n; i+=6) {
    i2 = i / 2;
    tft.drawRect(cx-i2, cy-i2, i, i, color);
  }

  return micros() - start;
}

unsigned long testFilledRects(uint16_t color1, uint16_t color2) {
  unsigned long start, t = 0;
  int           n, i, i2,
                cx = tft.width()  / 2 - 1,
                cy = tft.height() / 2 - 1;

  tft.fillScreen(ILI9488_BLACK);
  n = min(tft.width(), tft.height());
  for(i=n; i>0; i-=6) {
    i2    = i / 2;
    start = micros();
    tft.fillRect(cx-i2, cy-i2, i, i, color1);
    t    += micros() - start;
    // Outlines are not included in timing results
    tft.drawRect(cx-i2, cy-i2, i, i, color2);
  }

  return t;
}

unsigned long testFilledCircles(uint8_t radius, uint16_t color) {
  unsigned long start;
  int x, y, w = tft.width(), h = tft.height(), r2 = radius * 2;

  tft.fillScreen(ILI9488_BLACK);
  start = micros();
  for(x=radius; x<w; x+=r2) {
    for(y=radius; y<h; y+=r2) {
      tft.fillCircle(x, y, radius, color);
    }
  }

  return micros() - start;
}

unsigned long testCircles(uint8_t radius, uint16_t color) {
  unsigned long start;
  int           x, y, r2 = radius * 2,
                w = tft.width()  + radius,
                h = tft.height() + radius;

  // Screen is not cleared for this one -- this is
  // intentional and does not affect the reported time.
  start = micros();
  for(x=0; x<w; x+=r2) {
    for(y=0; y<h; y+=r2) {
      tft.drawCircle(x, y, radius, color);
    }
  }

  return micros() - start;
}

unsigned long testTriangles() {
  unsigned long start;
  int           n, i, cx = tft.width()  / 2 - 1,
                      cy = tft.height() / 2 - 1;

  tft.fillScreen(ILI9488_BLACK);
  n     = min(cx, cy);
  start = micros();
  for(i=0; i<n; i+=5) {
    tft.drawTriangle(
      cx    , cy - i, // peak
      cx - i, cy + i, // bottom left
      cx + i, cy + i, // bottom right
      tft.color565(0, 0, i));
  }

  return micros() - start;
}

unsigned long testFilledTriangles() {
  unsigned long start, t = 0;
  int           i, cx = tft.width()  / 2 - 1,
                   cy = tft.height() / 2 - 1;

  tft.fillScreen(ILI9488_BLACK);
  start = micros();
  for(i=min(cx,cy); i>10; i-=5) {
    start = micros();
    tft.fillTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i,
      tft.color565(0, i, i));
    t += micros() - start;
    tft.drawTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i,
      tft.color565(i, i, 0));
  }

  return t;
}

unsigned long testRoundRects() {
  unsigned long start;
  int           w, i, i2,
                cx = tft.width()  / 2 - 1,
                cy = tft.height() / 2 - 1;

  tft.fillScreen(ILI9488_BLACK);
  w     = min(tft.width(), tft.height());
  start = micros();
  for(i=0; i<w; i+=6) {
    i2 = i / 2;
    tft.drawRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(i, 0, 0));
  }

  return micros() - start;
}

unsigned long testFilledRoundRects() {
  unsigned long start;
  int           i, i2,
                cx = tft.width()  / 2 - 1,
                cy = tft.height() / 2 - 1;

  tft.fillScreen(ILI9488_BLACK);
  start = micros();
  for(i=min(tft.width(), tft.height()); i>20; i-=6) {
    i2 = i / 2;
    tft.fillRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(0, i, 0));
  }

  return micros() - start;
}

And it run! With stuff on the display :D
 
@KurtE - just ran your post wow - you actually got it to run! :)

IMG_0703.jpg

Could not see your AliExpress one... Need to login to get to it
 
OK,
I have a trivial question:
I just got a breaoutboard for T4. (thank you at PJRC)
I note a new usb connector.
I see that the data lines are connected with pogo pins with the USB connector that we use to download programs.
I assume the new USB connector is for testing USB host.
How does it work?
Can I keep both usb cables connected, or must I disconnect the one I'm not using?
I have a relay jig that I use for this exact problem.
I'll get a chance to look at mine this weekend, and see if I can manage to alter the board to do the same.
 
I see that the data lines are connected with pogo pins with the USB connector that we use to download programs.

No, it just looks that way. Even though those 2 pads are underneath the USB Micro-B connector, they're actually a completely separate USB port.

I assume the new USB connector is for testing USB host.
How does it work?

Just plug a USB cable in to that connector, and into whatever USB device you wish to use.

I put a TPS2055A current limit switch and 100 uF capacitor underneath the USB A connector. This means 2 things. You can't use really power hungry devices, since it will limit the current somewhere between 250 to 500 mA. But it also means you T4 is likely to be able to keep running without a brown-out reset if you hot-plug the USB cable.

Can I keep both usb cables connected, or must I disconnect the one I'm not using?

Yes, you can use both. The 1052 chip has 2 USB ports, like Teensy 3.6. This host port is independent of the main USB port.


I have a relay jig that I use for this exact problem.
I'll get a chance to look at mine this weekend, and see if I can manage to alter the board to do the same.

No need for that. Just plug in a USB device to the breakout board's USB A connector.

I tested these latest boards with USBHost_t36 before sending. They work fine, no hardware mods or hacks needed. Just plug in a USB device and run the library examples.
 
@KurtE
Try this one: https://www.aliexpress.com/item/3-5...lgo_pvid=a3fd36e1-701d-4b51-a68f-5b468dcc5d07

Can you send me the link to yours?

EDIT: I know you posted it but now getting confused on which ones are which

I am pretty sure mine is this one: https://www.buydisplay.com/default/...lay-module-optl-touch-screen-w-breakout-board
But I actually purchased it from: https://www.ebay.com/itm/392220881268 which is the company SmartBuysOnly.com

I only saw the one... So not sure if they might have others. ...
Actually maybe the do: http://smartbuysonly.com/eastrising...ay-module-optl-touch-screen-w-breakout-board/

EDIT: forgot to mention, I did put in a PR to handle the T4 for the library https://github.com/jaretburkett/ILI9488/pull/7

Also again will hold off trying to do frame buffer version as don't have enough memory and wondering about the speed. I believe the SPI to this unit can run at 30 maybe 40 mhz... So currently have to send 3 times as much data to display as ili9341 display 2 times the pixels and each pixel 3 bytes instead of 2...

But could maybe try an 8 bit color mode?
 
Unfortunately you can't use the USB socket on the breakout board. UHS2.0 is only designed to be used with the USB Host Shield, I typically use the Mini Shield. What KurtE has been doing to try to get Bluetooth working with USBHost_t36. To get a memory stick working with the USB direct on the T4 you are going to have to right the driver. You might be able to start with UHS2.0 library as a start, or USH3.0 which is the latest but don't know if it works with a memory stick, never looked.
After thinking about and searching in the Web, I'm sinking the idea to access mass memory via USB. we have already 4-bit sdhc and for my applications I only need large logging storage and not the flexibility of a random access to USB disks.
So, I will follow the idea I implemented some years ago, that is to access multiple micro SD disks sequentially.
uSDHC of T3.5/6-T4 makes is easy to access paralleled disks, no dedicated CS needed.

edit: I just saw Paul's reply, maybe I try first the USBHost_t36 examples.
and UHS30 uses Elm ChaN's generic file system, the one I used for uSDFS
 
Last edited:
Then again, nobody else (as far as I know) had really tried to map M7's memory architecture onto the Arduino world's conventions. I believe some of Adafruit's SAMD51 boards (which are M4) may have the ability to put variables and maybe even code into a QSPI flash chip. Would be interesting to look at what they're doing, if anyone knows or has time to investigate. Maybe the STM32 folks have looked at this? I don't follow STM32 closely.

But my gut feeling is we're probably the first to really tackle how to use M7 with Arduino's conventions and legacy of AVR code.
As @MichaelMeissner notes in post #1668, Adafruit's M4 has QSPI serial flash that is used primarily by circuitpython, but I have played with Adafruit M4 and they also provide a fatfs API https://github.com/adafruit/Adafruit_QSPI. From an "arduino sketch" you can create/manipulate fatfs file system on the M4 QSPI 2MB flash, including reading the python files. I haven't seen core code that would allow you to access the QSPI flash as "memory".

As noted in https://forum.pjrc.com/threads/28505-Can-t-get-files-on-SPI-flash?p=182121&viewfull=1#post182121, the Adafruit fatfs libs will work with Teensy SPI serial flash. The Teensy light-weight SerialFlash file system can be used on the Adafruit SPI flash, but not the QSPI flash.
 
I'm thinking the ILI9488 should have its own thread ....;)

@manitou - maybe it should but at some point in time the general test and talk about the display will wind up discussing T4 impact and what has to be done if anything. So, think it may be @Paul call if we can move it to another thread - with the proviso that if its T4 specific it gets moved back to this thread but …

Int the meantime have something for KurtE to mull over
 
@KurtE
Kurt, I think I mentioned that I found a schematic for the board and finally had time to take a look at in detail - I did notice there is no DC pin which is strange. The other thing is that there is a note about shifting MSB by 2 on the right side of the schematic-not really sure what that means or how to handle it :)

NFZpMT.jpg
 
I hooked up my USB Mini shield with UHS2.0. The channel ids used for rumble were 0x45 and 0x00. But when I tried that - no luck unless something overrode them.

@KurtE
Since I spent the day shoveling ice/snow (not much but had to do it twice) and not making much headway with the ili9488 breakout board I have, decided to go back to USBHost_T36_BT version.

Well, something broke good in it. Can't use any wired devices with the new version. Tried Joystick (PS4 or PS3) only and then keyboard/mouse but both hung the T4 to the point where I had to use the pgm button to load the next sketch. Tough to isolate the problem area. With the keyboard mouse on the hub it just looses USB connection to the PC from the start.

Getting sleepy now so time for coffee and rest.

PS: looks like I will get my breakout board the end of the week. Ordered your display to try but that is the end of Feb so pretty much dead in the water with testing that particular piece of hardware.

EDIT: Kurt - maybe we should start another thread just for USB BT - and use this thread just for T4 specific issues? Don't know what do you think.
 
@KurtE
Kurt, I think I mentioned that I found a schematic for the board and finally had time to take a look at in detail - I did notice there is no DC pin which is strange. The other thing is that there is a note about shifting MSB by 2 on the right side of the schematic-not really sure what that means or how to handle it :)

View attachment 15897

I am not an expert here, but my 3 cent guess is that this display does not do what we would typically think of a normal SPI conversation...
Instead I am thinking that there is 3 shift registers connected to each other, so you end up sending a 24 bits of data, probably 18 bits of color, plus maybe the D/C signal encoded on it it as well... But again just guessing.
 
Status
Not open for further replies.
Back
Top