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
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
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.
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
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
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
ok 11289.683KHz / 44.1 KHz = 256,002 also 256fache samplerate. ich denke, dass du deinen dac darauf einstellen kannst.
ja meinen dac kann man in beiden betriebsarten betreiben ok danke erstmal, werd das alles testen (komm leider erst kommenden donnerstag dazu) meld mich dann wieder :)
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
Hi, ich bastel auch grad etwas mit dem 89C51snd1c rum und hänge grade etwas. Wie hast du die IDE Platte an den Chip angeschlossen? Über Levelconverter? Wenn ja über welchen? Gruß Stefan
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.