encounters with electron•ics / by flabbergast

X-A4U-stick rev1

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).

Downloads/resources

Features

  • 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.

Soldering notes

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.

X-A4U-r1-top           X-A4U-r1-bottom

Usage notes

These are some technical points which are good to know before programming/using:

  • The SDA and SCL pins that the EEPROM is routed to are PC0 and 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 /SS pin from PORTC can 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 /SS pin on PORTC (namely PC4) should not be an input and LOW - this hangs the usual SPI code. So, even though PC4 is not used for talking to microSD, it needs to be an output, or tied HIGH.