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

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 ... 32 33 [34] 35 36 ... 60
496
Discussion - Hardware / Re: FT313H Test mode vs Normal mode
« on: May 13, 2020, 04:31:35 PM »
Hello,

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

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

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

https://www.ftdichip.com/Products/ICs/FT313H.html

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

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

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

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

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

500
Hello,

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

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

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:
FT_SetLatencyTimer
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

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

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_Delay_20ms();
    MCU_PDhigh();                                                               // PD high again
    MCU_Delay_20ms();


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

}


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

Please try this beta version:

FT_Prog_v0.0.94.440 Installer.zip

Best Regards,
FTDI Community

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

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

505
Discussion - Software / Re: Using coprocessor (FT813)
« on: May 06, 2020, 04:28:04 PM »
Hello,

Sorry the previously example was from a co-processor list (I will link the application note at the end).


So you mean I don't have to write anything myself? If the coprocessor writes these 2 instructions,
then I have to leave room for these instructions, and then at the end I will write the instructions at offset 8
(4 for clear_color + 4 for clerar(1,1,1)?

You would write the commands to RAM_CMD and the co-processor would deal with writing the normal DL commands to RAM_DL

I don't understand this part. What does it do? Do I need it to draw a slider? It looks like it will draw a point.
Is it written in RAM_CMD or RAM_DL? I can write RGB(0,0,255) directly to RAM_DL, so it doesn't look like a
coprocessor command. In my snippet below I

This was just an illustrative example, you would write your slider command here.

You would write the END, DISPLAY and SWAP commands to the co-processor and again this deals with handling normal DL commands.


[update REG_CMD_WRITE to point to end of new commands]

How do I do that? I can read where the REG_CMD_WRITE is by rd16(REG_CMD_WRITE + RAM_REG);
but what should I do with the value?

The idea here is that you update REG_CMD_WRITE with the total length of the commands you have issued to the co-processor then you wait until REG_CMD_WRITE = REG_CMD_READ signalling the commands have been accepted.

Im going to link some useful application notes which cover how all the low level EVE transfers are intended to work:

Application note BRT_AN_006 shows how the SPI transfers work down to bit level and how the data is formatted into the API used by the EVE device itself. This low-level framework is used as the basis for BRT_AN_008. Although written specifically for PIC, the same data transfers and formatting can be used on other MCUs.
https://brtchip.com/wp-content/uploads/Support/Documentation/Application_Notes/ICs/EVE/BRT-AN-006-FT81x-Simple-PIC-Example.pdf

Application note BRT_AN_007 extends the principles shown in BRT_AN_006 to demonstrate how these low level transfers can be used for various widgets and common operations such as text, bitmaps and touch controls.
https://brtchip.com/wp-content/uploads/Support/Documentation/Application_Notes/ICs/EVE/BRT-AN-007-FT81x-Simple-PIC-Example-Demo_Functions.pdf

Application note BRT_AN_008 explains how to create a library for EVE on your MCU, using the PIC18F device as an example. It uses various code layers to provide an intuitive framework so that the main application can use high-level commands from the EVE Programmers Guide whilst the lowest layers translate these to the byte level transfers for the MCU’s SPI Master Interface. The code supports the FT80x and FT81x series.
https://brtchip.com/wp-content/uploads/Support/Documentation/Application_Notes/ICs/EVE/BRT_AN_008_FT81x_Creating_a_Simple_Library_For_PIC_MCU.pdf


Best Regards,
BRT Community

506
Discussion - Software / Re: Using coprocessor (FT813)
« on: May 05, 2020, 04:52:17 PM »
Hello,

It looks like your code is just writing the CMD_SLIDER command and its variables with COP_SLIDER = 1, is this correct?
The general structure of a co-processor list when generating a screen is as shown below denoting
the typical starting and ending procedures:
Code: [Select]
[Await REG_CMD_READ == REG_CMD_WRITE and read value of these registers]
#start procedure
CMD_DL_START // Tells co-pro to begin writing DL at RAM_DL+0
CLEAR_COLOR_RGB // Co-processor writes this instruction to the DL
CLEAR(1,1,1) // Co-processor writes this instruction to the DL

#co-pro commands
Color_RGB(0,0,255)
Point_Size(20)
Begin(Points)
Vertex2F(0,0)

#end procedure
End()
DISPLAY // Co-processor writes this instruction to the DL
CMD_SWAP // Co-processor writes REG_DL_SWAP
[update REG_CMD_WRITE to point to end of new commands]
[Await REG_CMD_READ == REG_CMD_WRITE]

Note that the co-processor will not process any of the commands until the second-last step
(writing REG_CMD_WRITE). The processing is complete and the screen will update only after the
last condition (read and write pointers equal) becomes true

Best Regards,
FTDI Community

507
Hello,

If the host PC is connected to the internet, the driver will be automatically downloaded and installed via Windows Update.

The other option is to preload the drivers on the host PC using the setup executable.

Best Regards,
FTDI Community

508
Hello,

Yes, the maximum throughput of 52.8Mpbs is to calculate the Data phase throughput, but the data size is not 16 bits, it is 10K bytes.

If CMD and ADDR phase are counted into the calculation of Max Throughput, 17.6Mbps is a reasonable payload on the FT4222H device. 

Best Regards,
FTDI Community

509
Hello,

Thanks for your question, I have relayed this to the development team to have a look at.

Best Regards,
FTDI Community

510
Hello,

Curiously neither FT4222_I2CSlave_GetRxStatus() or FT4222_I2CSlave_Read() are denoted as allowing for return codes which would indicate a USB disconnected.

In this case I would suggest calling  the D2XX function FT_GetStatus(), this will also return the number of bytes in the RX queue, but it should throw an FT_DEVICE_NOT_FOUND or FT_IO_ERROR on a USB disconnect.

Best Regards,
FTDI community

Pages: 1 ... 32 33 [34] 35 36 ... 60