Yamp1 =
This was the player I started out with. It uses a Hitachi H8/S 2357F CPU, a 16 bit thingy with 128 kB Flash ROM, a few built in peripherals and a ton of I/O pins. GCC was available for it, so programming would be easy (well, relatively).
The only problem with it, was the package – 120 pin TFP or 128 pin FP, which make it difficult to solder for the average home builder.
While considering this for a while, I came upon an idea of using an Atmel CPU instead, and put yampp-1 on ice. It’s not dead however, as it offers much more functionality than yampp-2, such as USB interfacing, better user-interface, more memory e.t.c.

yampp-1 test board. This was connected to the Hitachi EVB though the connectors at top left.
On the left is a PIC controller and a LCD-display, on the right is the USB interface.

The yampp-1 USB interface using a Phillips PDIUSBD12 chip.

New Rev. D, with LCD connector, FT8U245BM USB chip and MMC/CF option !

The new Rev. C board has a connector for a Nokia 3310 graphical LCD display. It uses the new BM version of the FT8U245 USB chip, and can be built with either a Compact Flash card OR a MultiMedia Card.

The assembled yampp-7 PCB
(click to see large image)

yampp-7 is a new portable MP3 player that uses Compact Flash or MultiMedia cards for storage of songs. You’ll get about 1 minute of playing time per MB on the memory card, if your songs are 128 kbps.
The player is pretty small and the PCB has been designed to fit into a Teko “Soap” box.
It features a 84*48 pixel graphical LCD display, similar to the displays used on Nokia 3310 cell phones.

It’s designed to operate from rechargable battery cells, either from a single 3.6V Li-Ion cell (recommended), or from 3*1.2V Ni-Mh cells. With a 600 mA Li-Ion cell, the playing time is about 12 hours, but you can find Li-Ion cells up to 1200 mAh that will fit in the player, extending the playing time to about 24 hours.

It’s intended to be used with replacement Li-Ion cells for Mobile Phones, making it easy (and relatively cheap) to find a suitable cell. (I use mine with a cell for a Motorola V3688 Phone).

It also features a USB interface for fast downloading of songs to the memory card, and for firmware updates.

The player uses a special filesystem called YADL (Yampp Advanced Disk Layout), which maximizes the capacoty of the memory card.
It is playlist based and give the player a powerful but easy to use user interface.

Circuit Description

Yampp-7 Block Schematic
The central part of the yampp-7 player is the Atmel mega161 CPU. It’s like a big-brother to the classic 8515 CPU that was used on the original yampp-3.
It has 16 kB Flash and 1024 bytes internal SRAM, both double as much as on the 8515.
It also features a bootloader option. This is been used in yampp-7, where it is now possible to download new firmware over the USB link.

The USB link is controlled by a FT8U245BM chip from FTDI. This is a VERY easy to use USB chip, which basically looks like a simple 8-bit buffer (hence the name). There’s no need for implementing any specific USB code in the player, to communicate over the USB link, you just read and write data directly to the chip.
Two status pins indicate if there’s any data in the receive buffer, and if the transmitter queue is empty.
The USB chip is memorymapped and occupies a single address in the CPU address space.
Some discrete circuitry is added to the USB chip to enable it to startup in the correct mode, and to handle the power on reset and Soft-Connect feature.

Li-Ion charger
A Maxim MAX1811 chip is added for handling the charging of the Li-Ion cell.(Ni-Mh cells can also be used in the player, in this case, the MAX1811 is replaced by a diode and a resistor).
The MAX chip is a special USB to Li-Ion charger, and it controls the relatively complicated charge sequence to the Li-Ion cell.
The Li-Ion cell (or Ni-Mh cells), supply 3.6V to the other components.

Memory card Interface
The player can be used with either a Compact Flash card or a MultiMedia Card.
The Compact Flash (CF) interface is pretty similar to a standard ATA interface. The nice thing about it, is that it can run in 8-bit mode, making it very simple to interface to a microprocessor.
In the yampp-7, the CF interface is mapped directly into the memorymap of the processor. To control the CF card and to read/write data, the standard ATA register bank of is used, and address bits A8-A11 is used to select the register.
The MultiMedia Interface is a serial interface with an SPI bus. As the mega161 already has such a bus, the MultiMedia card is simply hooked onto this bus, with a single address line used as chip select.

Address decoding
To simplify the addressing of the CF card and USB interface, a 74HC00 is used to gate the RD and WR signals to the USB chip depending on the state of address line A15. With this, the USB chip will be located at address 0x8000, and the CF card’s registers are located at 0x1000 to 0x1F00.

MP3 Decoder
The MP3 decoder is, as on other yampp’s the VS1001K chip from VLSI. It’s an easy to use decoder with a built in DAC. It’s clocked from a 12.288 MHz crystal, enabling bitrates up to 256k bps.
It also has a built in headphone amplifier.

Player control
The player is controlled with 4 pushbuttons. One of these is connected to the ICP input of the CPU, which can generate an interrupt to the CPU. When the player is stopped, it enters power-down mode after 1 minute. The interrupt from the button can then be used to wakeup the CPU from the low-power sleep mode.
All buttons have two functions, one is reached by a short press on the button, and the other by holding down the button. Depending on player state, the buttons control various functions.

Part Value Package
——– ————- —————–
R1,R6 10k R0805
R2,R3 100R R0805 *
R4 1M R0805
R5,R8,R11 4k7 R0805
R7 1k5 R0805
R10 2k2 R0805
R12 470 R0805
R13 33k R0805
R14,R15 27 R0805
R16 51k R0805
C1,C6,C7 100nF C0805
C9-C11 100nF C0805
C2-C5 33pF C0805
C8 10uF/16 ELNA_RV2_4
C14 10uF/16 Tantal ! C6032
C15 1uF/16 Tantal C3528
C12,C13 100uF/10 ELNA_RV2_63
D1 BAS32 SOD80 *
T2 BC817 SOT23
IC1 ATmega161L TQFP44
IC2 VS1001K SOIC-28
IC4 74HC00D SO14
IC5 MAX1811 SO8 **
Q1 4.000MHz HC49U-V Crystal
Q2 12.288MHz HC49U-V Crystal
Q3 6.00MHz Ceramic Resonator
J1 Compact Flash Connector
J2 LCD/Programming Angled Connector 2*5 2mm
SH1 MultiMedia Card Connector
X1 Headphones 3.5mm Jack
X2 USB Connector Type787780
SW1-SW4 ALPS Type SKHHLQ pushbutton

  • = only used with Ni-Mh cells
    ** = only used with Li-Ion cells

You can use either Li-Ion (recommended) or Ni-Mh cells for the player. A single Li-Ion cell is 3.6V, often available in a flat square form and is perfect for powering the player. If you use Ni-Mh cells, you need three cells in series to get 3.6V. Replacement Li-Ion cells for Mobile Phones is the cheapest way to power the player. You can use a number of different cells, I’ll try to maintain a list here of suitable cells.
On the left is a small collection of the cells I’ve tried so far. From the CF card, going clockwise it is: A Motorola V3688 600mAh Li-Ion cell, a similar Motorola cell with wires added, 3 * 4/5 AAA size Ni-Mh cells and last a Nokia 3310 950mAh Li-Ion cell.

Download sourcecode for yampp-7 Bootloader