- Eagle PCB
In order to make sense of this, you'll need to download the accompanying schematic PDF.
The schematic is spread over 6 sheets - although a couple are a bit blank.
Note that some of the values are missing - I've documented them here. Also, the numbering may not be sequential (for example, there is an L2, but no L1 (which was part of the SD-Card interface).
Sheet 1 - CPU and power
This contains the CPU and power circuitry (and also clock and PLL).
IC1 is the ARM processor - some of the pins aren't actually used. They are left floating.
VR1 is the TSP76733 voltage conversion - it takes the power from either a battery or the USB connector (the three pads on the left of the schematic are to take a switch for the battery - the prototype has a wire between the first two, so it can only take USB power).
R14 and R15 are a potential divider that takes the power input and divides by two. This is fed into the ARM's ADC6 input, so it can monitor the battery voltage. If it gets a bit low, then it can signal this with an LED next to the display.
R5, C15 and C14 make up the PLLRC circuit, as required by the Atmel device.
Note that the values for C1 and C2 are omitted - they depend on the crystal, but I've been using 22pF.
The prototype does not have R8, R9 and R6 fitted - these are for the USB connection.
Sheet 2 - Joystick and EEPROM
This sheet doesn't have a lot of information on it. The EEPROM can be any with a minimum 256-byte memory size (this may change at a later date).
Note that the Joystick's switch is not connected to the processor.
Sheet 3 - Audio interface
The ARM's SSC pins are connected to the WM8727's audio input, whilst the MCK input is taken from the ARM's PA18 (configured to provide PCK2 as an output, which is a divisor of the CPU's main clock).
The CPU has an 18.452MHz clock, and the PLL multiplies this by 26, and divides by 5, giving a main clock of 95.95MHz, or a 47.98MHz CPU speed.
This is divided down by 32 to give an SCLK of ~1.5MHz - the MCLK is the main clock divided by 2 (or ~24MHz).
As a result, the audio frequency is 46.8KHz - the WM8727 will oversample this by 256.
The TPA122D is used as a non-gaining amplifier (i.e. input voltage = output voltage). However, it does provide enough power for headphones.
The prototype's capacitors between the WM8727 and TPA122D are too low, and will be increased.
Some capacitor values are missing - they are as follows:
- C19 - 10uF
- C11 and C12 - 100uF
The inductor (L-EU0805) is a small inductor used for filtering the power supply signal prior to entry into the audio. The value should not matter too much.
Sheet 4 - JTAG interface
The prototype uses a standard 2-pin Harting connector, soldered side-on to the PCB. The final version will use an SMT MicroMatch connector. This has a low footprint, whilst retaining the use of a 1.27mm IDC cable.
Note that the SRST input has a pull-up resistor on sheet 1.
Sheet 5 - Switches and LED
The switches are connected to a 74AC165 shift register - this means that only 3 pins are required to read all of the switches.
The prototype re-used two of the data pins for the OLED display (LD6 and LD7) for the load and clock, but the full version uses dedicated pins.
I got this idea from an old joypad interface we used to sell on the Acorn. It works very well - although you do need pull-up resistors for each of the switches (there are probably enough pins left over on the ARM to wire them individually - the pins can be configured individually to have a pull-up resistor or not, which would save a bit of manufacturing time).
The LED is driven by a simple transistor.
Sheet 6 - OLED interface
Another simple sheet - this is only for the OLED display's FPC connector.