FTDI Community

Please login or register.

Login with username, password and session length.
Advanced Search  

News:

Welcome to the FTDI Community!

Please read our Welcome Note

Technical Support enquires
please contact the team
@ FTDI Support


New Bridgetek Community is now open

Please note that we have created the Bridgetek Community to discuss all Bridgetek products e.g. EVE, MCU.

Please follow this link and create a new user account to get started.

Bridgetek Community

Author Topic: NHD-3.5-320240FT-CSXN-CTP  (Read 83 times)

ezed413

  • Newbie
  • *
  • Posts: 3
    • View Profile
NHD-3.5-320240FT-CSXN-CTP
« 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
}
Logged

FTDI Community

  • Administrator
  • Sr. Member
  • *****
  • Posts: 282
    • View Profile
Re: NHD-3.5-320240FT-CSXN-CTP
« Reply #1 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

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

Best Regards,
FTDI Community
Logged

ezed413

  • Newbie
  • *
  • Posts: 3
    • View Profile
Re: NHD-3.5-320240FT-CSXN-CTP
« Reply #2 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.
Logged

FTDI Community

  • Administrator
  • Sr. Member
  • *****
  • Posts: 282
    • View Profile
Re: NHD-3.5-320240FT-CSXN-CTP
« Reply #3 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

Best Regards,
FTDI Community
Logged