I'm choosing a class project for a microcontrollers class. The class uses an ARM processor.

One project I'm considering is to build a device that would record mp3's with a microphone and save them to a USB thumb drive. Then would be able to retrieve mp3 files from the thumb drive and play them. Okay so I guess it's basically just an mp3 player/recorder using an ARM processor.

My professor told me that the USB interface would be by far the hardest part. He told me I could use any resources I find (including code) that would help me handle that part of the project. But the problem is I don't even know where to start looking.

Thanks, sometimes knowing what to Google is half the battle.
Thanks for the links too. I can see the USB protocol is very extensive. (obviously I haven't finished reading the entire thing yet.)

I'm especially interested in how to do file i/o to a flash drive through the usb port. And I'm wondering if I can find some drivers that have already been written and adapt them to work with my project.

For instance, would I be able to go find some usb driver code from a basic linux distro and adapt it? Or maybe someone has already done a project using an ARM processor with a USB interface and maybe they wouldn't mind letting me use some code. I'm sorry if these questions/suggestions are off base. I'm just not confident that I would be able to complete the project in a semester if I have to write the USB drivers by myself.

There are examples floating around the net. I remember one for PIC micro, but I don't remember the address. It should be possible to find one with Google. Linux is another possibility, if you know where to look. Just concentrate on the mass storage class.

I'm especially interested in how to do file i/o to a flash drive through the usb port. And I'm wondering if I can find some drivers that have already been written and adapt them to work with my project.

Click to expand...

I don't know nuthin bout no ARM thingies, I'm a PIC man. With PICs you can get example code that does exactly that: run a USB flash drive off it's port.

The one I've used as a starting point keeps the USB pointed at the PC and uses an SD card for mass storage. It wasn't so hard (just days long to do) to adapt this so my app could share the SD card too, everything saving and reading to FAT files.

I'm sure ARM has similar examples where you can jump start your work (meaning you don't really need to fully digest the entire USB spec before you begin).