STA015 MP3 Decoder Evaluation Board

Gast #187064
Lesenswert?

Hallo,
hier mal ein kleines Testboard für den STA015 MP3 Decoder. Den Decoder
samt gutem DA-Wandler bekommt man zur Zeit sehr günstig in Form von
alten MP3-Playern für Siemens-Handys bei ebay (~2€ + Fracht). Das
Auslöten ist mit einem Heißluftgebläse kein Problem, ohne wirds etwas
schwieriger geht aber auch.
Die Mute-Schaltung (Transistoren Q1 und Q2) stammt aus einer App-Note
von ST. Ich hab die Schaltung aber noch nicht ausprobiert und die
Transistoren erstmal weggelassen.
Über JP4 kann der MP3-Decoder mit einem externen Takt versorgt werden,
ich verwende aber einen 8MHz Quarz.

Die Firmware ist für den mega128, andere AVRs gehen natürlich genauso,
mann muss dann nur die Verbindungen an die jeweiligen SPI-Pins
anpassen.
Bei mir sieht die Verbindung folgendermaßen aus:
BIT_EN -> PB0
SCKR -> PB1 (SCK)
SDI -> PB2 (MOSI)
DATA_REQ -> PB4

SCL -> PD0 (SCL)
SDA -> PD1 (SDA)

Um Die UART-Baudrate anzupassen, müssen in der uart.h die gewünschte
Baudrate und der Prozessor-Takt angegeben werden.
In der main.h muss noch eine Routine zum Lesen der Daten von einem
Speichermedium eingefügt werden. Ich verwende eine 32MB
Multi-Media-Karte.
Angehängte Dateien:
Gast #187068
Lesenswert?

Hallo,
ich ätze meine Platinen selber, daher bin ich nich wirklich in der Lage
welche zu verkaufen (Dauert einfach zu lange welche zu machen...)
Aber ich hab mal das Protel-File angehängt, so dass ihr sie euch bei
PCB-Pool oder so machen lassen könnt. (Keine Ahnung wie da so die
Preise sind)

@mode: Möglich wäre das wohl, dürfte allerdings ne nette
Herausforderung sein.
Gast #187070
Lesenswert?

hättste mal gerber files geschickt, damit kann mein fertiger was
anfangen. Gibt es Protel irgentwo, dann könnt' ich die auch selbst
generieren. Eagle haste nich? Weil das würde auch direkt gehen.
geht sicher anderen auch so.
AxelR.
Gast #187071
Lesenswert?

Hatte fix bei PCB Pool nachgeguckt die ham keine Gerber-Files genommen,
aber Protel...
Im Anhang also auch nochmal die ganzen Gerber Files. Den Top-Layer kann
man übrigens weglassen, sind nur ein paar Brücken die man da löten
muss.

Für Eagle müsst ich das Board neu routen, da hab ich eigentlich keine
Lust zu :P
Angehängte Dateien:
Gast #187073
Lesenswert?

@benedikt,

Ja das ist ganz normales MP3, nix DVB. Kann man sich mit nem Tool auch
als MP3 auf HD Streamen. Momentan hoere ich hier mit 112K und die Quali
is durchaus i.o.
Das ganze hab ich bei mir fuers Bad gedacht. Fuer die Musik morgens
unter der Dusche. Dann werd ich nicht mehr mit der Werbung der localen
Radiosender hier zugeschuettet. Und viele 1000 Sender Auswahl....

Warum posten wir nicht in uC und Elektronik, das hier ist doch schon
was mehr als ein Codeschnipsel.



Gruss

Mode
Gast #187074
Lesenswert?

@ape
kannst du bitte die Gerberlisten benennen, so kann ich die schwer nach
Target konvertieren. wenn ich wüsste was ist zB. unten oben bestückung
bohrloch usw.
Ich stelle die " vom Glauben " konvertierten, dann auch hier rein.
mfg
Gast #187075
Lesenswert?

Hallo,
die Dateiendungen geben doch an um was für Layer es sich handelt:
gbl = Bottom Layer
gbo = Bottom Overlay
gbp = Bottom Paste
gbs = Bottom Solder Mask
gd1 = Drill Drawings
gko = Keep Out
gm1 = Mechanical 1
gtl = Top Layer
gto = Top Overlay
gtp = Top Paste
gts = Top SolderMask

