Hallo, suche Ideen, wie ich in Python mit Windowsrechner über USB 2*10 Bit DAC's und 1*10-12 Bit ADC beschreiben, bzw auslesen kann. Preis ..nicht sehr hoch - das ist Hobbybedarf. So nun genauer - es sollten circa je Sekunde 10 komplette DAC Wandlungen und zwischen jeder einzelnen Wandlung 1 Lesevorgang des Ergebnisses gemacht werden und zum Rechner übertragen werden, um sie darzustellen. Analog ist das ewig fertig - aber in die Tage gekommen, wird im Moment über langnachleuchtenden Bildschirm und Sägezahn gemacht. Schön ware auch noch, wenn man (externer stm32 oder was auch immer) über usb den DAC Bereich ändern könnte und ein paar Schaltausgänge hätte. Raspberry ist über Spi zu langsam. Hab im Moment keine Idee wie ich es mit der Geschwindigkeit verwirklichen könnte. Ist sowas zu realisieren und wer kann mir mit Vorschlägen weiterhelfen ? Grüsse Pitti
> mit der Geschwindigkeit
Wirklich nur 10x/s Ausgänge setzen und Eingänge lesen?
Ein Arduino Due hat 2 12bit DACs und 12 12bit ADCs und kann über USB mit
der SW auf dem PC sprechen. DAC-Bereich ändern geht nur mit externer
Beschaltung, Pins dafür wären reichlich da.
Original 50€, Kopie 15€.
schön wäre es ja aber 2 mal 10 bit einzeln durchrattern um einen Sägezahn zu erzeugen , das wird wohl eng - das noch 10 mal je Sekunde. Also DAC1 1 bit setzen, ADC lesen, DAC2 0-1023 jeden Schritt lesen > dann DAC1+1 DAC2 0-1023 usw denke das geht auf den Due nicht, da muss was dickeres her - oder ich liege bei dem kpl falsch
Seh ein, das ich im ersten Text doch was unklar beschrieben hatte, das würde der Due schaffen ------------------------------------ je Sekunde 10 komplette DAC Wandlungen und zwischen jeder einzelnen Wandlung 1 Lesevorgang des Ergebnisses ---------------------------------------------- sind aber ein ""paar"" mehr
Das sind 10 kHz Update Rate. Das ist gar nix. Ich kann mir nicht vorstellen dass das nicht geht, wahrscheinlich kann das Teil das zehn- oder hundertfache.
Pitti schrieb: > je Sekunde 10 komplette DAC Wandlungen Also bedeutet "1 komplette Wandlung" in diesem Fall "einmal jeden Wert des Wertebereichs setzen".
ja so meinte ich es, DAC1 grobes Raster als Zwischenschritt DAC2 0-1023 > feines Raster (denke hier komme ich mit 512 aus) dann DAC1+1 und wieder DAC2 und bei jedem Schritt lesen
Also so? Dummer Pseudocode, func() soll 10mal pro Sekunde laufen.
1 | void func() |
2 | {
|
3 | for (dac1 = 0; dac1 < 1024; ++dac1) |
4 | {
|
5 | set_dac1(dac1); |
6 | for (dac2 = 0; dac2 < 1024; ++dac2) |
7 | {
|
8 | set_dac2(dac2); |
9 | x = readadc(); |
10 | send_to_pc(x); |
11 | }
|
12 | }
|
13 | }
|
Dann liefen set_dac2 und readadc() mit 10MHz und die Rohdatenrate läge bei 120Mbit/s. Also ernsthafte Messhardware und kein Arduino.
ja, das bekam ich auf Raspberry nicht hin - der war zu langsam, da er auch das Bild darstellen musste, und die Einschänkung bei SPI noch hat, als seriellen Bus für ADC und DAC Deswegen die Frage hier - ob STM32 oder andere Prozessoren mit eingebautem parallelen ADC/ DAC in der Lage sind das zu liefern.( oder was ganz anderes ) Die Daten müssen ja auch noch über den USB Bus. Danke fürs Lesen und Antworten
Pitti schrieb: > Deswegen die Frage hier - ob STM32 oder andere Prozessoren LPC4370 schafft 80 MSPS und das Eval-Board gibt es für 15 EUR https://www.lpcware.com/content/project/Mixed-Signal-Logic-Analyzer-Oscilloscope-Lab-Tool-Solution http://thomasweldon.com/tpw/lpc4370/lpc4370tutorial1/index.html Pitti schrieb: > das bekam ich auf Raspberry nicht hin - der war zu langsam RISCOS pico im Single-Task sollte das schaffen (oder notfalls auch Bare Metal): http://www.valvers.com/open-software/raspberry-pi/step01-bare-metal-programming-in-cpt1/ https://www.riscosopen.org/content/sales/risc-os-pico
Lothar schrieb: > LPC4370 schafft 80 MSPS und das Eval-Board gibt es für 15 EUR Hat aber nur 1 DAC, das Board hatte ich mir auch schon angeschaut Wieviel Reserve hat die CPU noch, um die Daten per Usb zu liefern und noch eine 2ten DAC zu steuern Oder gibt es da etwas ähnliches mit 2 10bit DAC und ADC Wenn es so günstig ginge, schraube ich auch meine Anforderungen zurück auf 6 kpl Zyklen je Sec. Aber die Raspberry Geschichte schaue ich mir mal an, sieht sehr interessant aus.
Pitti schrieb: > Wieviel Reserve hat die CPU noch, um die Daten per Usb zu liefern und > noch eine 2ten DAC zu steuern Es gibt ja drei Cores, man könnte also den M4 für den ADC nutzen (der aber auch DMA hat), einen M0 für USB (hat aber auch DMA) und einen M0 als Serial Engine für einen externen DAC (der läuft ja mit 204 MHz und schafft im Bit-Bang deutlich mehr als Hardware SPI oder I2C)
Pitti schrieb: > Lothar schrieb: >> LPC4370 schafft 80 MSPS und das Eval-Board gibt es für 15 EUR > > Hat aber nur 1 DAC, das Board hatte ich mir auch schon angeschaut > Wieviel Reserve hat die CPU noch, um die Daten per Usb zu liefern und > noch eine 2ten DAC zu steuern Nimm einfach einen parallelen DAC und 10 GPIOs. Davon hat LPC43xx reichlich. Lothar schrieb: > (der läuft ja mit 204 MHz und > schafft im Bit-Bang deutlich mehr als Hardware SPI oder I2C) Die SSPx sollten SPI mit CCLK/2 fahren können, das schafft man in Software nicht. Ich bin mir allerdings nicht sicher ob die Pins überhaupt Frequenzen >50 Mhz mitmachen.
Nach meiner Erfahrung mit der LPC43xx-Architektur bringen die mehreren Cores nicht so unglaublich viel, weil die alle am selben Bus hängen und nicht gleichzeitig auf den RAM zugreifen können. Auch nicht auf verschiedene Bänke. Ob man dann DMA nimmt oder einen der Cores mit einer Schleife ist relativ egal, das Problem ist immer dasselbe: wenn einer der anderen Cores auch den RAM braucht, hängt's. Und quasi alles was man mit so einer CPU tun kann braucht den RAM.
:
Bearbeitet durch User
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.