Mp3 Wiedergabe - AT89C51SND1C

Gast #147993
Lesenswert?

Hallo an alle

wie vielleicht schon aus älteren Threads bekannt versuche ich einen
MP3-Player mithilfe des AT89C51SND1C zu realisieren. Gelesen werden die
Daten von einer üblichen IDE-Festplatte, das funktioniert schon
einwandfrei.. kontrolliert über visuelle ausgabe bestimmter datensätze
am LCD..

Leider tut jedoch der MP3-Dekoder nicht was ich will. Er tut nämlich
garnichts. Nach aktivierung fordert er ein Frame an, und ladet so lange
Bytes bis das Frame komplett ist, danach treten sofort Layer, Sync. und
CRC Fehler auf.

Woran das genau liegt ist mir unklar.. für mich gäbe es 2 Ansätze:

1.) Wir geben ihm das gesammte MP3-File.. ist das so richtig? oder muss
ich den reinen Datenstrom herausfiltern und ihm diesen geben? also ohne
ID3-Tags etc..?

2.) Die Dekoderfrequenz... ergibt sich durch Teilung des PLL-Taktes.
Leider war es mir anhand des Datenblatts nicht möglich hier konkrete
Frequenzen herauszufinden, das einzige was angegeben ist sind
Mindestfrequenzen. Reichen diese aus, oder muss man sich bei bestimmten
bitraten,samplingfrequenzen etc an eine bestimmte dekoderfrequenz
halten.. und falls ja wie errechnet man diese?

Vielen Dank für eure Hilfe

Schöne Grüße
Manuel
Gast #147994
Lesenswert?

Hi,
wenn deine dateien id3v2 tags am anfang haben darfst du die nicht dem
dekoder geben. der versteht die nicht. bei den frequnezen musst du bei
dem dekoder nur ueber dem minimum bleiben. das interface zum audio-dac
braucht aber eine bestimmte frequenz(passend zu samplingrate der
dateien), damit die audio daten in der richtigen geschwindigkeit
rausgehen.

Gruß tobias
Gast #147995
Lesenswert?

Hi Tobias, danke für die schnelle Antwort

weißt du zufällig wie ich einfach und effektiv den ID3V2 header
wegschneiden kann? hab mir verschiedene dateien angesehen, und das
sieht oft ganz anders aus.. hab da noch keine wirkliche übereinstimmung
gefunden.. vielleicht hast du da ne idee?

übrigens: hast du vielleicht ne andre kontaktmöglichkeit als dieses
forum? falls du sie nicht im forum posten magst kannst mir gern auch ne
email schicken.
Gast #147996
Lesenswert?

Hi,
warum nicht im forum? Nur so koenen auch andere leute was davon haben.

Es ist eigendlich relativ einfach den ID3 heder wegzuschneiden. Du
musst einfach nur nach dem ersten gueltigen mp3 frame suchen. das
beginnt immer mit 0xFF und 0XFA oder 0XFB.

Ich hab diesen java code benuzt um ihn die position in der datei zu
ermitteln:
RandomAccessFile mp3In = new RandomAccessFile(file,"r");
while((temp=mp3In.read())!=-1){
  if(temp == 0xFF){
    temp = mp3In.read();
      if(temp==0xfb || temp==0xfa){
        mp3In.seek(mp3In.getFilePointer()-2);
        ltemp=mp3In.getFilePointer();
        break;
      }
  }
}

sollte leicht auf c portierbar sein

Gruß Tobias
Gast #147997
Lesenswert?

hast ansich recht, weiß nur nicht wie oft du hier reinschaust.. aber
scheinbar eh häufig :)

danke nochmals

zusammenfassend:

der MP3-Dekoder Takt ist egal, solange er mindestens der
Mindestfrequenz laut Datenblatt entspricht.

Das erste Frame bekomme ich durch einfaches suchen nach FF FA/FB, wobei
dieses FF FA/FB dann zum ersten frame schon dazugehören (oder?)

Der Audio-Ausgang-Clock ist von der samplingrate abhängig.. hast du da
vielleicht genauere anhaltspunkte für mich.. eventuell ne formel oder
ne umrechnungstabelle? als dac verwend ich einen AD1858.

Vielen Dank

grüße
Manuel
Gast #147998
Lesenswert?

Hab mir damals ueber ein kleines java programm( :) ) die werte fuer
20mhz und 44.1khz(gibt eh kaum andere raten) ausgerechnet.

Hier das ergebnis:

/*
Clock = 20000.0
nDiv = 125.0 rDiv = 568.0 PLLClock = 90317.46
aDiv = 7.0 AudioClock = 11289.683
mDiv = 3.0 MP3Clock = 22579.365
*/

void InitMP3()
{
  MP3CLK=3;
  MP3VOL = MP3VOR = 0x0F;
  MP3CON=0xA0;
}

void InitAudio()
{
  AUDCLK=7;
  AUDCON0=0x86;
  AUDCON1=0x40;
  wait_10ms(1);
  AUDCON1=0x41;
}

void InitPLL()
{
  PLLNDIV=125;
  PLLRDIV=0x8E;
  PLLCON=0x02;
  while(!(PLLCON & 0x01));
}

Ich habe damals aber einen PCM1728 genommen(Ich schaetze mal genauso
ein Sample wie dein AD :) )

Ich glaube der hate eine 386fache sample rate. weis es aber leider
nicht mehr genau.

Gruß Tobias
Gast #148001
Lesenswert?

Hey :)

Danke erstmal, der MP3 Dekoder funktioniert nun (jippie)

jetzt fehlt praktisch nur noch der DAC.. könntest du mir vielleicht
erklären wie du die frequenzen für ihn berechnet hast? damit ich das
mit meinem DAC nachvollziehen kann

vielen dank

grüße
Manuel

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren