Forum Rule: Always post complete source code & details to reproduce any issue!
Page 5 of 9 FirstFirst ... 3 4 5 6 7 ... LastLast
Results 101 to 125 of 214

Thread: RA8875 from Buydisplay

  1. #101
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    5,415
    @mjs513 Oops I meant the don't have a writeRect...

    And I did figure out that their drawPixels does not work in rotation mode (1 or 3...)

    So I put the display back into rotation(0); And then had the display code detect that the image would not fit and then rotated the image while displaying...

    Code:
    void drawImage(uint16_t image_width, uint16_t image_height, uint16_t *image, uint16_t bgColor)  {
      // first lets fill in part of screen that our image does not cover
      if ((tft.width() >= image_width) && (tft.height() >= image_height)) {
        uint16_t start_x = (tft.width() - image_width) / 2;
        uint16_t start_y = (tft.height() - image_height) / 2;
    
        tft.fillRect(0, 0, tft.width(), start_y, bgColor);  // top;
        tft.fillRect(0, start_y, start_x, image_height, bgColor); // left
        tft.fillRect(start_x + image_width, start_y, tft.width() - (start_x + image_width), image_height, bgColor); // right
        tft.fillRect(0, start_y + image_height, tft.width(), tft.height() - (start_y + image_height), bgColor); // top;
    
        // now lets draw out each of the lines of the image...
        for (uint16_t y = start_y; y < (start_y + image_height); y++) {
          tft.setY(y);
          tft.drawPixels(image, image_width, start_x, y);
          image += image_width;
        }
      } else {
        // We need to rotate the image...
        uint16_t start_y = (tft.height() - image_width) / 2;
        uint16_t start_x = (tft.width() - image_height) / 2;
        //Serial.printf("Rotated: start(%d, %d)\n", start_x, start_y);
        tft.fillRect(0, 0, tft.width(), start_y, bgColor);  // top;
        tft.fillRect(0, start_y, start_x, image_width, bgColor); // left
        tft.fillRect(start_x + image_height, start_y, tft.width() - (start_x + image_height), image_width, bgColor); // right
        tft.fillRect(0, start_y + image_width, tft.width(), tft.height() - (start_y + image_width), bgColor); // top;
    
        // now lets draw out each of the lines of the image...
        static uint16_t rotated_row[800]; // max size.
        // BUGBUG: need to start at end of row and work back or image inverted
        image += (image_width - 1);
        for (uint16_t y = start_y; y < (start_y + image_width); y++) {
          uint16_t *pimage = image;
          for (uint16_t i = 0; i < image_height; i++) {
            rotated_row[i] = *pimage;
            pimage += image_width;
          }
          //Serial.printf("DP %x, %d, %d %d\n", rotated_row, image_height, start_x, y);
          tft.drawPixels(rotated_row, image_height, start_x, y);
          image--;
        }
      }
    }
    I then had the main loop, code use an elapsedMillis object and printed out how long each display took:
    So on RA8875:
    Code:
    Display Front of card 176
    Display Back of card 175
    Display front of chip (DMAMEM?) 176
    Display Front of card 176
    Note: If I time the ILI9341_t3 version displaying the three same images:
    Code:
    Display Front of card 49
    Display Back of card 49
    Display front of chip (DMAMEM?) 49
    Display Front of card 49
    So almost 4 times faster. Yes lots more screen space, but the differences are I do 4 fill rects for the differences...

  2. #102
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    4,098
    And I did figure out that their drawPixels does not work in rotation mode (1 or 3...)
    sumotoy or adafruit or both? Sorry have company for Labor Day so in and out.

    Based on displays timing doesn't look too bad.

  3. #103
    Senior Member
    Join Date
    Nov 2017
    Location
    Belgium
    Posts
    102
    @KurtE @mjs513 @pd0lew
    I wanted to thank you guys for making this lib work on the T4.
    Received my displays this morning. Hooked up the 4.3" and it is up and running.

    Used this branch, https://github.com/KurtE/RA8875/tree/RA8875_t4_multi
    Is this the one to follow for further developments?

    The display is to be used in a synthesizer as feedback for encoder positions. So mainly graphical stuff, no images.
    I'm curious how well it will play along with the audiolib.

  4. #104
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    5,415
    @mjs513 - SumoToy - I don't see anything equivalent on Adafruit (at least the one with teensyduino)...

    Here is the updated sketch, I also added 4th image (Tall Dog's card image in a larger size (400x272), which as expected takes longer to display
    176 for the 320x240 image and 205 for the larger one. So almost 5 per second...
    T4_RA8875_pictureEmbed-190902b.zip

    I also ran it on the T3.6 on SPI1 with 800x480 display and the image look real small:
    Code:
    Display Front of card 163
    Display Back of card 162
    Display front of chip (DMAMEM?) 162
    Display TallDog T4 Card 216
    @neurofun and others - That is probably the most recent version we have now, but not sure if that is or should be the final resting place. Hoping that maybe @PaullStoffregen maybe forks SumoToy's library and maybe he keeps the current version that ships in Teensyduino or ???

  5. #105
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    5,415
    @mjs513... Been playing around a little. Was wondering about how layers worked with these displays.

    So far I am only trying on the the smaller displays (480x272) as if I say Somotoy's notes, you have enough memory for the two layers with 16 bit color.

    With the 800x480 you only have enough memory to do this in 8 bit per color mode.

    On my Adafruit board, it still is taking as long to update the dispolay, but is looks sort of cool as it now changes more instantly between images...

    If anyone wants to try it.. Again so far only with smaller display...
    The main sketch changes to:
    Code:
    //#define USE_SPI1
    
    
    /*
      Teensy3.x and Arduino's
      You are using 4 wire SPI here, so:
      MOSI:  11//Teensy3.x
      MISO:  12//Teensy3.x
      SCK:   13//Teensy3.x
      the rest of pin below:
    */
    #ifdef USE_SPI1
    
    #define RA8875_INT 3//any pin
    #define RA8875_CS  10//restriction for Teensy3 and CS
    #define RA8875_RST -1//any pin
    #if defined(__MK64FX512__) || defined(__MK66FX1M0__)
    #define RA8875_MOSI 0
    #define RA8875_MISO 1
    #define RA8875_SCLK 32
    #elif defined(__IMXRT1062__)
    #define RA8875_MOSI 26
    #define RA8875_MISO 1
    #define RA8875_SCLK 27
    #endif
    #else
    #define RA8875_INT 3//any pin
    #define RA8875_CS  10//restriction for Teensy3 and CS
    #define RA8875_RST 9//any pin
    #define RA8875_MOSI 11
    #define RA8875_MISO 12
    #define RA8875_SCLK 13
    #endif
    
    RA8875 tft = RA8875(RA8875_CS, RA8875_RST, RA8875_MOSI, RA8875_SCLK, RA8875_MISO);
    bool enable_layers = false;
    
    // Converted to code with:
    // http://www.rinkydinkelectronics.com/t_imageconverter565.php
    //
    #include "teensy40_pinout1.h" //the picture
    #include "teensy40_pinout2.h" //the picture
    #include "teensy40_front.h"  // Try to load from DMAMEM?
    #include "TD_T4_TopCard.h"   // Top Dog card...
    /* GIMP (https://www.gimp.org/) can also be used to export the image using the following steps:
    
        1. File -> Export As
        2. In the Export Image dialog, use 'C source code (*.c)' as filetype.
        3. Press export to get the export options dialog.
        4. Type the desired variable name into the 'prefixed name' box.
        5. Uncheck 'GLIB types (guint8*)'
        6. Check 'Save as RGB565 (16-bit)'
        7. Press export to save your image.
    
      Assuming 'image_name' was typed in the 'prefixed name' box of step 4, you can have to include the c file as above,
      using the image can be done with:
    
        tft.writeRect(0, 0, image_name.width, image_name.height, (uint16_t*)(image_name.pixel_data));
    
      See also https://forum.pjrc.com/threads/35575-Export-for-ILI9341_t3-with-GIMP
    */
    
    
    
    void setup() {
      while (!Serial && millis() < 5000) ;
      Serial.begin(115200);
      DumpMemoryInfo();
      Serial.printf("CS:%u RST:%u, MOSI:%u SCLK:%u MISO:%u\n", RA8875_CS, RA8875_RST, RA8875_MOSI, RA8875_SCLK, RA8875_MISO);
      //
      //tft.begin(RA8875_800x480);
      //tft.begin(RA8875_480x272);
      //  tft.begin(Adafruit_800x480);
      tft.begin(Adafruit_480x272);
      if ((tft.width()==480) && (tft.height() == 272)) enable_layers = true;  tft.setRotation(0);
      Serial.printf("Screen Width:%d Height: %d\n", tft.width(), tft.height());
      tft.fillWindow(RA8875_BLACK);
      delay(250);
      tft.fillWindow(RA8875_RED);
      delay(250);
      tft.fillWindow(RA8875_GREEN);
      delay(250);
      tft.fillWindow(RA8875_BLUE);
    }
    
    void drawImage(RA8875writes layer, uint16_t image_width, uint16_t image_height, uint16_t *image, uint16_t bgColor)  {
      // first lets fill in part of screen that our image does not cover
      if (enable_layers) tft.writeTo(layer);
      if ((tft.width() >= image_width) && (tft.height() >= image_height)) {
        uint16_t start_x = (tft.width() - image_width) / 2;
        uint16_t start_y = (tft.height() - image_height) / 2;
    
        tft.fillRect(0, 0, tft.width(), start_y, bgColor);  // top;
        tft.fillRect(0, start_y, start_x, image_height, bgColor); // left
        tft.fillRect(start_x + image_width, start_y, tft.width() - (start_x + image_width), image_height, bgColor); // right
        tft.fillRect(0, start_y + image_height, tft.width(), tft.height() - (start_y + image_height), bgColor); // top;
    
        // now lets draw out each of the lines of the image...
        for (uint16_t y = start_y; y < (start_y + image_height); y++) {
          tft.setY(y);
          tft.drawPixels(image, image_width, start_x, y);
          image += image_width;
        }
      } else {
        // We need to rotate the image...
        uint16_t start_y = (tft.height() - image_width) / 2;
        uint16_t start_x = (tft.width() - image_height) / 2;
        //Serial.printf("Rotated: start(%d, %d)\n", start_x, start_y);
        tft.fillRect(0, 0, tft.width(), start_y, bgColor);  // top;
        tft.fillRect(0, start_y, start_x, image_width, bgColor); // left
        tft.fillRect(start_x + image_height, start_y, tft.width() - (start_x + image_height), image_width, bgColor); // right
        tft.fillRect(0, start_y + image_width, tft.width(), tft.height() - (start_y + image_width), bgColor); // top;
    
        // now lets draw out each of the lines of the image...
        static uint16_t rotated_row[800]; // max size.
        // BUGBUG: need to start at end of row and work back or image inverted
        image += (image_width - 1);
        for (uint16_t y = start_y; y < (start_y + image_width); y++) {
          uint16_t *pimage = image;
          for (uint16_t i = 0; i < image_height; i++) {
            rotated_row[i] = *pimage;
            pimage += image_width;
          }
          //Serial.printf("DP %x, %d, %d %d\n", rotated_row, image_height, start_x, y);
          tft.drawPixels(rotated_row, image_height, start_x, y);
          image--;
        }
      }
      if (enable_layers)tft.layerEffect((layer==L1)? LAYER1 : LAYER2);
    }
    
    void loop(void) {
      Serial.print("Display Front of card ");
      elapsedMillis em = 0;
      drawImage(L1, 240, 320, (uint16_t*)teensy40_pinout1, RA8875_RED);
      Serial.println((uint32_t)em, DEC);
      delay(5000);
      Serial.print("Display Back of card ");
      em = 0;
      drawImage(L2, 240, 320, (uint16_t*)teensy40_pinout2, RA8875_GREEN);
      Serial.println((uint32_t)em, DEC);
      delay(5000);
      Serial.print("Display front of chip (DMAMEM?) ");
      em = 0;
      drawImage(L1, 240, 320, (uint16_t*)teensy40_front, RA8875_BLUE);
      Serial.println((uint32_t)em, DEC);
      delay(5000);
      Serial.print("Display TallDog T4 Card ");
      em = 0;
      drawImage(L2, 400, 272, (uint16_t*)td_t4_top, RA8875_BLACK);
      Serial.println((uint32_t)em, DEC);
      delay(5000);
    }
    
    void DumpMemoryInfo() {
    #if defined(__IMXRT1062__)
      // from the linker
      //  extern unsigned long _stextload;
      extern unsigned long _stext;
      extern unsigned long _etext;
      //  extern unsigned long _sdataload;
      extern unsigned long _sdata;
      extern unsigned long _edata;
      extern unsigned long _sbss;
      extern unsigned long _ebss;
      //  extern unsigned long _flexram_bank_config;
      extern unsigned long _estack;
      uint32_t flexram_config = IOMUXC_GPR_GPR17;
      Serial.printf("IOMUXC_GPR_GPR17:%x IOMUXC_GPR_GPR16:%x IOMUXC_GPR_GPR14:%x\n",
                    flexram_config, IOMUXC_GPR_GPR16, IOMUXC_GPR_GPR14);
      Serial.printf("Initial Stack pointer: %x\n", &_estack);
      uint32_t dtcm_size = 0;
      uint32_t itcm_size = 0;
      for (; flexram_config; flexram_config >>= 2) {
        if ((flexram_config & 0x3) == 0x2) dtcm_size += 32768;
        else if ((flexram_config & 0x3) == 0x3) itcm_size += 32768;
      }
      Serial.printf("ITCM allocated: %u  DTCM allocated: %u\n", itcm_size, dtcm_size);
      Serial.printf("ITCM init range: %x - %x Count: %u\n", &_stext, &_etext, (uint32_t)&_etext - (uint32_t)&_stext);
      Serial.printf("DTCM init range: %x - %x Count: %u\n", &_sdata, &_edata, (uint32_t)&_edata - (uint32_t)&_sdata);
      Serial.printf("DTCM cleared range: %x - %x Count: %u\n", &_sbss, &_ebss, (uint32_t)&_ebss - (uint32_t)&_sbss);
    #endif
    }
    Still has the other 4 header files with the images...

    Next up may see what it is like to work in 256 color mode, which if I saw correctly each byte is: RRRGGGBB

  6. #106
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    4,098
    @KurtE

    Going to get my other display this afternoon - will be a good test of it. As soon as I get I want to give it a try.

    One of the things I saw in the RA8875 manual is that it will load Binary image files which probably speed things up. Don't know if Sumotoy or Adafruit implemented that have to check. Raio does have a image conversion app that does it for you, conversion that its. It also converts bmp to header files.

  7. #107
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    5,415
    Quote Originally Posted by mjs513 View Post
    @KurtE

    Going to get my other display this afternoon - will be a good test of it. As soon as I get I want to give it a try.

    One of the things I saw in the RA8875 manual is that it will load Binary image files which probably speed things up. Don't know if Sumotoy or Adafruit implemented that have to check. Raio does have a image conversion app that does it for you, conversion that its. It also converts bmp to header files.
    Good Morning,

    I wonder if the binary file thing you are mentioning is the same thing on SumoToys WIKI:
    I think the only fast way to get a picture fast on screen is use internal DMA and a optional SPI Flash memory pre-programmed and controlled directly by the chip but you need to program Flash chip in advance separately and then solder it, not very practical.
    Which now makes sense, that when you purchase the display, you can order it with things like font chips and like and you can also order a flash memory chip, and it says all of them will come already soldered to the display except the flash memory....

    Note: My newer one, which shipped using China post, arrived yesterday to San Francisco... So may have it later this week...

  8. #108
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    4,098
    @KurtE

    Yes and know. If I look at the RA8876 HDMI (1060x800, yes it works) driver code that I have I found 2 functions. You can read directly from a SD Card or load image into SDRAM. Then both methods let you draw to screen after that.

  9. #109
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    5,415
    @mjs513 - Sounds good.

    Note: the example apps again from Sumotoy version, for displaying bitmaps, do the read in one row at at time and use the drawPixels function.
    And as I noticed when I tried it directly is that it only works in rotation(0) or 2... Not in 1 or 3...

    Which sort of makes sense, in that teh functions that call setXY which breaks down to setX(x) setY(y);
    If you look at these two functions, example:
    Code:
    void RA8875::setX(int16_t x) 
    {
    	if (x < 0) x = 0;
    	if (_portrait){//fix 0.69b21
    		if (x >= RA8875_HEIGHT) x = RA8875_HEIGHT-1;
    		_writeRegister(RA8875_CURV0, x & 0xFF);
    		_writeRegister(RA8875_CURV0+1, x >> 8);
    	} else {
    		if (x >= RA8875_WIDTH) x = RA8875_WIDTH-1;
    		_writeRegister(RA8875_CURH0, x & 0xFF);
    		_writeRegister(RA8875_CURH0+1, (x >> 8)); 
    	}
    }
    Depending on Horizontal or Vertical orientation, it is actually which register does what... So the setPixels, probably just always go along the CURH direction...


    Another interesting side wondering is when I tried, using 8 bit color mode, so maybe could use layers on larger board... I found colors totally screwed up...

    So I thought I would see how the colors translated, so put in some quick and dirty code
    Code:
      Serial.printf("RA8875_BLACK: %x %x\n", RA8875_BLACK, _color16To8bpp(RA8875_BLACK));
      Serial.printf("RA8875_WHITE: %x %x\n", RA8875_WHITE, _color16To8bpp(RA8875_WHITE));
      Serial.printf("RA8875_RED: %x %x\n", RA8875_RED, _color16To8bpp(RA8875_RED));
      Serial.printf("RA8875_GREEN: %x %x\n", RA8875_GREEN, _color16To8bpp(RA8875_GREEN));
      Serial.printf("RA8875_BLUE: %x %x\n", RA8875_BLUE, _color16To8bpp(RA8875_BLUE));
      Serial.printf("RA8875_CYAN: %x %x\n", RA8875_CYAN, _color16To8bpp(RA8875_CYAN));
      Serial.printf("RA8875_YELLOW: %x %x\n", RA8875_YELLOW, _color16To8bpp(RA8875_YELLOW));
      Serial.printf("RA8875_PINK: %x %x\n", RA8875_PINK, _color16To8bpp(RA8875_PINK));
      Serial.printf("RA8875_GRAYSCALE: %x %x\n", RA8875_GRAYSCALE, _color16To8bpp(RA8875_GRAYSCALE));
    Then found that the _color16To8bpp was not exported, so I copied it into the sketch:

    Code:
    uint8_t _color16To8bpp(uint16_t color)
    {
      return (map((color & 0xF800) >> 11, 0, 28, 0, 7) << 5 | map((color & 0x07E0) >> 5, 0, 56, 0, 7) << 2 | map(color & 0x001F, 0, 24, 0, 3));
    }
    And I know it is screwed up, Output:
    Code:
    RA8875_BLACK: 0 0
    RA8875_WHITE: ffff 24
    RA8875_RED: f800 0
    RA8875_GREEN: 7e0 20
    RA8875_BLUE: 1f 4
    RA8875_CYAN: 7ff 24
    RA8875_YELLOW: ffe0 20
    RA8875_PINK: fcff 14
    For example RED goes to 0:
    Note: this should be mapping RRRRRGGG GGGBBBB -> RRRGGGBB

    So if you Take RED (0xF800 & 0xF800) >> 11 it gives you 0xF8 (or 31), then you take map(31, 0, 28, 0, 7) and it overflows...
    I could either simply change the map function to: map(31, 0, 31, 0, 7) or could probably mask off lower 2 bits, so wondering if instead it should simply be
    Red part: (color & 0xE0)>>8 ... do same for G and B...

    Think I will try it...

  10. #110
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    5,415
    @mjs513 and others, just pushed up a change to my branch for the 16 bit to 8 bit color conversion, and now my app that displays 4 images (T4 cards and chip), looks a lot better.

    To try it before and after, my change, you can simply change the begin method and pass in 8 instead of 16 (defaults to 16) like: tft.begin(Adafruit_480x272, 8);

    Note: with the 8 bits, I can now run two layers on the 800x480 board...

  11. #111
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    4,098
    Quote Originally Posted by KurtE View Post
    @mjs513 and others, just pushed up a change to my branch for the 16 bit to 8 bit color conversion, and now my app that displays 4 images (T4 cards and chip), looks a lot better.

    To try it before and after, my change, you can simply change the begin method and pass in 8 instead of 16 (defaults to 16) like: tft.begin(Adafruit_480x272, 8);

    Note: with the 8 bits, I can now run two layers on the 800x480 board...
    Cool change - still on track to get my display this afternoon sometime. Then the fun begins

  12. #112
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    4,098
    @KurtE
    Just got my 4.3inch display and ran the benchmark and nothing is displayed. Where is pin 1 on JP1.

    With pins facing up it should be the lower right most pin for pin 1?

  13. #113
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    5,415
    That sounds correct, but I always try to verify it, as it usually has square pad where all of the others are round...

    I assume you choose the correct value for the begin, probably not with ADAfruit...

    If all else fails, I would double check that they configured it properly, by looking at the jumpers (page 14 of pdf)

    Would also check that it is configured for 5v? J8 should not be shorted. If you look at page 5, toward lower left of image, should have VR and a few caps...

    Also I am not clear if you need to hook up the capactive display connections or not to make it work. I would suspect not.

    Edit: Should mention at times unclear SDO/SDI which one is MISO which one is MOSI, so you might swap and see if that helps

    Also in my version of library, I reduced max SPI to 12mhz instead of 22... not sure which you are trying.

    Also thinking of mucking in an extra parameter on begin to set it....

  14. #114
    Senior Member
    Join Date
    Nov 2017
    Location
    Belgium
    Posts
    102
    Quote Originally Posted by mjs513 View Post
    @KurtE
    Just got my 4.3inch display and ran the benchmark and nothing is displayed. Where is pin 1 on JP1.

    With pins facing up it should be the lower right most pin for pin 1?
    If you look at the component side, sd card to your right and JP1 to your left, pin1 is top left.

    lcd pin5 -> t4 pin10, CS - CS
    lcd pin6 -> t4 pin12, SDO - MISO
    lcd pin7 -> t4 pin11, SDI - MOSI
    lcd pin8 -> t4 pin13, SCLK - SCK

  15. #115
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    4,098
    Quote Originally Posted by neurofun View Post
    If you look at the component side, sd card to your right and JP1 to your left, pin1 is top left.

    lcd pin5 -> t4 pin10, CS - CS
    lcd pin6 -> t4 pin12, SDO - MISO
    lcd pin7 -> t4 pin11, SDI - MOSI
    lcd pin8 -> t4 pin13, SCLK - SCK
    Yep figured that out after my post and looking a little closer.

    @KurtE - in response to your suggestions.
    I assume you choose the correct value for the begin, probably not with ADAfruit...
    Using RA8875_480x272 not the adafruit version. Learned lesson from your headaches.

    If all else fails, I would double check that they configured it properly, by looking at the jumpers (page 14 of pdf)

    Would also check that it is configured for 5v? J8 should not be shorted. If you look at page 5, toward lower left of image, should have VR and a few caps...
    Yes did that as well and everything looks like it should.

    Also in my version of library, I reduced max SPI to 12mhz instead of 22... not sure which you are trying.

    Also thinking of mucking in an extra parameter on begin to set it....
    Used my version and ran at 12Mhz and 22Mhz no luck - also for the heck of it I swapped miso/mosi lines. Tried on 2 of my breakout boards with and with the tristate buffer on miso.

    Looks like its running but no backlight - yes backlight is configured properly, doubled checked just in case.

    Next I tried it on a T3.6 and it worked no problem with my version. Ok.

    Next I downloaded your multi version and reloaded (no adafruit board) and it still didn't work.

    Something strange is going on.

  16. #116
    Senior Member
    Join Date
    Nov 2017
    Location
    Belgium
    Posts
    102
    Quote Originally Posted by mjs513 View Post
    Something strange is going on.
    Same here.
    Got the 4.3" 800x480 working with KurtE's multi version without a hitch.
    Today I tried the 7" 800x480 and it refused to work. Pinout is exactly the same so it should be a drop in replacement.
    Started to think there might be something wrong with the display because pin13 led(SCK) behaved differently.
    Hooked up the scope and the signals also look different. Switch back and forth between the 2 displays to compare.

    And then oh mighty lord of silicon, I fry my brand new T4.

    Will try that 7" on a T3.6 to see if it makes any difference.

    Ok, that was it for the fail of the week.

  17. #117
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    5,415
    Hi @mjs513 and @neurofun - As a test you might try changing SPI.cpp

    To see if maybe the settings that I am experimenting with make a difference... About line 1284

    // uint32_t fastio = IOMUXC_PAD_SRE | IOMUXC_PAD_DSE(3) | IOMUXC_PAD_SPEED(3);
    uint32_t fastio = IOMUXC_PAD_DSE(6) | IOMUXC_PAD_SPEED(1);

  18. #118
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    4,098
    Quote Originally Posted by KurtE View Post
    Hi @mjs513 and @neurofun - As a test you might try changing SPI.cpp

    To see if maybe the settings that I am experimenting with make a difference... About line 1284

    // uint32_t fastio = IOMUXC_PAD_SRE | IOMUXC_PAD_DSE(3) | IOMUXC_PAD_SPEED(3);
    uint32_t fastio = IOMUXC_PAD_DSE(6) | IOMUXC_PAD_SPEED(1);
    That definitely helped. Once I made the change that backlight came on but nothing was displayed. I went in to play with the constructor and when I reloaded the sketch the displayed remained black again. After playing a bit I found if I powered off the display/teensy and repowered it I would get the backlight back on.

    After a few more things I found it also has something to do with having no reset pin. The constructor has to be:
    Code:
    RA8875 tft = RA8875(10);
    Changing the SPI clock made it worse so 12Mhz it is.

    Finally got it working with those settings but had to power off and on to reset the display after each upload. Once it started work to do the benchmark sketch.

  19. #119
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    5,415
    Wonder if it would help to hook up pin 11 of the display /RESET ?

    Note with both T4's I am running some of these displays on (One has Adafruit, the other has a RA8875_480x272 display connected, they are both by breadboards...

    I probably should try one off of my breakout boards, but currently they have STxxxx displays and the like connected with them. Maybe I need to get back and solder up a complete one... Was sort of waiting for Tall Dog... But I think I still have 2 of the T4s here in shiny packages.

  20. #120
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    4,098
    Quote Originally Posted by KurtE View Post
    Wonder if it would help to hook up pin 11 of the display /RESET ?

    Note with both T4's I am running some of these displays on (One has Adafruit, the other has a RA8875_480x272 display connected, they are both by breadboards...

    I probably should try one off of my breakout boards, but currently they have STxxxx displays and the like connected with them. Maybe I need to get back and solder up a complete one... Was sort of waiting for Tall Dog... But I think I still have 2 of the T4s here in shiny packages.
    To answer your question about if pin 11 helps - the answer is a big YES. Loaded 3 sketches and changed SPI clock to 22Mhz and they all worked perfectly without any messing around with powering off and on to reset. Well guess I am solder a couple pins tomorrow.

  21. #121
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    5,415
    Quote Originally Posted by mjs513 View Post
    To answer your question about if pin 11 helps - the answer is a big YES. Loaded 3 sketches and changed SPI clock to 22Mhz and they all worked perfectly without any messing around with powering off and on to reset. Well guess I am solder a couple pins tomorrow.
    Glad it is working!

  22. #122
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    4,098
    Quote Originally Posted by KurtE View Post
    Glad it is working!
    Well one good thing is that at least you will know what to expect if you run into issues with yours later this week.

  23. #123
    Senior Member
    Join Date
    Nov 2017
    Location
    Belgium
    Posts
    102
    @KurtE
    I've send you a pull request for a bug fix in the drawLineAngle() function. It would not work if "length" was lager than "start".
    I also modified the drawLineAngle_example.ino to verify the fix is working.
    I hope I did everything right since this is my first ever pull request.

  24. #124
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    5,415
    @neurofun - Sounds good, I merged it in...

    Thanks

    Again not sure where the master version will or should reside yet.

  25. #125
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    4,098
    @KurtE
    For now can we keep you branch as the master and will delete my branch? Or would you prefer it the other way around?

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •