FTDI Community

General Category => Discussion - Software => Topic started by: ezed413 on August 05, 2019, 04:23:46 PM

Title: NHD-3.5-320240FT-CSXN-CTP
Post by: ezed413 on August 05, 2019, 04:23:46 PM
I am trying to evaluate this display to possibly go into our product. But I am having trouble reading the Chip ID. It returns a zero. I am using a PIC24 in an Explorer 16/32 to drive the display with the SPI in master mode. Shouldn't I connect the SDO pin of the PIC to the SDI pin of the display? I don't see data being returned on the SDI pin of the PIC. I read one post say to slow the SPI clock down to below 1Mhz. I did this and it didn't help. Below is my Start up sequence. I copied this from the FT81x Simple PIC Application. BTW, the FT813 is used on this display.

Code: [Select]
void APP_Init(void) {
    // ----------------------- Cycle PD pin to reset device --------------------
   
    MCU_PDlow();                                                                // PD low to reset device                                                               

    MCU_Delay_20ms();

    MCU_PDhigh();                                                               // PD high again

    MCU_Delay_20ms();
   

    // ---------------------- Delay to allow start-up --------------------   
   
    EVE_CmdWrite(0x44, 0x00);           // 0x44 = HostCMD_CLKEXT

    EVE_CmdWrite(FT81x_ACTIVE, 0x00);                                           // Sends 00 00 00 to wake FT8xx

    MCU_Delay_500ms();                                                          // 500ms delay (EVE requires at least 300ms here))
    // FT80x_selection - Uncomment these four lines below if using FT800 e.g. VM800B
//    EVE_CmdWrite(0x44, 0x00);           // 0x44 = HostCMD_CLKEXT
//    EVE_CmdWrite(0x62, 0x00);           // 0x64 = HostCMD_CLK48M
//    EVE_CmdWrite(0x68, 0x00);           // 0x68 = HostCMD_CORE RESET
//    EVE_CmdWrite(0x40, 0x00);           // 0x40 = HostCMD_GPUACTIVE
   
    // --------------- Check that FT8xx ready and SPI comms OK -----------------
   

    while (EVE_MemRead8(REG_ID) != 0x7C)                                        // Read REG_ID register (0x302000) until reads 0x7C
    {
    }


    while (EVE_MemRead8(REG_CPURESET) != 0x00)                                  // Ensure CPUreset register reads 0 and so FT8xx is ready   
    {
    }

    // ------------------------- Display settings ------------------------------

    // display parameters
    lcdWidth = 320; // Active width of LCD display
    lcdHeight = 240; // Active height of LCD display
    lcdHcycle = 408; // Total number of clocks per line
    lcdHoffset = 70; // Start of active line
    lcdHsync0 = 0; // Start of horizontal sync pulse
    lcdHsync1 = 10; // End of horizontal sync pulse
    lcdVcycle = 263; // Total number of lines per screen
    lcdVoffset = 13; // Start of active screen
    lcdVsync0 = 0; // Start of vertical sync pulse
    lcdVsync1 = 2; // End of vertical sync pulse
    lcdPclk = 6; // Pixel Clock
    lcdSwizzle = 2; // Define RGB output pins
    lcdPclkpol = 1; // Define active edge of PCLK

    EVE_MemWrite16(REG_HSIZE, lcdWidth);
    EVE_MemWrite16(REG_HCYCLE, lcdHcycle);
    EVE_MemWrite16(REG_HOFFSET, lcdHoffset);
    EVE_MemWrite16(REG_HSYNC0, lcdHsync0);
    EVE_MemWrite16(REG_HSYNC1, lcdHsync1);
    EVE_MemWrite16(REG_VSIZE, lcdHeight);
    EVE_MemWrite16(REG_VCYCLE, lcdVcycle);
    EVE_MemWrite16(REG_VOFFSET, lcdVoffset);
    EVE_MemWrite16(REG_VSYNC0, lcdVsync0);
    EVE_MemWrite16(REG_VSYNC1, lcdVsync1);
    EVE_MemWrite8(REG_SWIZZLE, lcdSwizzle);
    EVE_MemWrite8(REG_PCLK_POL, lcdPclkpol);

    FT81x_GPIO = EVE_MemRead8(REG_GPIO);                                        // Read the FT800 GPIO register for a read/modify/write operation
    FT81x_GPIO = FT81x_GPIO | 0x80;                                             // set bit 7 of FT800 GPIO register (DISP) - others are inputs
    EVE_MemWrite8(REG_GPIO, FT81x_GPIO);                                        // Enable the DISP signal to the LCD panel
   
    // Can move these 2 lines to after the first display list to make the start-up appear cleaner to the user
    EVE_MemWrite8(REG_PCLK, lcdPclk);                                           // Now start clocking data to the LCD panel
    EVE_MemWrite8(REG_PWM_DUTY, 127);
   
    // ---------------------- Touch and Audio settings -------------------------

    EVE_MemWrite16(REG_TOUCH_RZTHRESH, 1200);                                   // Eliminate any false touches

    EVE_MemWrite8(REG_VOL_PB, ZERO);                                            // turn recorded audio volume down
    EVE_MemWrite8(REG_VOL_SOUND, ZERO);                                         // turn synthesizer volume down
    EVE_MemWrite16(REG_SOUND, 0x6000);                                          // set synthesizer to mute

    // -------- Initial display list to begin with blank screen ----------------

    ramDisplayList = RAM_DL;                                                    // start of Display List
    EVE_MemWrite32(ramDisplayList, 0x02000000);                                 // Clear Color RGB sets the colour to clear screen to

    ramDisplayList += 4;                                                        // point to next location
    EVE_MemWrite32(ramDisplayList, (0x26000000 | 0x00000007));                  // Clear 00100110 -------- -------- -----CST  (C/S/T define which parameters to clear)

    ramDisplayList += 4;                                                        // point to next location
    EVE_MemWrite32(ramDisplayList, 0x00000000);                                 // DISPLAY command 00000000 00000000 00000000 00000000 (end of display list)

    EVE_MemWrite32(REG_DLSWAP, DLSWAP_FRAME);                                   // Swap display list to make the edited one active
}
Title: Re: NHD-3.5-320240FT-CSXN-CTP
Post by: FTDI Community on August 06, 2019, 01:46:35 PM
Hello,

I believe the Newhaven displays require some extra configuration during initialization.
You can find their example code at the following:
https://github.com/NewhavenDisplay/EVE2-TFT-Modules/tree/master/3.5in/Capacitive (https://github.com/NewhavenDisplay/EVE2-TFT-Modules/tree/master/3.5in/Capacitive)

It should be easy enough to port this to the library you are using.

Best Regards,
FTDI Community
Title: Re: NHD-3.5-320240FT-CSXN-CTP
Post by: ezed413 on August 08, 2019, 06:46:28 PM
But there is no projects for the PIC. What exactly is the is the FT90x. I see that there is a project for this. The display I am using is the FT813 GPU.
Title: Re: NHD-3.5-320240FT-CSXN-CTP
Post by: FTDI Community on August 12, 2019, 11:12:34 AM
Hello,

Yes, that is correct, but again you should be able to take the settings/configuration defined in those examples and utilise them in the library you are using.

The FT90x is our series of MCUs, you can find our more at the following:
https://www.ftdichip.com/MCU.html (https://www.ftdichip.com/MCU.html)

Best Regards,
FTDI Community