Forum: Mikrocontroller und Digitale Elektronik problem mit sta013 mp3 decoder


von john (Gast)


Lesenswert?

Hallo alle,

ich bin dabei mir ein mp3 spieler zu basteln, der auf mega16, sta013 und 
cs4331 basiert. später werde ich noch CF oder CD ranhängen als source 
für die mp3s aber im augenblick benutze ich noch die parralelle 
schnittstelle um daten an den
controller zu senden.

das datenblatt für den sta013 gibts hier :
http://us.st.com/stonline/prodpres/dedicate/mp3/sta013.htm

das design für die schaltung habe ich von hier :
http://www.pjrc.com/tech/mp3/sta013.html

ich kann über i2c mit dem decoder kommunizieren. uploade die 2007 byte 
paare aus der .bin von der st website, setze dann die werte aus tabelle 
5 für 10Mhz crystal. setze PLAY, RUN, !MUTE.
dann geht der Data_req hoch und mein controller fängt ann daten zu 
senden, mit folgender routine.


#define MP3DDR    DDRC
#define MP3PORT    PORTC
#define MP3PIN    PINC
#define MP3DATA    PC5  // serial data line
#define MP3CLK    PC4     // serial clock line
#define MP3DATA_REQ     PC3
#define MP3RST    PC2

#define MP3DATA_LO cbi(MP3PORT,MP3DATA)
#define MP3DATA_HI sbi(MP3PORT,MP3DATA)

#define MP3CLK_LO cbi(MP3PORT,MP3CLK)
#define MP3CLK_HI sbi(MP3PORT,MP3CLK)

void sta_HWinit(void){
    cbi(MP3PORT, MP3DATA);
    sbi(MP3DDR, MP3DATA);
    cbi(MP3PORT, MP3CLK);
    sbi(MP3DDR, MP3CLK);
    sbi(MP3PORT, MP3DATA_REQ);
    cbi(MP3DDR, MP3DATA_REQ);
};

void sta_send_data(unsigned char byte){
    char i;
    for(i = 7; i>=0;i--){
        MP3CLK_LO;
        if((byte >>i)&1) MP3DATA_HI; else MP3DATA_LO;
        MP3CLK_HI;
    };
};

aus dem DAC kommt leider kein mucks.
wenn ich das syncstatus register abfrage erhalte ich 0x00 (also : 
Research of sync word, seite 15 im datenblatt)
und das Errorcode register enthält 0x20 ?!? obwohl es laut daten blatt 
nur 0x00,0x01 und 0x02 haben soll. ich nehme an, das 0x02 == 0x20 ist 
was auch sinn machen würde, denn 0x02 bedeutet DATA not available.

ich bin mit meiner weissheit am ende.

Ich hoffe, das jemand hiermit erfahrung hat und mir einen tipp geben 
kann.

vielen dank im vorraus,

john

p.s. wenn bedarf besteht, kann ich noch die komplette source posten. 
(avr code & windows code um mp3 per lpt zu senden)

von john (Gast)


Lesenswert?

ich habe jetzt noch mal ein paar test gemacht und eine text datei ann 
denn controller geschickt. die kommt korrekt an und die chars scheinen 
auch richtig an den sta013 gesendet zu werden ...

warum spielt das teil dann nichts ab ?

von ERDI - Soft (Gast)


Lesenswert?

Vielleicht Lautstärke falsch eingestellt oder immer noch im 
Mute-Modus... ?

von john (Gast)


Lesenswert?

nee nicht mehr im mute lautstärke ist egal das habe ich an den hifi 
verstärker angeschlossen.

wenn ich das FRAME_CNT register enthält auch konstant 0x01 also 
dekodiert das teil garnichts

von ERDI - Soft (Gast)


Lesenswert?

Kenne mich mit dem Teil nicht aus, aber besteht die Möglichkeit, die 
Daten, die man reinschreibt, auch wieder auszulesen? (Geht wohl nur im 
Stop-Modus, falls überhaupt.)
Bzw. Guck doch mal mit nem Oszi, was beim DAC alles ankommt.
Kommt was an, solltest du deinen DAC mal kontrollieren.

von john (Gast)


Lesenswert?

am DAC kommt nix an.

der sta akzeptiert die daten irgendwie nicht.

sie scheinen anzukommen aber der sta dekodiert sie nicht...

;(

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
Noch kein Account? Hier anmelden.