AVR-MP3-Player mit dem MP3 Dekoder VS1011

..... in Kürze kommt hier mehr.

Dies sind meine ersten SD-Karten und MP3-Dekoder Versuche.
Der VS1011 und der SD-Karten-Slott hängen beide an der gleichen SPI-Schnittstelle vom Prozessor und der SPI-Busstakt beträgt 4 MHz.
Die SD-Karte muss mit FAT16 formatiert sein und alle Audiodateien müssen im Root-Verzeichnis abgelegt sein. Dies ist notwendig um nicht so viele Resourcen vom Prozessor zu belegen.

Bis jetzt habe ich das Audiomodul mit MP3-Dateien:
- Abtastrate 22kHz ; Bitrate = 32 kbit/s ; Mono
- Abtastrate 16kHz ; Bitrate = 32 kbit/s ; Stereo
getestet.

Die sehr gute Klangqualität hat mich hierbei etwas überrascht.
Zur Zeit betreibe ich den Mikrocontroller mit dem internen RC-Oszillator ( 8 MHz).



Projektziel
Universielles Audio-Modul, welches MP3 / WAV-Files von der SD-Karte abspielen kann. Für die Steuerung welche Dateien abgespielt werden sollen, werden später diverse IO-Pins verwendet.

Für Testzwecke (Entwicklungsphase) steht eine RS232-Schnittstelle zur Verfügung um direkt mit dem Audio-Modul interaktieren zu können.

Konzept
Für die Umsetzung habe ich mich für den MP3-Dekoder Chip VS1011E von VLSI entschieden. Und als Mikrocontroller kommt mein geliebter ATmega 162 (wegen der JTAG-Schnittstelle) zum Einsatz.

Mein Konzept sieht zur Zeit vor, dass die Audiodaten erst vom Prozessor in 32 Bytes Blöcken von der SD-Karte gelesen werden, und dann vom Prozessor an den Audiocontroller gesendet werden. Hierdurch wird quasi die Hälfte der möglichen Bandbreite verschwendet. An dieser Stelle kann die Software dahingehend optimiert werden, dass man den Audioprozessor und die SD-Karte im Streamingmode ( SD-Karte: CMD18) verwendet, und die Audiodaten direkt von der SD-Karte an VS1011E Controller sendet. Dadurch würde sich die mögliche Bandbreite wahrscheinlich verdoppeln.

Da der VS1011E und die SD-Karte mit 3,3 V betrieben werden und ich keine Pegelanpassung für den Atmel-Controller machen wollte, habe ich mich dafür entschieden, den ATmega162 ebenfalls mit 3,3 V zu betreiben. Dafür wird in Kauf genommen, dass man den Prozessor nicht mit einem 16 MHz Quarz betreiben kann. Für die Anbindung des MAX-232 Schnittstellentreibers kann die RXD-Leitung zum Prozessor hin mit einem einfachen Widerstandsspannungsteiler an den 3,3 V Pegel angepasst werden.

Realisierung

Schaltplan:


Schaltplan - Audiomodul - Blatt 1
Abb. 1 - Schaltplan - 1. Seite - Audiomodul


Schaltplan - Audiomodul  RS232 - Blatt 2

Abb. 2 Schaltplan - 2.Seite - Audiomodul serielle Schnittstelle RS232

Hinweise zur 2.Seite: R15 = 0 ohm, R16 und R17 entfallen

Eagle3D-Bild:
Eagle3D - Bild

Downloads:
Schaltplan als PDF-Datei
Bauteilliste




Vorab-Info:

  • ATmega 162 (Versorgungsspannung 3,3V )
    Für den ersten Test wurde der interne RC-Oszillator (8 MHz) verwendet. Damit RS232 Schnittstelle richtig funktioniert, muss bei der Programmierung an die EEPROM - Adresse 0x000 das OSCAL-Byte hinterlegt werden, da die Software eine Kalibrietung der Oszillatorfrequenz durchführt.
  • MP3-Dekoder VS1011 , der im Newmode betrieben wird.
  • SD-Karte Schnittstelle basiert auf der PETIT-FAT - Libraray, welche ich an CodevisionAVR angepasst habe. Weitere Infos sind hier zu finden : Petit FAT Filesystem
    Der Vorteil der Petiit Lib ist, dass hier nur wenige Resourcen vom Prozessor belegt werden.
  • SPI und JTAG Schnittstelle , ISP
  • RS232-Schnittstelle ( 19200 8 N 1)
  • Bei der Programmierung darauf achten, dass der Prozessor mit 3,3 V betrieben wird, deshalb sollte der Programmer auf 3,3 V eingegestellt werden, sonst kann der VS1011 zerstört werden
  • Programmierung in C mit dem CodeVisionAVR Compiler
  • SD-Karte muss mit FAT 16 formartiert werden. Prinzipiell könnte auch FAT32 verwendet werden, da dies von der Petit - Lib auch unterstützt wird. Für meine Testzwecke beschränke ich mich auf FAT 16

 

Überarbeitete Version (Index 01) von der Schaltung


Modifikationen:

  • SD-Kartenslot um 180° gedreht
  • 5 Abblockkondensatoren für den VS1011E auf der PCB platziert (vorher nur im Schaltplan)
  • Mehr Platz für den ISP-Wannenstecker vorgesehen
  • Signale für von dem SD-Karten-Slot:
    - Detect- SD-Karte eingeschoben
    - WP-Prot:  Status für den  Schreibschutz
    auf I/O Eingänge von Atmel geführt
  • 2x Schutzwiderstände in den Audioausgangsleitungen vor den Elkos eingefüght (18 Ohm)

Schaltplan

Schaltplan Seite 1 - Version 01

 

Schaltplan Seite 2 - Version 01

 

Downloads:
Schaltplan als PDF-Datei (Index 01)

Vorschau von der  überarbeitete Version:
Eagle3D - Leiterplatte L01

Eagle3D - Leiterbahnseite