Hab übrigens den Drill Guide Layer vergessen, hab den auch nochmal
angehängt
Angehängte Dateien:
Gast #187076
Lesenswert?

@Ape
Sorry, daß das jeder wusste, nur ich nicht, bin zu blöde.
Für Protel, (war doch Protel) will Target noch Bohre- und Blendenlisten
haben. Die Dateiendungen sollen sein:
Bohre   : *.DRR
Blenden : *.A**
mfg
Gast #187079
Lesenswert?

@Bernd
Bohr-und Blendenlisten sind für -sagen wir- uralt Gerber.
Keiner arbeitet mehr mit Blendenlisten usw. sind alles Rasterplotter.
Gut, probiermal Gerber247X einzulesen. In diesen Daten sind die
Emulationsmakro's und die ToolTables im Gerberfile integriert.
Vielleicht kennt Target dises -aktuelle- Format.
Bekomm' ich jetzt erst mit:
kann Target Gerber einlesen, so? Warum kann mein Eagle das nicht auch
von Hause aus??

So gute Nacht, schon wieder spät...
AxelR
Gast #187081
Lesenswert?

@ape

Eine kleine Bitte: könntest du die beiden Protel-Dateien (.pcbdoc und
.schdoc) mal im Protel99(SE)-Format speichern und hier posten oder mir
mailen? Leider habe ich zu DXP keinen Zugang und ich würde mir gerne so
ne Leiterplatte ätzen. Gerber ist ungeeignet, da die Löcher nicht
angezeigt werden.

Vielen Dank.

Gruß
Thorsten
Gast #187082
Lesenswert?

Hallo,
Protel99 hab ich nicht in den Export-Formaten gefunden, aber Protel 3.0
(ich hoffe mal das is alt genug :)
Wenn du die Platine selber ätzen willst, brauchst du doch aber
eigentlich nur das Bild vom Layout, das ist doch in meinem ersten
Posting enthalten (die png-Datei).
Das Schematic-File wird dir wenig nützen denke ich, da du ja die
Bibliotheken auch nicht hast.
Angehängte Dateien:
Gast #187083
Lesenswert?

Keine Ahnung, ob das mit dem png-File so gut geht. Vielleicht gibts da
irgendwie Skalierungsprobleme? Wollte mal ein PDF als Vorlage nehmen,
da kam auch nur Müll bei raus.

Was die Libraries angeht, so ist das ja das schöne an Protel. Aus nem
Schaltplan und auch aus einem Layout kann man sich eine Lbrary
erzeugen. Die ursprünglichen Libraries sind IMHO nicht erforderlich.
Ich hoffe ich erzähle jetzt kein Blödsinn, aber ich meine das das geht.


Jedenfalls vielen Dank für deine Mühe!
Gast #187084
Lesenswert?

Mhmm, kann sein. Ich kenn mich zugegebener Maßen mit Protel auch nich so
super aus :) Also jetzt auch noch das Schematic im Anhang.

Zum png: sollte eigentlich nich so schwierig sein: mit nem
Grafikprogramm öfnnen (glaube selbst Paint kann mittlerweile png
öffnen), evtl. noch Auflösung auf 600dpi stellen (müsste aber
eigentlich schon sein) und ausdrucken, da sollte eigentlich nichts
verzerren.
Angehängte Dateien:
Gast #187088
Lesenswert?

noch was: Falls jemand die Schaltung neu designed, wäre es ganz sinnvoll
eine zweite 5V Versorgung mit vorzusehen, mit der der DAC versorgt wird.
 Levelshifter sind nicht notwendig, da der DAC auch mit 5V-Versorgung
3,3V sicher als high erkennt.
Mit 5V-Versorgung für den DA-Wandler könnte man sich nämlich die
momentan verwendete Dämpfung von 10dB sparen.

Hatte beim entwickeln der Schaltung gar nicht dran gedacht, das 3,3V
nicht ausreichen um einen vollen Line Pegel zu schaffen.
Gast #187090
Lesenswert?

Hallo

Zuerst einmal großen Dank für die Veröffentlichung des Demoboards,
und den Tipp wie man den STA015 billig bekommen kann an ape.

Hat von euch auch schon jemand das Board nachgebaut?

Bei mir funktioniert es leider nicht ganz.
Ich lese den mp3 stream von einer MMC Karte.
Das Board spielt zwar, aber es hört sich an als ob der Sänger
stottert.
z.B.: My way (nein ich bin noch keine 60, aber mir fällt gerade kein
besseres Beispiel ein ;-)

