FTDI Community

Please login or register.

Login with username, password and session length.
Advanced Search  


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

Show Posts

You can view here all posts made by this member. Note that you can only see posts made in areas to which you currently have access.

Messages - FTDI Community

Pages: [1] 2 3 ... 28

To use I2C with FT232H, see AN_135 FTDI MPSSE Basics and our existing MPSSE Example projects:


There are two options to use I2C modes with the MPSSE engine:

a. Use LibMPSSE libraries. Example code is provided with the download.

b. Use D2XX drivers direct. Example code is shown at I2C.
AN_108 Command Processor For MPSSE and MCU Host Bus Emulation Modes provides the necessary information.

Option b is the best option to use the D2XX drivers direct (no dependency on libMPSSE library).

Best Regards,
FTDI Community

Discussion - Drivers / Re: FTDI VCP driver on macOS Catalina
« on: May 21, 2020, 01:33:56 PM »

Is there any news about Apple's re-signing of the driver?

Yes, actually we have just managed to re-sign and notarize our VCP driver package for macOS 10.15.
We still need to do a couple things before we can release this online, update release notes, etc.

Best Regards,
FTDI Community


Please test in a loopback fashion.

Simply connect TXD to RXD and use a terminal program like PuTTY to send/receive characters.

Note that PuTTY will only show received characters unless your force ON the sent characters (in the settings).

Please also test with our known good hardware which you can also use for reference:


Best Regards,
FTDI Community

Discussion - Software / Re: FT813 initialization
« on: May 18, 2020, 03:02:07 PM »

Each time you want to update the screen, you must also have a swap as the display list has two buffers. After writing the new list, you swap that one so that it becomes active and you can edit the other one and so on. Therefore, try adding a swap after your DISPLAY in your main loop at the bottom.

    wr32(RAM_DL + 0, CLEAR_COLOR_RGB(0,0,255)); //CLEAR_COLOR_RGB0,0,0
    wr32(RAM_DL + 4, CLEAR(1,1,1));
    wr32(RAM_DL + 8, DISPLAY);

Best Regards, FTDI Community

Discussion - Software / Re: Using touch panel
« on: May 18, 2020, 02:57:41 PM »

Which EVE device are you currently using?

Note that for FT811/FT813 please see section 6.6.2 of this application note below,


Best Regards, FTDI Community

Discussion - Software / Re: Using coprocessor (FT813)
« on: May 18, 2020, 01:56:07 PM »

Glad you've managed to get it working!

Best Regards,
BRT Community.

Discussion - Hardware / Re: FT313H Test mode vs Normal mode
« on: May 13, 2020, 04:31:35 PM »

As per the FT313H Datasheet TESTEN pin is to Enable test mode. It has an Internal pull-down.

For normal operation leave floating.

Best Regards,
FTDI Community

Discussion - Hardware / Re: FT313H ASYNC List hang
« on: May 13, 2020, 04:31:16 PM »

All the information on the FT313H can be found on the product page:


The FT313H is quite an old product.
See the UMFT313EV which can be used for test, reference and evaluation.

There is only one FT313H Example.

The best USB Host solution we have is the FT90x.

Maybe other users in the community will be able to help with your issue.

Best Regards,
FTDI Community

Discussion - Software / Re: Using coprocessor (FT813)
« on: May 12, 2020, 04:44:17 PM »

I believe you are sending the CMD_SETBASE (0xffffff38) command when you are trying to use CMD_NUMBER (0xffffff2e).
can you try adjusting your code accordingly and let me know how you get on?

Best Regards,
FTDI Community

Discussion - Software / Re: FT813 initialization
« on: May 12, 2020, 11:16:16 AM »

Yes, it looks like your MISO line is always being read as high, it would be worth checking the pin settings on the Arduino to ensure this line can read correctly. You could disconnect from EVE and pull low and see if it clocks in 0's. It could also be the chip select line etc. which may have bad connection to EVE and so EVE never gets selected.

Note that rd8 is only needing 3 bytes address, 1 dummy and then 1 dummy byte for the data. I suspect you added more as a debug measure to see if the 7C came back but just to mention anyway. BRT_AN_006 has examples of the write and read data bit formats.

Best Regards, FTDI Community


Sorry, we don’t show how to calculate the Maximum throughput in the Datasheet.

For the calculation of max payload throughput, the payload is 10Kbytes and throughput is 52.8Mbps.

Figure 5.2 in FT4222H Datasheet is just an example for transferring data in Quad Mode, not for calculation of Max throughput.

Best Regards,
FTDI Community

