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.
Hallo Ape,
besteht bei dir evtl. die Möglichkeit eine einzelne Testplatine
käuflich zu erwerben?
Wenn ja, schick 'ne Mail an o.a. Adresse.
Gruss Volker
Man man man,
Da komme ich meiner Idee einen Shoutcastplayer zu bauen ja ganz schon
nahe. (Shoutcast ist Radio über Internet im MP3 format)
z.B.: http://212.73.29.83:8500 (mit Winamp oä öffnen)
Wenn ich dieses Board und den Webserver von Uli modifiziere koennte das
ja gut klappen.
Was meint ihr?
Gruss
Mode
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.
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.
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
@mode
Ist das wirklich ganz normales mp3 Format, das man mit einem VS1011,
STA015 usw. dekodieren kann ?
Einen DVB Radio Stream kann ein VS1011 auf jedenfall nicht dekodieren.
@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
@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
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
@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
@Ape
dann gebe ich auf.
@Alle
Ist "Gerber einlesen" bei anderen Programmen möglich, um daraus
wenigstens ein GIF oder PDF oder sonst was draus zu machen ?
mfg
@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
@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
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.
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!
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.
Hab mir die platine nach der png dataei gemacht. Geht perfekt.
Jetzt hab ich aber mal ne Frage. Läuft die Schaltung mit 5V oder
3,3V? (Ich vermute 3,3V)
Gruß Wolfgang
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.
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
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.
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
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
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
Hallo,
ja ein 8MHz Quarz is vollkommen ausreichend bzw. mit meinem Code auch
zwingend erforderlich, da der STA015 halt auf 8MHz eingestellt wird.
Eagle Files hab ich leider keine.
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.
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.
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.
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
32kx8 SRAMs gibs erstaunlicherweise zu einigermaßen akzeptablen Preisen
(~5) beim großen C, einfach mal auf der Seite nach 62256 suchen. 3,3V
sind die wohl alle.
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
@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
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.