Im very new to the field of anything USB related, sorry in advance! I hope my question is clear in conveying my level of understanding and of what I wish to learn.
My project involves connecting a digital signal processor to a computer via a USB at as low cost as possible.
Ive found a chip that looks promising to ease in doing so, the
USB3310C a "Hi-Speed USB Transceiver with ULPI Interface". Right now Im thinking of using a DSP (
dsPIC33EP32MC202) to interface between the device sensors, logic and the ULPI provided by the USB transceiver.
What I think I need is some kind of library (C/C++) to run on the processor to manage the USB connection to the host, responding to tokens and such (Dont know much about how that works). What I need in the end is something that can advertise itself as my custom device, that I should then be able to exchange data with on the computer.
From how I see it there are five parts to this
- Slave side software that more simply handles the data itself, streaming to and from the computer, processing a stream of ~220MB/s.
- Slave side 'driver', controlling and responding to low level requests. (What I need)
- Slave side hardware, the physical layer.
- Host side drivers, I want to avoid having to create drivers, re-purposing another driver, maybe some kind of general purpose and cross platform driver.
- Host side software, some program to stream to and from the device.
I'm sure there is much more to know on this subject, but for now I just want to successfully send data around ~30MB/s from device to host, and a small amount of control data from host to device.
In summary, I need some way to interface with a USB host, having all the low level stuff managed by something other than myself so I can simply focus on the data itself. Ideally some kind of C/C++ library that can interface with the USB3310C chip, or some alternate low cost chip.