USB 2.0 virtual Com

Status
Not open for further replies.

dundakitty

Well-known member
A friend sent me this note:


Objective:
To get data out of the Arduino Teensy 3.6 faster than its default USB 1.0 port can support, but to stay within the USB standard.

Problem:
The Teensy 3.6 development board (https://www.pjrc.com/store/teensy36.html) has a built-in physical micro USB port connected to its processor's USB 1.0 "full-speed" interface which has a maximum theoretical throughput of 12Mbps. The Teensy 3.6 also exposes the pins for its USB 2.0 interface, which supports a maximum theoretical throughput of 480Mbps. While the full 480Mbps cannot be achieved because the processor's core clock speed is 180Mhz, it should be possible to transfer data over its USB 2.0 interface at least 4x faster, if not better. Unfortunately, the Arduino libraries for the Teensy 3.6 do not contain any USB 2.0 drivers.

Ask:
To write a USB 2.0 "hi-speed" virtual com port driver for the Arduino Teensy 3.6 that runs within the Arduino ecosystem and supports the Arduino Stream (https://www.arduino.cc/reference/en/language/functions/communication/stream/) interface.

Suggested Implementation Approach:
The Teensy 3.6 uses a FreeScale (now NXP) MK66F processor. NXP provides a free IDE called MCUXpresso with a free SDK that includes a sample USB 2.0 virtual com port driver. It is straight-forward to run the sample USB 2.0 virtual com port driver on the NXP-provided evaluation kit (https://www.digikey.com/en/products/detail/nxp-usa-inc/FRDM-K66F/7596327). Once this is running, the demo should be ported into the Arduino ecosystem - which will likely involve switching pin definitions, macros, and clocks. Finally, the demo needs to be packaged as a library that implements the Arduino Stream interface.

Does this sound reasonable?
 
Status
Not open for further replies.
Back
Top