IIIIII lllliiivvvedd aaa livvveee thatttssss fffulll,...

Hat jemand vielleicht eine Idee was ich falsch mache ?


LG
Michael

Debug Auszug:


STA015 initialisieren...
IDENT: 0xAC
VERSION: 0x20
SOFTVERSION: 0x11
konfigurieren... System OK

Karte gefunden!!
Initialisierung der MMC/SD-Karte ENDE!
File Found!
System OK!


128 04 1B6490
128 04 1B6490
128 00 1B6490
128 00 1B6490
128 00 1B6490
128 04 1B6490
128 00 1B6490
128 04 1B6490
128 00 1B6490
128 00 1B6490
128 00 1B6490
128 00 1B6490
128 04 1B6490
128 00 1B6490
128 00 1B6490
128 00 1B6490
128 00 1B6490
128 04 1B6490
Gast #187091
Lesenswert?

Mit welcher Taktrate läuft dein AVR?
Möglicherweise schafft er es einfach nicht schnell genug die Daten in
den Dekoder zu schaufeln, dann tritt genau der von dir genannte Effekt
auf.
Häng einfach mal eine LED (oder besser, falls vorhanden ein
Oszilloskop) an die DATA_REQ Leitung. Es dürfen immer nur kurze Peaks
zu sehen sein, bzw. ein schwaches leuchten bei der LED.
Gast #187092
Lesenswert?

Hallo Ape

Meiner läuft eigentlich auf 8Mhz, ich verwende den internen
Oszillator.
Werde es mit einem externen Quarz versuchen, gute Idee!
Kann es vielleicht daran liegen, das ich für die MMC einen software
spi
verwende ?
Das MP3 hat 128 k /s.

LG
Michael
Gast #187093
Lesenswert?

Antwort von Ape
>>>
Hallo,
ja das Software SPI wirds sein denke ich, damit lassen sich bei weitem
nicht
die Geschwindigkeiten des Hardware SPIs erreichen. Ein Software SPI ist
aber
eigentlich auch gar nicht notwendig, da man ja mit dem BIT_EN Pin des
STA015
und dem Enable Pin an der MMC auswählen kann welche von beiden
angesteuert
werden soll. Auf diese Weise kann man beide ans Hardware SPI hängen. Du

musst dann nur immer beim Wechsel auf das jeweils andere Gerät das SPI

Config Register ( SPCR ) anpassen.

also ungefähr so:

// Main-Loop
while(1) {
    SPCR = mmcSpcr;
    // MMC aktivieren, Chip Select auf Low
    // einen Sektor von der MMC lesen
    // MMC deaktivieren, Chip Select auf High

    SPCR = sta015Spcr;
    // STA015 aktivieren, BIT_EN auf High
    // Daten an Decoder senden
    // STA015 deaktivieren, BIT_EN auf Low
}

mfg ape

PS: Wär vielleicht ganz gut, wenn wir die Diskussion im Forum
fortsetzen,
auf diese Weise haben andere die das gleiche Problem haben auch was
davon.
<<<<
Hallo Ape

Hast recht, deswegen war ich so frei und habe ich deine Antwort ins
Forum kopiert
Gast #187094
Lesenswert?

Ich hab mir auch die Bauteile vom mp3-Player ausgebaut.
Frage: was braucht der als Takt? Reicht es, wenn ich den 8MHz der auch
auffem Board war benutze (für den STA)?

Kannste zufällig noch Eagle hochladen?

dave
Gast #187096
Lesenswert?

Hallo,
wenn ich jetzt ein - sagen wir  - Diktiergerät mit den Teilen bauen
wöllte... Geht ja nicht so ohne weiteres oder? Kann der STA nur
decodieren oder auch encodieren? Was nimmt man da dann am besten für
einen Chip?

AxelR.
Gast #187099
Lesenswert?

Für einen MP3 Encoder muss man halt noch nen AD-Wandler an den STA015
hängen, hab ich aber noch nie ausprobiert. Ich weiß auch nicht wie man
dann die encodierten Daten aus dem Chip wieder rausbekommt, das normale
SPI Interface hat keinen Data-Out Pin.
Gast #187101
Lesenswert?

