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: Will PC-application receive bytes with "better timing" with D2XX than VCP?  (Read 653 times)

earnie

  • Newbie
  • *
  • Posts: 7
    • View Profile

I have 11 UART Serial Adapter Cables of the following types that are logging information simultaneously from 11 microcontrollers:

https://ftdichip.com/products/c232hd-ddhsp-0/
https://ftdichip.com/products/ttl-234x-3v3-we/

I have written a simple terminal application that can handle 11 com port connections simultaneously and writes all the received ASCII-characters in the same window row-by-row. I sometimes find that ASCII-text from two different microcontrollers are received in the wrong order and I believe this has something to do with the fact that USB likes to wait for a certain amount of bytes before sending the packet. My question is, if I switch from using VCP-driver to the D2XX-driver, would this likely improve so all the text in my terminal window would appear in chronological order?
Logged

FTDI Community

  • Administrator
  • Hero Member
  • *****
  • Posts: 652
    • View Profile
Re: Will PC-application receive bytes with "better timing" with D2XX than VCP?
« Reply #1 on: February 25, 2021, 02:38:34 PM »

Hello,

Thank you for your question.

Yes, essentially USB products can’t reliably be used in real-time applications with time interval resolution guarantees.

Sometimes the inherent behaviour of USB can be a problem and applications cannot be guaranteed throughput.
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.

This explains why on occasion you are seeing data update seeming out of order for a given microcontroller.

Switching to a D2XX implementation would certainly allow you to delay printing of a row of ASCII text in your output until all of the data has been read for the corresponding rows with FT_Read calls. For example, you could configure you program to read 1 byte from each microcontroller before allowing the data to be output by your application. This should negate any issues where the data is being printed from devices out of order. But it is still important to note that the USB host controllers scheduling algorithms do not change from using the VCP driver to the D2XX driver.

Best Regards,
FTDI Community
Logged