Schneller ADC am STM32

OP #5438654
Lesenswert?

Hallo *,

ich denke gerade über ein Panorama-Display (f über x) mit einem STM32 
nach. Die Eingangsfrequenz beträgt 10,7 oder 21,4 MHz. Da das Spektrum 
in der Bandbreite begrenzt ist (+/- 1MHz um die Mittenfrequenz) wird 
eine Abtastrate von >=4 MHz benötigt um das Abtasttheorem nicht zu 
verletzen. Die Samplingrate muss natürlich so abstimmbar sein das das 
mit der Unterabtastung ordentlich hinhaut um die unterste interessante 
Frequenz (10,7-1 MHz) auch auf "0" liegt. Die Abtastung soll natürlich 
nicht ständig laufen - es genügen einzelne, in sich zeitdiskrete, 
"Schnappschüsse" um gerade die benötigte Anzahl an Samples für die 
nächste FFT zu holen.

Entsprechend schnelle ADCs intern gibt es wohl beim STM32F3xx. Mir würde 
aber eine Lösung für andere (STM32F4xx) besser gefallen.

Extern per SPI - wird eng wenn man über die Datenrate auf dem SPI 
nachdenkt, bei 12-16 Bit.

Gibt es da Möglichkeiten etwas mit parallelen ADCs am GPIO und DMA zu 
realisieren? Kann man andere Schnittstellen "mißbrauchen" DCMI oder so?
Gast #5438693
Lesenswert?

genau wenn du die ADCs parallel nach einander samplen lässt wuppt der 
das. Natürlich nur mit DMA aber das ist im RefMan erklärt. Ein STM32L4+ 
hat übrigens einen 5Ms ADC in 12Bit, vllt. ist da das Handling 
einfacher. hab ich aber nie mit gearbeitet. Beim tripple interleaved 
musst du auf den DMA auf jeden Fall aufpassen, der kann bei zuviel CPU 
Aktionen auch gern mal mit Overflow aussteigen, meist aber eher wenn du 
noch mehr DMAs aktiv hast als nur die ADCs.

Außerdem drauf achten das deine Signal Quelle niederimpedant ist, ggf. 
einen OP davor schalten. Die ADCs ziehen gern mal 10mA aus dem 
Messsignal, wenn die so schnell gesamplet werden, das verfälscht dir 
dann die Messung.

Gruß

Tec
OP #5439359
Lesenswert?

Ist doch nicht so einfach: Es gibt offenbar noch die Nebenbedingung das 
die Samplingzeit der für das ürsprüngliche Signal entsprechen muss. Das 
bedeutet das wenn ich ein 20 MHz Signal mit 5 MHz sample die 
Samplingzeit trotzdem 1/40000000s Sekunde sein muss, obwohl die 
Conversiontime 1/5000000 ist. Also als ob der ADC mit 40MHz sampled und 
ich nur jeden 8. Wert einlese.
Gast #5440260
Lesenswert?

Man mischt quasi mit dem ADC bzw. Dem Sample and hold herunter.
Man kann hinterher aber auch nicht mehr sagen ob es 10, 20 oder 40 MHz 
waren. Nur die Informationen in der nutzbandbreite bleibt erhalten.
OP #5458392
Lesenswert?

Hallo *,

ich bin bei dem Thema etwas weiter:

Das Problem mit den internen DACs zu lösen ist möglich. Das Ganze läuft 
bis ca. 50 MHz ziemlich problemlos. Auch wenn das Ergebnis ab ca. 20 MHz 
in der Zeitachse nicht mehr so dolle aussieht ist das für die FFT kein 
Problem. Bei vollem Takt für den Kern ist es allerdings selten Möglich 
genau die maximale Samplingfrequenz zu treffen. Ein "Übertakten" ist 
möglich. Mit einem F407VE gehen da dann auf einmal 8,4 MSPS im triple 
interleaved mode.

Ein Problem gibt es allerdings: Ich bekomme den Transfer nur einmal per 
HAL gestartet. Da ich nur Schnappschüsse brauche steht der DMA auf 
normal und nicht circular, so das er nach dem ADCcomplete-Interrupt 
eigentlich wieder startbar sein sollte. Die Sache mit den MULTI-bits im 
ADC_CCR gemäß reference manual habe ich schon probiert. Da der erste 
Durchgang erfolgreich durchläuft (Daten und Interrupt kommen) glaube ich 
nicht an ein einfaches Konfigurationsproblem.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren