Ich bin grade am Durchlesen von Datenblättern der Audio CODECs von AsahiKasei und frage mich, wie ich einen AK4556 oder auch einen "nur" ADC Wandler (AK 5720) an einen STM32F3xx oder 4xx anbinden kann. Diese ICs brauchen einen Master-Clock, der ein Vielfaches der Samplefrequenz ist, also liegen wir irgendwo zwischen 10 und 30MHz. Dann muss man die Daten ja auch irgendwie auslesen/einspielen. Ich krieg das aus dem Datenblatt nicht raus, ob das serielle Interface synchron zum Master-Takt sein muss. Da die Idee wäre, viele AK5720 als Eingänge parallel einzulesen, könnte ich mir im asynchronen Fall vorstellen, alle ADCs parallel einzulesen und dies in einer Prozessorschleife zu tun (den seriellen Clock sozusagen durch die Programmschleife vorzugeben). Wie synchronisiert man prinzipiell den Prozessor mit diesen Bauteilen? Muss ich einen Master-Clock extern erzeugen, den in den AK UND den STM32 füttern und dann über Interrupts alle 256 Clocks die Daten auslesen?
Ob dein spezifischer STM32 das hat weiß ich nicht, aber es gibt etliche Modelle mit SAI (serial audio interface glaube ich). Hier kannst du über eine separate PLL den MCLK erzeugen, PCLK wird auch intern abgeleitet und du kannst glaube ich sogar mindestens zwei SAI synchronisieren. Ich habe mal auf einem STM32F413VGT6 einen CS4344 verwendet. Natürlich musste ich da nichts extern erzeugen.
Das sollte ein SAI Interface sein, haben fast alle STM der F4, F7, H7 und G4 Familie sowie einige L4 und L5. Der F3 kann das nicht.
Aha, so 'billig' bekommt man das also nicht. Zum Glück hab ich auch einen F4 herumliegen. Sprich: ich muss mal Infos über SAI durchlesen.
Noch eine Frage dazu: in allen Tabellen der Datasheets der ADC ICs finden sich meist Mehrfachangaben der Verhältnisse des Mastertaktes MCLK und der Samplefrequenz fs. Ermitteln diese ICs die richtige Samplefrequenz (und folglich das Teilerverhältnis) in der Initialisierungsphase aus der Frequenz von LRCK selbst?
Beim CS4344 habe ich 44kHz oder irgend eine beliebige anere krumme Zahl verwendet. Das ist gar nicht so entscheident, im Dateblatt steht nälich:
1 | MCLK/LRCK must be an integer ratio, as shown in Table 1. The LRCK frequency is equal to Fs, the fre-quency at which words for each channel are input to the device. The MCLK-to-LRCK frequency ratio andspeed mode is detected automatically during the initialization sequence by counting the number of MCLKtransitions during a single LRCK period and by detecting the absolute speed of MCLK. Internal dividers areset to generate the proper clocks. Table 1 illustrates several standard audio sample rates and the requiredMCLK and LRCK frequencies. Please note there is no required phase relationship, but MCLK, LRCK andSCLK must be synchronous. |
Es muss also lediglich das Verhältnis der CLKs zueinander stimmen, wenn ich mich richtig erinner.
Vielen Dank für den Auszug aus dem Datenblatt. In (unterschiedlichen) Datenblättern der AKM Wandler sucht man danach vergeblich ... wird wohl als selbstverständlich angenommen. Irgendwie wird bei all diesen Signalen schnell klar, dass das per Software kaum zu realisieren ist. Gut nur, das ST das auch erkannt hat und ein SAI in den F4 verbaut hat.
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.