Hallo und frohe Weihnachten euch, ich beschäftige mich gegenwärtig mit USB und habe die letzten freien Tage genutzt, um das USB Modul in meinem STM32F407 zu bespaßen. Momentan schaue ich mir USB Audio an. Das Ganze aktuell theoretisch. Es ist keine aktuelle Anwendung geplant. Bei USB Audio hat man ja das Problem, dass man die Samplefrequenz des DACs mit dem Datenstream vom Host synchronisieren muss, da sonst der Samplebuffer über oder unterläuft. Soweit ich es verstanden habe, gibt es mehrere MEthoden das zu synchronisieren. 1) Asynchrone Endpoints. 2) Adaptive Endpoints 3) Synchrone Endpoints. Ich interessiere mich jetzt gerade für die Möglichkeit einen snychronen Audio-Endpoint zu bauen. Soweit ich es verstehe, wird in diesem Fall das periodische SOF Signal des USB zur Frequenzgeneration/Einstellung verwendet, um die Samplerate im Gerät auf den Host abzugleichen. Konkret geht es mir um die Umsetzungsmöglichkeiten in einem STM32F4xx Wie kann ich bspw. eine I2S Clock mit diesem SOF-Puls snychronisieren? Ist das beim STM überhaupt möglich? Ich weiß, dass ich den SOF Puls sowohl in einen Timer geben kann, als auch das Signal ausgeben kann. Ist es irgendwie möglich die interne I2S PLL so fein zu tunen? Eine andere Alternative wäre natürlich, die I2S Clock extern zu generieren und einen externen Chip die PLL übernehem zu laseen. Welche Möglichekiten gibt es hier beim STM32F4? Ist es überhaupt möglich? Soweit ich das in beispielen sehe wird meist ein asyncrhoner endpoint mit feedback endpoint zum Host verwendent. Vielen Dank
M. H. schrieb: > 1) Asynchrone Endpoints. > 2) Adaptive Endpoints > 3) Synchrone Endpoints. 4) Implicit Feedback: der Capture-Endpoint liefert Samples mit der korrekten Geschwindigkeit, und der Host muss dann die Samples auf dem Playback-Endpoint genauso schreiben. > Wie kann ich bspw. eine I2S Clock mit diesem SOF-Puls snychronisieren? > Ist das beim STM überhaupt möglich? Ein Fullspeed-USB-Gerät braucht eine 12-MHz-Clock (intern meist 24 oder 48 MHz), um überhaupt über USB kommunizieren zu können. Manche Mikrocontroller brauchen dafür einen Quarz, manche können die 12 MHz per PLL aus den 1-kHz-SOF generieren. Im zweiten Fall kannst du diese Clock einfach auch für I2S benutzen. Das F407 Reference Manual sagt in 34.3.2: > The USB OTG FS receives the 48 MHz ±0.25% clock from the reset and clock > controller (RCC), via an external quartz. The USB clock is used for > driving the 48 MHz domain at full-speed (12 Mbit/s) and must be enabled > prior to configuring the OTG FS core. Du musst den I2S-PLL also selber programmieren.
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.