Discussion - Drivers / Re: Problems with FT2232H VCP on Windows 10
« on: May 11, 2020, 04:36:42 PM »

Are you using the default latency timer?

See AN232B-04 Data Throughput, Latency and Handshaking which applies to all FTDI devices.
Note that the minimum latency timer for full speed USB devices is 2ms, and for High Speed devices is 1ms.
The default latency timer is 16ms.
The easiest method to use would be through the D2XX Drivers. See the D2XX Programmer's Guide:
So the application code would need to set this each time it’s executed.
The other option would be to edit the driver INF files (with custom PIDs), but this breaks driver signing so would have to be resigned by yourself and is a more complex process.
See section 6.3 Setting a Custom Default Latency Timer Value in AN_107 Advanced Driver Options.

It could also be inherently the way that USB operates.
Data is sent in USB packets which are scheduled and managed by the USB Host.
It’s dependant on a number of factors due to the nature of USB. If there is more USB traffic then the OS and USB have to schedule the communication with each of the USB devices.
It’s highly dependent on the OS and USB Host and is out with our control.

Best Regards,
FTDI Community

Discussion - Software / Re: FT813 initialization
« on: May 11, 2020, 02:52:07 PM »

We recommend to read the REG_ID to ensure the FT813 is ready and it is also a good way to ensure the SPI communications are working.

Here is a basic start-up flow. Initially, if you try the parts in red text and ensure that you get the 0x7C back and that REG_CPU_RESET goes to 0 then this will give a good indication that the communication is working. 

If your code gets stuck at the REG_ID read, could you post or send us a logic analyser waveform of all your SPI lines

Best Regards, FTDI Community

MCU_PDlow();                                                                // PD low to reset device                                                               
    MCU_PDhigh();                                                               // PD high again

    // ---------------------- Optional clock configuration ---------------------   

    // Un-comment this line if using external crystal. Leave commented if using internal oscillator.
    // Note that most FTDI/BRT modules based on FT800/FT801 use an external crystal
    // EVE_CmdWrite(0x44, 0x00);           // 0x44 = HostCMD_CLKEXT

    // You can also send the host command to set the PLL here if you want to change it from the default
    // of 48MHz (FT80x) or 60MHz (FT81x)
    // The command would be called here before the Active command wakes up the device   
    // ---------- Wake FT8xx and delay to allow device to start-up -------------   
    EVE_CmdWrite(FT81x_ACTIVE, 0x00);                                           // Sends 00 00 00 to wake FT8xx
    MCU_Delay_500ms();                                                          // 500ms delay with no access over SPI during delay

    // --------------- 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 ------------------------------

    // WQVGA display parameters
    lcdWidth   = 800;                                                           // Active width of LCD display
    lcdHeight  = 480;                                                           // Active height of LCD display
    lcdHcycle  = 928;                                                           // Total number of clocks per line
    lcdHoffset = 88;                                                            // Start of active line
    lcdHsync0  = 0;                                                             // Start of horizontal sync pulse
    lcdHsync1  = 48;                                                            // End of horizontal sync pulse
    lcdVcycle  = 525;                                                           // Total number of lines per screen
    lcdVoffset = 32;                                                            // Start of active screen
    lcdVsync0  = 0;                                                             // Start of vertical sync pulse
    lcdVsync1  = 3;                                                             // End of vertical sync pulse
    lcdPclk    = 2;                                                             // Pixel Clock
    lcdSwizzle = 0;                                                             // 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  GPIO register for a read/modify/write operation
    FT81x_GPIO = FT81x_GPIO | 0x80;                                             // set bit 7 of  GPIO register (DISP) - others are inputs
    EVE_MemWrite8(REG_GPIO, FT81x_GPIO);                                        // Enable the DISP signal to the LCD panel
    // ---------------------- 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

    // ----------------- First Display List to clear screen --------------------

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

    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

    EVE_MemWrite8(REG_PCLK, lcdPclk);                                           // Now start clocking data to the LCD panel
    EVE_MemWrite8(REG_PWM_DUTY, 127);


Discussion - Software / Re: FT_Prog on Windows 10
« on: May 11, 2020, 11:42:56 AM »

Please try this beta version:

FT_Prog_v0.0.94.440 Installer.zip

Best Regards,
FTDI Community

Discussion - Drivers / Re: FTDI VCP driver on macOS Catalina
« on: May 07, 2020, 01:37:20 PM »

Thanks for the link! This is a very interesting piece of software and may be beneficial for other customers on the form whilst we are resolving the signature issue with our driver.

Best Regards,
FTDI Community

Pages: [1] 2 3 ... 28