Hallo,
also die Rechenleistung ist kein Problem, allerdings passt in das
interne RAM kein sonderlich großer Buffer rein, das macht es recht
schwierig eine lückenlose Wiedergabe zu garantieren. Ein externes RAM
sollte schon sein, allerdings werden dann die Pins für ne CF Card
knapp, die musst du dann auch an die gleichen Ports hängen wie das SRAM
-> der YAMPP zeigt wies geht.
MMC/SD Karte sollte aber kein Problem sein.
Gast #187102
Lesenswert?

Für einen halbwegsgescheiten mp3 Player brauchts glaub unbedingt nen
externen RAM mit genügend Größe...
Wenn ich mir allein überlege, wieviel so eine Ordnerliste, in der alle
Files eines Ordners drinstehen speicherplatz kosten. Man will natürlich
nicht nur 8.3 Namen angezeigt haben.. am Besten natürlich die id3-Tags
und die sind bekanntlich groß.
Da hat man wieder Speed vs. Platz : man könnte natürlich bei jedem
runterscrollen in der Liste die ganze Liste auslesen... ;) und dann die
richtigen Items raussuchen... ich denke aber, mit nem 32 oder 64er RAM
ist man sicher gut bedient.

Wenn wir dabei sind: hat jemand ne Bezugsadresse für so einen bei
3,3V?

dave
Gast #187105
Lesenswert?

Mir fiel grad auf, beim betrachten (in Eagle ;) des Chips, dass der 3
Steuer/Datenleitungen für nen ADC hat.. ich denke, der steuert den ADC
beim Encoden selbst an und raus kommts am IO-Port.

Den Quarz sicher an XTI und XTO anschließen.. denk isch mal. Weiste
zufällig, wie der Quarz aussem Player belegt ist?

dave
Gast #187107
Lesenswert?

@ape

Hast du dein STA015-Board eigentlich mal in Betrieb genommen? Wollte
wissen, wie das funktioniert und ob du noch Änderungen vorgenommen
hast. Denn ich bin jetzt mal dazu gekommen, eine kleine Platine (100%
SMD) zu entwickeln. Im wesentlichen habe ich deinen Entwurf benutzt,
mit ein paar Änderungen:

1. Externe Taktmöglichkeit für den STA015 ist weggefallen
2. XTAL ist 10MHz (hatte keine 8MHz)
3. Pullups am IIC weg, mache die immer auf Masterseite
4. Mute-Circuit ersatzlos gestrichen
5. Stromversorgung (VCC) ist 5V, Spannungsregler auf 3.3V
6. Spannungsregler kann überbrückt werden -> VCC = 3.3V
6. VCC für den CS4340 per Jumper auf 5V oder 3.3V setzbar

Das ganze gibt eine reine Decoderplatine, das ADPCM-Encoding habe ich
komplett weggelassen.

Bin gerade am überlegen, ob ich noch nen Pegelwandler von 5V auf 3.3V
für die Datenleitungen einbaue. Denn wenn der µC auf 5V läuft, kann ich
ja keine 3.3V-Devices ansteuern. Schreib einfach mal, was dir zu dem
geschriebenen so einfällt.

Gruß
Thorsten
#187108
Lesenswert?

Hallo,
die Platine lief bei mir tadellos, hab sie aber mittlerweile schon
nciht mehr im Einsatz :)
Deine Änderungen sollten alle kein Problem sein, beim 10MHz Quarz muss
dann natürlich die Initialisierung des Decoders auf die Taktfrequenz
angepasst werden. Auch ein Pegelwandler ist nicht die schlechteste
Idee, allerdings ist das Pegelwandeln vom I2C Interface nicht ganz so
einfach. Ich hatte das gleiche Problem und hatte die vorgeschlagene
Pegelwandlung aus den Philips IIC Specs mit 2 FETs ausprobiert. Auf dem
Oszi sah alles ganz toll aus hat aber trotzdem nicht funktioniert. Hab
daher dann die Pullups direkt auf 3,3V gelegt. Dem AVR reicht das auch
bei 5V Betrieb noch jedoch muss man die Widerstände schon recht klein
wählen. 1k8 hatte bei mir gut funktioniert.
Ansonsten kanns noch nicht schaden die Reset Leitung rauszuführen. Ich
hatte während des Testbetriebs mit langen Leitungen doch den ein oder
anderen Absturz des Decoders.

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