Wie interpretiert man das Mikrocontroller-ADC-Modul im Datenblatt? Frage zur Datenblattsyntax

Ich arbeite derzeit an einem Atmel-Mikrocontroller, dem EVK1104S , der das UC32-Datenblatt enthält. Wir haben diesen Chip tatsächlich auf eine kundenspezifische Leiterplatte gepflanzt und sind dabei, weitere Firmware zu schreiben.

Derzeit muss ich dem ADC auf der Micro Controller Unit (MCU) mitteilen, dass er mit 8.000 Samples / Sekunde abtasten soll. In Wirklichkeit dient dies zum Abtasten eines Mikrofons. In jedem Fall ist die Dokumentation ziemlich unklar (aus meiner Sicht) und ich suchte nach einer Klärung.

Ich weiß, dass ich zum Ändern der Abtastrate das sogenannte Modusregister ändern muss, das Register, mit dem der ADC für die Verwendung konfiguriert wird (Seite 799 im obigen Link). Dies ist das Register, mit dem ich die ADCclock.

Beispiel (ab Seite 799):

ADCClock = CLK_ADC / ( (PRESCAL+1) * 2 )

Soweit ich weiß, muss ich nur den ändern, PRESCALum den Betrieb bei 8 kHz zu ermöglichen ADCClock. Das Problem ist, dass PRESCALdie Auflösung auf 8 Bit begrenzt ist.

Wenn der Controller beispielsweise auf 12 MHz/x = 8 kHz eingestellt ist, müsste x 1500 sein. Da x auf 8 Bit begrenzt ist, wie ich zuvor sagte, scheint dies unmöglich zu sein, da das Maximum 255 beträgt.

Ich habe das Gefühl, dass ich hier etwas falsch mache oder nicht verstehe, was das Datenblatt von mir will. Kann jemand bestätigen, worüber ich gerade gesprochen habe, oder mir weiterhelfen?

Wie kann ich im Grunde angeben, dass es ADCclockmit 8 kHz ausgeführt werden soll, wenn es PRESCALsich nur um einen 8-Bit-Wert handelt, vorausgesetzt, die CPU läuft mit 12 MHz?

Ich kenne diese Reihe von Mikros nicht, aber es hört sich so an, als wäre dies die Bitumwandlungsuhr, nicht die Abtastuhr.
Identischer Beitrag, denke ich, mit einer positiv bewerteten Antwort im Moment auf stackoverflow . Ich habe das ATmega-Tag entfernt, da dieses uC nicht zur ATmega-Familie gehört. Bitte fügen Sie hinzu, wenn das ein Fehler meinerseits ist
Diese Frage gehört hierher, nicht auf SO. Aber wenn das OP es gecrosspostet hat, sollten wir beide schließen, um ihm eine Lektion zu erteilen.

Antworten (1)

Ihr Missverständnis liegt darin, dass "ADCClock" nicht die "Samplingrate" ist, sondern die interne Uhr, mit der das ADC-Modul auf dem Mikrocontroller arbeitet:

"Das Umwandeln eines einzelnen analogen Werts in digitale 10-Bit-Daten erfordert Abtast- und Haltetaktzyklen, wie im Feld Abtast- und Haltezeit des Modusregisters (MR.SHTIM) und 10 ADC-Taktzyklen definiert." (Abschnitt 29.6.1, S. 792)

Mit anderen Worten, um ein einzelnes Sample von Ihrem ADC zu erhalten, sind tatsächlich einige (mindestens 13, wenn ich das Datenblatt oberflächlich gelesen habe) ADC-Taktzyklen erforderlich, und nicht nur einen. Ihre Abtastrate ist einfach eine Funktion davon, wie (oft) Sie eine Konvertierung auslösen (Abschnitt 29.6.5). Dazu würden Sie wahrscheinlich eines der Timer-Module verwenden, die Ihnen höchstwahrscheinlich mehr Flexibilität bei den tatsächlichen Intervallen geben, damit Sie Ihre 8-kHz-Zielrate erreichen können.