Completed Project Tutorial : AT91SAM3X8E (Arduino Due) USB Bulk Endpoints

Thread Starter

rodv92

Joined May 23, 2011
12
I thought that writing a small tutorial article about implementing additional USB endpoints on the Arduino Due and interfacing it with libusb (tested on linux) would be valuable as it allows to unleash the full potential of the USB 2.0 High speed native port.
The main goal is to get rid of the ACM/tty/termios layer and its buffering and line discipline and character treatment that is not suitable for fast bulk data transfer.

Although using SerialUSB for data transfer was tested to work up to 1.2 MB/s ( and probably) more, it is not elegant and SerialUSB is better repurposed as a debug or control telemetry channel.

Plus, the documentation is terse on the Web (there are some examples derived from MIDI USB) but they all lack info about the host side, and mainly the sole source are the Arduino Core C files in the USB folder (framework-arduino-sam/cores/arduino/USB)

So I decided to incorporate it into a project using the PluggableUSB class until it worked.
Instead of paraphrasing the whole article here, I provide it through a link :

USB 2.0 (High-Speed) bulk endpoints on Arduino Due MCU and libusb interfacing on Linux

Note that it seems that Teensy 4.X MCU are more mature as for USB 2.0 High speed use, but the Arduino Due article above may still be valuable for legacy projects or training.

Have a nice day.
 
Top