Hi Leute, ich hab da mal eine grundlegende Frage um Daten von einem PIC18F87 zu einem WM8711B zu schaufeln? Der PIC ist mit 40MHz getaktet und die zentrale Frage ist ob ich damit eine mehrspurige Audiowiedergabe realisieren kann. Erreichen will ich das indem ich die zusammenaddierten PCM Werte aus Wavdateien zum DAC sende. Das Wav Format ist 48kHz/16Bit/Stereo, so dass ich ca. alle 20,8µS ein Sample mit 2 x 16Bit zum DAC senden muss. Der DAC seinerseits wird mit einem eigenen Quarz betrieben und erzeugt dadurch seinen eigenen Takt um die Daten zu verarbeiten. Meine Frage nun: Wenn ich dem DAC Daten im Slave Mode schicken will, muss dann die Bit Clock die der PIC zum sender der Daten generiert exakt an die Samplerate und den DAC Takt angepasst sein oder kann ich mir die Frequenz für die Bit Clock aussuchen und sende dann alle 20,8µS neue PCM Werte so zum DAC? Ich denke mal das der DAC nicht anders ist als die meisten, wer aber nochmal nachlesen will kann dazu ab Seite 20 im Datenblatt infos finden, ich lese die Antwort auf meine Frage da jedoch nicht raus. Wahrscheinlich mangels Erfahrung mit DAC's. Datenblatt: http://www.wolfsonmicro.com/documents/uploads/data_sheets/en/WM8711BL.pdf Vielen Dank
moin, ich verwende zwar nicht wm8711 sondern den wm8762 mit einem pic32... bei mir ist die bclk synchron zur mclk... aber glaub das muss nicht unbedingt sein... wichtiger ist dort die synchronitaet von mclk und daclrc... ist schon bisschen her als ich die ansteuerung gemacht hab beim 8762 ist es wenn ich mich richtig erinner so wenn die mclk und daclrc 8 clks auseinander laufen muted der dac... als kleiner tip... wenn der PIC18F87 pwm unterstützt wuerd ich die mclk fuer den dac damit erzeugen ... sofern du nicht zwingend die 100% richtige samplerate brauchst... der vorteil ist das du eben mal ohne gross was zu loeten die samplerate aendern kannst...
Hi Egon, danke für die Antwort. Grundsätzlich benötige ich keine genaue samplerate, ich bekomme allerdings zeitliche Probleme wenn ich die bclk so genau einhalten muss. Vielleicht denke ich aber auch zu umständlich. Wenn ich die Daten im Slave mode senden will, muss ich ja letztlich die Takte der mclk zählen um herauszubekommen wann die nächste Sample-Sendung erforderlich ist. Aber alleine das zählen stellt den PIC vor große zeitliche Probleme. Wenn PIC und DAC synchron laufen kann ich dafür ja einen Timer Interrupt verwenden, aber dann hab ich immer noch das Problem das ich die Bit Clock erzeugen muss. evtl mit SPI? Irgednwie ist mir das Grundprinzip noch nicht ganz klar!
mir sagt der slave mode gerade nicht so viel... das hat der 8762 anscheinend nicht... leider auch keine zeit das datenblatt zu lesen weil bin auf der arbeit ;) ich machs so das ich die master clock per pmw erzeuge... dann starte ich einen timer der auf mit einer frequenz laeuft von 2* samplerate... der timer loest einen irq aus... im irq mach ich folgendes... -ich toggle auf daclrc -anschliessend schick ich 16 bits aus einem double buffer via spi raus... -dann muss natuerlich der buffer noch gefuellt werden das ganze funktioniert aber nur mit dem left justified format... da muss man eigentlich keine takte zaehlen... voraussetzung ist natuerlich das du via pwm den takt erzeugst...
Im Slave Mode werden die Bit und Word Clock vom MCU erzeugt und im Master Mode vom DAC. Deine Methode nutzt demnach auch den Slave Mode. Ich werde mir den PWM mal nochmal etwas genauer ansehen und mal ein wenig rechnen. Danke für die zügige Hilfe
Oli Holli schrieb: > Hi Leute, > > ich hab da mal eine grundlegende Frage um Daten von einem PIC18F87 zu > einem WM8711B zu schaufeln? > Der PIC ist mit 40MHz getaktet und die zentrale Frage ist ob ich damit > eine mehrspurige Audiowiedergabe realisieren kann. Warum nimmst Du nicht den dsPIC33FJ128MC804? Da ist ein Stereo Audio DAC bereits eingebaut, der auch per DMA bedient werden kann. fchk
anbei findest du meine ansteuerung auf dem pic32 (ist auch nicht kompilierbar egal soll nur das prinzip zeigen)... ich benutz da die plib vielleicht bringt dir das ja was... ich weiss die ansteuerung ist nicht perfekt kost bisschen rechenzeit aber bei mir kams nicht so drauf an ;)
@Frank ich geb zu stünde ich am Anfang des Projektes wäre der dsPIC33FJ128MC804 und seine Brüder sehr verlockend, nur leider sind schon hunderte von anderen Routinen im jetzigen Projekt am laufen. Das ließe sich zwar größtenteils umportieren, aber ich scheue den Aufwand. Trotzdem danke @egon danke für den Code, der is gleich nach dem PWM dran ;-)
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.