AVC-LAN MP3 Player

In diesem Projekt möchte ich einen MP3 Player auf Basis von SD(HC)-Karten bauen. Ziel ist es, den Player in meinem Wagen (Toyota-Corolla) zu integrieren. Der Player soll einen CD-Wechsler simmulieren und somit eine Bedienung über das Werksradio ermöglichen. In einem früheren Projekt habe ich bereits einen AVC-LAN Line-In Adapter gebaut, an dem ich meinen MP3-Player anschließen konnte.

Geplante Features

  • Abspielen von Audiodateien (MP3, OGG, AAC, WMA)
  • Unterstützung von SD und SDHC Karten (2, 4, 8 GB) mit FAT32 Dateisystem
  • 2 Slots für SD-Karten (Auswahl der Slots über Taster)
  • zusätzlicher Line-In Eingang
  • Einteilung der Songs in Ordnern (bis zu 99 Ordner mit jeweils bis zu 99 Musikdateien)
  • Alphabetische Sortierung der Ordner und Songs
  • Bedienung über Werksradio und Lenkradfernbedienung (Order entspricht DISC eines CD-Wechslers)
  • Schneller Wechsel der Ordner und Songs
  • Positionsmerker für Slot1 und Slot2 (unabhängig voneinander)
  • LCD Display zur Anzeigen von ID3 Tags und Statusinformationen

Sonderfunktionen:

  • Spezieller Modus fuer Podcasts und Audiobooks (Positionsmerker, Vor-Zurueck-Spulen)
  • Unterstützung von Playlisten (M3U)

Technik

Zunächst gab es die Überlegung ein 8-Bit AVR-Mikrocontroller mit genügend SRAM (>= 4KBytes) einzusetzen. Den Speicher brauche ich, um Daten zwischenspeichern zu können (FAT, SD-Karte, sonstige, z.B. um den schnellen Zugriff auf Musikdateien zu realisieren). Insbesondere die Sortierung der Ordner und Dateien wird wahrscheinlich viel Speicher in Anspruch nehmen. Da die AVRs mit viel SRAM nicht gerade billig sind, habe ich mich nach ARM-Mikrocontroller umgeschaut. Die Atmel AT91SAM7x sahen interessant aus, doch nach etwas Rechere im Netz wurde ich auf die Controller mit ARM-CORTEX M3 Kernen aufmerksam. Die Funktionalität soll nun ein ARM-Mikrocontroller, hier der STM32F103xx, übernehmen. Ich kenne mich mit ARM-Controllern nicht aus, daher ist dies der richtige Zeitpunkt sich in die Materie einzuarbeiten.

Komponente Hardware Funktion
Steuerung STM32F103xx Mikrocontroller mit ARM-Cortex M3 Kern Herzstück des Players
Audio Decoder VLSI VS1053b Hardware Audio Dekoder (MP3, OGG, AAC, WMA, …)
LCD Display LCD Display mit 16×2 Zeichen Anzeige von Statusinformationen
AVC-LAN Adapter k.A. (siehe AVC-LAN Line-In Adapter) Kommunikation mit Werksradio
Stromversorgung evtl. Li-Ion Stützbatterie, Schaltregler, Laderegler, Stromversorgung

Meilensteine

  • Ansteuerung des USART beim STM32F103xx (fuer Debug-Ausgaben)
  • Anbindung einer SD-Karte über SPI
  • Implementierung eines FAT32 Dateisystems
  • Implementierung von speziellen Datei-Operationen (Sortierung, Caching, Indexing, usw.)
  • Anbindung des MP3 Dekoders
  • Anbindung eines LCD Displays
  • Realisierung des AVC-Lan Moduls
  • Realisierung des Moduls für die Stromversorgung

Hardware

Speichernutzung des STM32F103xx

Zweck Größe
File System Cache 1024-4096 (x-mal 512bytes Sektoren)
Audio Data Cache 1024-4096 (x-mal 512bytes Sektoren)
Ordner/Datei-Tabelle 5*100 = 500 bytes (32bits Sektornummer, 8bits Index)
Ordnername 100 bytes (Rest wird abgeschnitten)
Dateiname 100 bytes (Rest wird abgeschnitten)
ID3 Titel 50 bytes (Rest wird abgeschnitten)
ID3 Album 50 bytes (Rest wird abgeschnitten)
ID3 Artist 50 bytes (Rest wird abgeschnitten)
ID3 Genre 20 bytes (wenn überhaupt notwendig)
Titelnummer 1 bytes
Discnummer 1 bytes
Dateiposition 4 bytes

Anmerkungen:

Der Cache Speicher für Audiodaten wird als 512/32-bytes Ringpuffer realisiert. Dabei werden 3 Zeiger eingesetzt, 2 für das Lesen und Schreiben des Puffers mit SD-Karte (512 bytes-Basis) als Quelle und 1 Zeiger für das Lesen für den Audio-Dekoder (32 bytes-Basis). Der Puffer sollte möglichst die Größe eines Clusters (FAT32) haben. Dadurch werden besonders gute Lese-Raten erzielt (sofern das hier überhaupt relevant ist).

 
 
technical/mp3_player_avc_lan.txt · Last modified: 2011/01/20 12:08 by adminuser
Recent changes RSS feed Creative Commons License Valid XHTML 1.0 Valid CSS Driven by DokuWiki
Drupal Garland Theme for Dokuwiki