Delving into the world of designing PCBs and SMT soldering, I've made an USB stick with atxmega128a4u, microSD socket and a couple more goodies.
To my amazement, it actually works!
I'm working on revision2, which would come with a RESET and another button, RGB LED and microSD socket (no EEPROM).
- ATxmega128A4U: actually any -A4U xmega would work.
- MicroSD socket (pads match the one from Sparkfun).
- SOIC-8-NARROW landing wired as I2C, with onboard pull-up resistors. I had in mind one of the ATMEL's crypto chips, but it would also work for e.g. EEPROMs (address select pins would have to be done by solder bridges though). I have an ATAES132 on board.
- One pushbutton.
- Two LEDs.
- A reasonable (?) amount of xmega's pins routed out to through-hole pads with standard spacing - so potentially usable on a breadboard, or with a homemade "shields" from a piece of protoboard.
- Bootloaded with DFU bootloader, entered by pressing the button on powering up.
I soldered it at home without any special tools (liquid flux is really magic). Some capacitors (and the ferrite bead) are 0805, the rest are 1206, so not too much trouble soldering. The only gripe is that I used Sparkfun's 0805 pads, which are a bit smaller than generally "recommended" for 0805, so it is a bit fiddly to solder those.
These are some technical points which are good to know before programming/using:
SCLpins that the EEPROM is routed to are
PC1, and these have onboard pull-up resistors attached. So good for I2C, but probably not much useful for general use.
- The microSD SPI interface is also routed to
PORTC, with the exception of the chip select pin. This means that
PORTCcan be used for any external SPI chip, and also that the xmega can act as SPI slave. One warning though: when using the hardware SPI (e.g. for microSD), the
PC4) should not be an input and
LOW- this hangs the usual SPI code. So, even though
PC4is not used for talking to microSD, it needs to be an output, or tied