cancel
Showing results for 
Search instead for 
Did you mean: 

I made I2S-USB Audio Bridge Microphone Drivers

pszsh
Associate

First and foremost, they aren't perfect. The code has tons of work left. But it took me SO long to get ANY i2s audio data from my guitar to my computer, the major hurdle being mostly the lack of USB Microphone drivers provided by the stack.

Now that I've made them, and I am pretty sure it's the other parts of the code that are at fault for the clock drift, I am sharing it in hopes that it will help someone else who was in the same boat I was.

This is designed for the STM32 to be the SLAVE to a CODEC with Full-Duplex mode support (4-5 wire bidirectional I2S Standard, 16 bit 48k. I know, nothing to call home about, but it is the simplest to get working)

Try your luck with your specific CODEC, maybe you can configure things differently and get it working right. On the PCM3060, this was the best I could manage.

I have no field experience, no college degree, I am just persistent. If I can do it, you can too. Don't give up. I know I haven't, this is just the start.

Note: if you're just picking up this code where I left it off, I'd recommend focusing on the PID controller. I've barely started implementing it. I plan on using CORDIC to offload a lot of the math onto, but, that's just what I'd do. You could also, very feasibly, make a PID controller with the on-board op-amps and COMPARATORS. You could also just keep going the direction I've laid out already, but I would consider your options at least. 


My specific board is the STM32H723ZTG6, but, as of right now, I see absolutely no reason one could not use this same code with minor altercations on any device which sports an HSE and has FS PHY and I2S. I plan on making a light version of this project on the STM32411CEU6 as well as the G4 series one I have in the mail that I forget the exact part number for. That is, of course, if one is running the CODEC in MASTER mode and it has its own HSE and provides the clocks, though, theoretically, I don't see why one couldn't do it differently, with the STM32 as the MASTER, other than that I have repeatedly failed to do so myself so I wouldn't recommend starting there.

0 REPLIES 0