DIY USB audio interface!

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
Hello guys, this is my second post for me;
I want you to check out the project I'm currently working on, it is an USB Audio interface based on the Teensy 3.0 ,which has an I2S bus, and a pair of Wolfson's ADC/DAC, the WM8786 and the WM8740. Both are stereo converters, so the interface will have 2 ins and 2 outs; in addition, it will have two PGA4311 for digital volume control, and an input selector with a guitar balanced driver, that will let the user switch the inputs to match a line input or a guitar input. The input selector is done with 2 ADG333A analog SPDT switches, while the guitar to balanced conversion is done with a pair of LME49724.

I forgot to mention that both the ADC and DAC have differential ins/outs, that's why one PGA4311 is not enough for the whole interface, and that's why I need a fully differential opamp like the LME49724.

The whole interface will have some different power levels; there will be a dual supply of +/- 5 V to power all the analog circuitry (switches,PGAs,LMEs,analog part of the converters), and there will be a 5 V digital supply, to power the digital part of the PGA4311s, and a 3.3 V digital supply to power the digital part of the converters. The dual supply is derived from the USB 5 V using a Murata DC-DC converter, the MEJ1D0505SC, while the 3.3 V is derived from the Teensy's onboard LDO.

I have a module design in mind, actually I'm already designing the whole thing in small modules; this way it's way easier to lay down a correct PCB for every small module, it will help debugging the whole thing a lot, since I could easily check the functionality of every single module by itself, and of course if there's something faulty, I don't have to redo a full board, but rather just change a module :)

There's also a software side of the board, obviously, which is the firmware that will run on the Teensy 3.0; my goal is to achieve a fully functioning 2 in/ 2 out USB 1.0 compliant device with at least 44.1 and 48 KHz selectable sampling frequency. I'll fix to 16 bits just for the sake of simplicity, altough I would really like to also be able to switch between 16 and 24 bits; but that will depend on the limits imposed by the RAM on the Teensy. The input switching and the volume control will not have a distinct USB function for it, I'd rather put a few pots and switches directly on the hardware to be easily accessible by the user.

Right now, I've managed to lay down the input selector, the guitar balanced driver, and the volume control modules. I made the guitar balanced driver as a slave board, that means it will plug onto the input selector using Arduino-like stackable headers (actually Molex does such things too). For the software part, I've managed to get the Teensy enumerate as a mono microphone, just to test the basic functionality of isochronous endpoints. Unfortunately, the Teensyduino add-on library for Arduino doesn't provide any support for such endpoints, and I still have to understand how to implement such data transfers on the Kinetis K20 mcu that's on the Teensy. Unfortunately, USB stuff is painful to understand and to implement correctly. But I'm hopeful and optimist with this project :)

I'm creating a git repository to store all the stuff relevant to this project, but I have to organize it precisely and I don't have the time right now; so I'll post a few .PNGs of the three boards I've currently made. The software will come soon :) you can also check the topic I opened on the Teensy forum, here's the link: Problems defining an USB Audio Class Device core for Teensy 3.0

Any help, critic, suggestion, improvement, bug fix, or whatever is really appreciated :)
 

Attachments

  • volume control.png
    volume control.png
    55.4 KB · Views: 912
  • input selector.png
    input selector.png
    65.4 KB · Views: 883
  • guitar balanced driver x2.png
    guitar balanced driver x2.png
    31.3 KB · Views: 868
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.