Hinter den Betreff müsste eigentlich ein großes Fragezeichen. Auf normalen Wege ist das offenbar nicht möglich. Der ext. 24.576Mhz Oszillator hängt am I2S_CK Pin. Ich gehe von 32 bit pro Kanal aus. Die Verwendung des I2S PLLs ist keine viable Option, es muss also ein externer Oszillator sein. Im Datasheet steht, die Samplerate definiert sich durch FS = I2SxCLK / [(32*2)*((2*I2SDIV)+ODD))] Normalerweise sind 24.576Mhz Oszillatoren der Standard bei DACs mit den Sampleraten 48khz, 96khz, und 192khz. Blöd nur, dass im RM0090 auf Seite 708 steht: Bit 7:0 I2SDIV: I2S Linear prescaler I2SDIV [7:0] = 0 or I2SDIV [7:0] = 1 are forbidden values. Sehr ärgerlich, denn "1" wäre genau der benötigte Prescaler. Effektiv bedeutet das, dass zur Verwendung von 192khz Samplerate mindestens ein 49.152Mhz Oszillator benötigt wird, und das bei Verwendung des kleinsten laut Datenblatt erlaubten prescalers. Offenbar braucht das I2S (Fehl)Design des STM32F4 256*FS. Ich will keinen 49.152Mhz Oszillator. Was haltet ihr davon, die 24.576Mhz per externem PLL zu verdoppeln, um sie dem STM32F4 schmackhaft zu machen? Da müsste natürlich äußert präzise (und schnell) passieren, um noch im Rahmen des erlaubten Timings (uC -> DAC) zu liegen. Oszillator --> DAC DAC --> ext. PLL --> STM32F4 --> DAC
Ronald Macdonald schrieb: > Ich will keinen 49.152Mhz Oszillator. weswegen? > Was haltet ihr davon, die 24.576Mhz per externem PLL zu verdoppeln, um > sie dem STM32F4 schmackhaft zu machen? Da müsste natürlich äußert > präzise (und schnell) passieren, um noch im Rahmen des erlaubten Timings > (uC -> DAC) zu liegen. > > Oszillator --> DAC > DAC --> ext. PLL --> STM32F4 --> DAC Takthalbierung per 74AHC74 ist mit Sicherheit billiger, wenn Du keine 50 MHz übers Board laufen haben willst. fchk
Frank K. schrieb: > Ronald Macdonald schrieb: > >> Ich will keinen 49.152Mhz Oszillator. > > weswegen? Ich bräuchte dann drei externe Oszillatoren anstatt zwei, um alle gängigen Sampleraten (44khz, 48khz, 88khz, 96khz, 176khz, 192khz) unterstützen zu können, 3 Relays (anstatt einem) um diese bei Bedarf zu schalten, und gerade 22.528Mhz und 24.576Mhz bekommt man bezahlbar mit <1ppm, insbesondere sind davon noch einige im Lager, eben weil es der Industriestandard bei Audioanwendungen ist. Zum Beispiel der TI (ex. Burr-Brown) PCM1792A akzeptiert 128*FS, 192*FS, 256*FS, 384*FS, 512*FS, 768*FS. Man kommt also mit den oben genannten Oszillatoren für alle Sampleraten hin. > >> Was haltet ihr davon, die 24.576Mhz per externem PLL zu verdoppeln, um >> sie dem STM32F4 schmackhaft zu machen? Da müsste natürlich äußert >> präzise (und schnell) passieren, um noch im Rahmen des erlaubten Timings >> (uC -> DAC) zu liegen. >> >> Oszillator --> DAC >> DAC --> ext. PLL --> STM32F4 --> DAC > > Takthalbierung per 74AHC74 ist mit Sicherheit billiger, wenn Du keine 50 > MHz übers Board laufen haben willst. Die würden in jedem Fall übers Board laufen, zum STM32F4. Ich muss die Frequenz möglichst nah am STM32F4 verdoppeln. ;( Nur welche Methode in diesem Fall bei ~50Mhz die Beste ist, weiß ich nicht. > > fchk
Ronald Macdonald schrieb: > Ich bräuchte dann drei externe Oszillatoren anstatt zwei, um alle > gängigen Sampleraten (44khz, 48khz, 88khz, 96khz, 176khz, 192khz) > unterstützen zu können, 3 Relays (anstatt einem) um diese bei Bedarf zu > schalten, und gerade 22.528Mhz und 24.576Mhz bekommt man bezahlbar mit Ups. Du schaltest die Taktsignale über Relais? Das ist doch nicht glitch-free etc? Haben Deine Oszillatoren keinen Enable-Pin? fchk
Frank K. schrieb: > Ronald Macdonald schrieb: > >> Ich bräuchte dann drei externe Oszillatoren anstatt zwei, um alle >> gängigen Sampleraten (44khz, 48khz, 88khz, 96khz, 176khz, 192khz) >> unterstützen zu können, 3 Relays (anstatt einem) um diese bei Bedarf zu >> schalten, und gerade 22.528Mhz und 24.576Mhz bekommt man bezahlbar mit > > Ups. Du schaltest die Taktsignale über Relais? Das ist doch nicht > glitch-free etc? Haben Deine Oszillatoren keinen Enable-Pin? > > fchk Momentan schon, weil's zum Testen einfach ist. Einen Enable-Pin gibt's da nicht, aber ich werde später wohl jeweils dem VCC einen MOSFET (BSS123) vorschalten. Das hier sieht aus, als wäre es einen Versuch wert: http://www.maxim-ic.com/app-notes/index.mvp/id/3327 Allerdings müsste es nicht-invertierend aufgebaut werden, da ich eine halbwegs synchrone steigende Flanke brauche. R1 x C1 = 2/3 * (1 / 49.152) = 0.013563368. Mal sehen, ob sich da geeignete Werte für R1 und C1 finden. Aufgrund der möglichen Toleranzen der Bauteile empfinde ich es aber doch als Notlösung.
Ronald Macdonald schrieb: > Hinter den Betreff müsste eigentlich ein großes Fragezeichen. > Auf normalen Wege ist das offenbar nicht möglich. > > Der ext. 24.576Mhz Oszillator hängt am I2S_CK Pin. Ich gehe von 32 bit > pro Kanal aus. Die Verwendung des I2S PLLs ist keine viable Option, es > muss also ein externer Oszillator sein. Ich habe mir das Manual mal vorgenommen. Betreibst Du den I2S im Master Mode (CK und WS sind Outputs) oder im Slave Mode (CK und WS sind Inputs)? CK ist der Bit Clock, nicht der Master Clock (MCLK ist im Master Mode ein extra Output). Bei f_S=f_WS=192 KHz und 64 Bits pro Frame wäre f_CK=12.288 MHz und f_MCLK=49.152MHz. MCLK ist offenbar nur Output, und CK und WS kannst Du nur zusammen als Output (Master) oder Input (Slave) konfigurieren. Wenn Du also den Clock nicht intern erzeugen willst, bleibt Dir nur der Slave Mode. Dann muss der DAC I2S Master sein, aber Du bist nicht auf 256*f_S festgelegt, weil der STM32 nur den Bit Clock bekommt, nicht aber den Master Clock. > laut Datenblatt erlaubten prescalers. Offenbar braucht das I2S > (Fehl)Design des STM32F4 256*FS. Ja, das steht da auch klar drin (Seite 685 im RM0090 Doc ID 018909 Rev 1). fchk
Frank K. schrieb: > Ronald Macdonald schrieb: >> Hinter den Betreff müsste eigentlich ein großes Fragezeichen. >> Auf normalen Wege ist das offenbar nicht möglich. >> >> Der ext. 24.576Mhz Oszillator hängt am I2S_CK Pin. Ich gehe von 32 bit >> pro Kanal aus. Die Verwendung des I2S PLLs ist keine viable Option, es >> muss also ein externer Oszillator sein. > > Ich habe mir das Manual mal vorgenommen. > > Betreibst Du den I2S im Master Mode (CK und WS sind Outputs) oder im > Slave Mode (CK und WS sind Inputs)? I2S3 im Master Mode. > CK ist der Bit Clock, nicht der Master Clock (MCLK ist im Master Mode > ein extra Output). Bei f_S=f_WS=192 KHz und 64 Bits pro Frame wäre > f_CK=12.288 MHz und f_MCLK=49.152MHz. MCLK verwende ich nicht. Die Master Clock geht direkt vom Oszillator zum DAC. > MCLK ist offenbar nur Output, und CK und WS kannst Du nur zusammen als > Output (Master) oder Input (Slave) konfigurieren. Wenn Du also den Clock > nicht intern erzeugen willst, bleibt Dir nur der Slave Mode. Ich schaue gleich mal im DAC Manual nach, ob der als Master fungieren kann. An den STM32F4 als I2S slave habe ich noch gar nicht gedacht. Danke für den Denkanstoss. > Dann muss > der DAC I2S Master sein, aber Du bist nicht auf 256*f_S festgelegt, weil > der STM32 nur den Bit Clock bekommt, nicht aber den Master Clock. > >> laut Datenblatt erlaubten prescalers. Offenbar braucht das I2S >> (Fehl)Design des STM32F4 256*FS. > > Ja, das steht da auch klar drin (Seite 685 im RM0090 Doc ID 018909 Rev > 1). > > fchk
Ronald Macdonald schrieb: > Frank K. schrieb: >> MCLK ist offenbar nur Output, und CK und WS kannst Du nur zusammen als >> Output (Master) oder Input (Slave) konfigurieren. Wenn Du also den Clock >> nicht intern erzeugen willst, bleibt Dir nur der Slave Mode. Der DAC kann selbst nur als Slave betrieben werden. Die CK würde ich einfach direkt vom Oszillator nehmen, aber niemand fühlt sich dann für WS zuständig.
Ronald Macdonald schrieb: > Ronald Macdonald schrieb: >> Frank K. schrieb: >>> MCLK ist offenbar nur Output, und CK und WS kannst Du nur zusammen als >>> Output (Master) oder Input (Slave) konfigurieren. Wenn Du also den Clock >>> nicht intern erzeugen willst, bleibt Dir nur der Slave Mode. > > Der DAC kann selbst nur als Slave betrieben werden. Die CK würde ich > einfach direkt vom Oszillator nehmen, aber niemand fühlt sich dann für > WS zuständig. Mit nem 74HC393 oder 74LV393 durch 64 teilen, und schon hast Du Deinen WS. fchk
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.