Forum: Mikrocontroller und Digitale Elektronik Suche Interface um ADC und DAC über Fastusb auszulesen


von Pitti (Gast)


Lesenswert?

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

von Tom (Gast)


Lesenswert?

> 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€.

von Pitti (Gast)


Lesenswert?

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

von Pitti (Gast)


Lesenswert?

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

von Sven B. (scummos)


Lesenswert?

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.

von Tom (Gast)


Lesenswert?

Pitti schrieb:
> je Sekunde 10 komplette DAC Wandlungen

Also bedeutet "1 komplette Wandlung" in diesem Fall "einmal jeden Wert 
des Wertebereichs setzen".

von Pitti (Gast)


Lesenswert?

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

von Tom (Gast)


Lesenswert?

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.

von Pitti (Gast)


Lesenswert?

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

von Lothar (Gast)


Lesenswert?

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

von Pitti (Gast)


Lesenswert?

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.

von Lothar (Gast)


Lesenswert?

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)

von Jim M. (turboj)


Lesenswert?

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.

von Sven B. (scummos)


Lesenswert?

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
Noch kein Account? Hier anmelden.