Forum: Mikrocontroller und Digitale Elektronik SPI to USB Konverter


von Jörg K. (Firma: Robert Bosch GmbH) (joerg-koers)


Lesenswert?

Hallo zusammen,

ich beschäftige mich gerade mit folgendem Problem und konnte den anderen 
Threads, die sich mit der Problematik befasst haben, leider keinen 
Mehrwert für mich abringen.

[SPI-Beschleunigungssensor] ----------------------> [µC M16C]

Ich habe, wie oben angedeutet einen Beschleunigungssensor, der seine 
Daten über SPI an den µC sendet.

Jetzt soll ich aber zusätzlich die SPI-Daten unterwegs abgreifen und 
über die USB-Schnittstelle im PC zur Verfügung stellen, damit sie zu 
Überprüfungszwecken in MATLAB ausgewertet werden können.

[SPI-Beschleunigungssensor] ----------------------> [µC M16C]
                                     |
                                     |
                                     |
                                     |
                          [USB-Schnittstelle im PC]

Fragen:

- Ist es prinzipiell möglich die Daten unterwegs einfach "abzuhören" 
oder gibt es da im Hinblick auf Störungen entwas zu beachten?
- Wenn ja, welchen Komplettbausatz würdet ihr dazu empfehlen?
- Wenn nein, welche alternative möglichst einfache Lösung würdet ihr 
vorschlagen?

Gruß
Jörg

von Kalle (Gast)


Lesenswert?

Schau dir mal das universelle "FT4232HQ mini module" von FTDI an. Sollte 
eigentlich deinen Anforderungen entsprechen.

von ... .. (docean) Benutzerseite


Lesenswert?

Ich würde eher:

[SPI-Beschleunigungssensor] -----> [µC M16C] ----> UART --> 
USB-nach-COM-Port Wandler

machen

von Kalle (Gast)


Lesenswert?

> Ich würde eher:
>
> [SPI-Beschleunigungssensor] -----> [µC M16C] ----> UART -->
> USB-nach-COM-Port Wandler

Ich denke das wird zu langsam werden.

von Jörg K. (Firma: Robert Bosch GmbH) (joerg-koers)


Lesenswert?

Kalle schrieb:
> Schau dir mal das universelle "FT4232HQ mini module" von FTDI an. Sollte
> eigentlich deinen Anforderungen entsprechen.

Gute Idee, das geht schon in die richtige Richtung. Jedoch ist die 
Anschlussvariante über die Pins für mich nicht so geschickt. Hätte 
lieber ein Modul, an das ich auf der einen Seite den USB-Stecker und auf 
der anderen Seite z.B. einen RS232-Anschluss habe.

... ... schrieb:
> Ich würde eher:
>
> [SPI-Beschleunigungssensor] -----> [µC M16C] ----> UART -->
> USB-nach-COM-Port Wandler
>
> machen

Das habe ich mir auch schon überlegt. Jedoch bedeutet das ja wieder 
einen Umweg über den µC.
Wenn es jedoch kein Modul nach meinen Vorstellungen gibt, muss ich diese 
Variante wohl oder übel nehmen.

Wenn jemand zufällig etwas nach meinen Vorstellungen parat hat, dann her 
mit dem Link :)

von Jörg K. (Firma: Robert Bosch GmbH) (joerg-koers)


Lesenswert?

Kalle schrieb:
>> Ich würde eher:
>>
>> [SPI-Beschleunigungssensor] -----> [µC M16C] ----> UART -->
>> USB-nach-COM-Port Wandler
>
> Ich denke das wird zu langsam werden.

Habe diesen Sensor:
http://www.elv.de/3-Achsen-Beschleunigungssensor-3D-BS,-Komplettbausatz/x.aspx/cid_74/detail_10/detail2_28515

Der kann maximal nur mit 1,5 kHz Daten übermitteln.
Das sollte über UART auch gehen, oder?

von Oliver J. (skriptkiddy)


Lesenswert?

>Ich denke das wird zu langsam werden.

Man kriegt via UART 10kB pro Sekunde rausgeschaufelt (115200 Baud). Das 
ergibt doch eine relativ hohe Samplingrate. Bei angenommen 16 Bit 
Auflösung wären das 5 kS/s, die man über die Leitung schicken könnte. 
Oder anders ausgedrückt bekäme man damit aller 0.2ms einen neuen 
Messwert für Matlab. Ob das nun reicht oder hardware-/softwaretechnisch 
möglich ist, hängt von den Anforderungen ab und ist ohne nähere 
Informationen des Threaderstellers nicht zu beantworten.


BTW:
Ich würde es mir auch nicht unnötig kompliziert machen und über UART 
gehen, wenn es die Anwendung zulässt, denn mit Matlab kann man ohne 
weiteres an einem COM-Port lauschen und Werte aufsammeln.


Gruß
Skriptkiddy

von (prx) A. K. (prx)


Lesenswert?

Kalle schrieb:

> Schau dir mal das universelle "FT4232HQ mini module" von FTDI an. Sollte
> eigentlich deinen Anforderungen entsprechen.

Ich glaube nicht, dass es mit der MPSSE der FTDI-Chips so ohne weiteres 
geht. Die sind m.W. nur als SPI-Master einsetzbar, hier benötigt man 
aber eine Komponente, die den Traffic beider Datenleitungen passiv 
abhört und in zeitlicher Beziehung zueinander dem PC durchreicht. Das 
geht allenfalls per Bitbanging.

von Kalle (Gast)


Lesenswert?

> Ich glaube nicht, dass es mit der MPSSE der FTDI-Chips so ohne weiteres
> geht. Die sind m.W. nur als SPI-Master einsetzbar, hier benötigt man
> aber eine Komponente, die den Traffic beider Datenleitungen passiv
> abhört und in zeitlicher Beziehung zueinander dem PC durchreicht. Das
> geht allenfalls per Bitbanging.

Das stimmt. Es würde nur per Bitbang funktionieren.

von Guido Körber (Gast)


Lesenswert?

Die Firma Bosch möchte einen Bosch-.Sensor verwenden. Warum dann so 
umständlich?

Mit USB hätten wir mit SMB380 und BMA180 fertige Lösungen:
http://www.codemercs.com/index.php?id=134&L=0

Gegebenenfalls einfach mal anrufen :)

von Jörg K. (Firma: Robert Bosch GmbH) (joerg-koers)


Lesenswert?

Guido Körber schrieb:
> Die Firma Bosch möchte einen Bosch-.Sensor verwenden. Warum dann so
> umständlich?
>
> Mit USB hätten wir mit SMB380 und BMA180 fertige Lösungen:
> http://www.codemercs.com/index.php?id=134&L=0
>
> Gegebenenfalls einfach mal anrufen :)

Hat den Grund, dass der Sensor eigentlich ja in einer µC-Schaltung 
eingebunden ist über SPI.
Daher bringt mir ein Sensor, der eine USB-Schnittstelle hat, gar nichts.

Ich schau mal, ob das über UART funktioniert. Wenn ich Neueres weiß, 
meld ich mich wieder. Vllt. bringt eine Lösung nachfolgenden Lesern auch 
noch etwas.

Vielen Dank bis hierher!

Gruß
Jörg

von serieller Weltenbummler (Gast)


Lesenswert?

CDC-SPI:
USB <-> SPI, vielleicht nützlich?
http://www.recursion.jp/avrcdc/cdc-spi.html

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.