Hi an alle,
kurze Verständnisfrage.
kann ich ein SPI-Signal per uC in CAN wandeln?
Also kann ich einen Bausteine über siene SPI Schnitstelle mit der SPI
Schnittstelle des uC verbinden, Daten auslesen und diese dann per CAN
Interface des uC ausgeben?
Ich frage, weil es mich verunsichert, da es immer Wandler sind die
irgendwo dazwischengeschaltet sind.
Das selbe auch per I2C. gehts das?
I2C--> uC --> CAN
Klingt vielleicht doof, mag es auch sein, aber ich muss das echt mal
wissen.
Ähem schrieb:> Ich frage, weil es mich verunsichert, da es immer Wandler sind die> irgendwo dazwischengeschaltet sind.
Was für Wandler genau?
Der µC braucht auch noch einen CAN-Controller und einen CAN-Transceiver.
Viele µC haben einen CAN-Controller integriert (dies ist zu empfehlen,
da effizient & einfacher zu programmieren), manche sogar den
CAN-Transceiver; meist braucht es dafür aber einen externen IC. Somit
kann man mit einem µC alleine i.A. nicht direkt SPI auf CAN umwandeln.
Ähem schrieb:> kann ich ein SPI-Signal per uC in CAN wandeln?
Woher kommt das "SPI-Signal"?
Warum steuerst du da nicht gleich einen MCP2515 an?
> Das selbe auch per I2C. gehts das?
Du hast aber auf den beiden Bussen ein völlig anderes Protokoll. Das
solltest du dir m.E. nochmal genauer anschauen.
Dr. Sommer schrieb:> Ähem schrieb:>> Ich frage, weil es mich verunsichert, da es immer Wandler sind die>> irgendwo dazwischengeschaltet sind.>> Was für Wandler genau?>> Der µC braucht auch noch einen CAN-Controller und einen CAN-Transceiver.> Viele µC haben einen CAN-Controller integriert (dies ist zu empfehlen,> da effizient & einfacher zu programmieren), manche sogar den> CAN-Transceiver; meist braucht es dafür aber einen externen IC. Somit> kann man mit einem µC alleine i.A. nicht direkt SPI auf CAN umwandeln.
Also Wenn ich das Signal per CAN-Schnittstelle des uC an die Gegenstelle
(auch CAN) sende, sollte es gehen. Oder?
Lothar M. schrieb:> Ähem schrieb:>> kann ich ein SPI-Signal per uC in CAN wandeln?> Woher kommt das "SPI-Signal"?> Warum steuerst du da nicht gleich einen MCP2515 an?>>> Das selbe auch per I2C. gehts das?> Du hast aber auf den beiden Bussen ein völlig anderes Protokoll. Das> solltest du dir m.E. nochmal genauer anschauen.
Also mit dem MCP2515 würde ich das Signal ja dann wandeln, oder?
Den setzte ich zwischen SPI Sender und uC.
Ja, das geht und ist praktisch der Normalfall, denn es gibt kaum einen
Sensor der direkt CAN spricht bzw. keinen CAN-Controller, der direkt
Sensoren per I2C oder SP ansprechen kann. Das macht zu 99% immer ein uC.
Sensor <-SPI-> uC <-SPI-> CAN Controller
oder
Sensor <-I2C-> uC <-SPI-> CAN Controller
Die meisten CAN-Controller werden per SPI oder Parallelschnittstelle
angesprochen. Mit I2C kenn ich keinen.
Ähem schrieb:> Also Wenn ich das Signal per CAN-Schnittstelle des uC an die Gegenstelle> (auch CAN) sende, sollte es gehen. Oder?
Man kann CAN-Signale per CAN-Schnittstellen senden, ja. Oder was war die
Frage?
Ähem schrieb:> Den setzte ich zwischen SPI Sender und uC.
Was ist das für ein "SPI Sender"? Der MCP2515 kann nicht einfach
irgendein SPI-Signal nach CAN wandeln. Dem muss man bestimmte Befehle
geben. Diese kommen normalerweise von einem µC; m.W. gibt es keine
Sensoren die das direkt ausgeben.
CAN ist ein Nachrichtenorientiertes Halb-Duplex-Protokoll, dessen
Nachrichten Adressen und je 0-8 Datenbytes haben. SPI überträgt einfach
nur Bits Voll/Halb-Duplex. Das kann man nicht einfach so
zusammenstecken, da braucht es etwas Intelligenz für, eben in Form eines
µC.
Falk B. schrieb:> Die meisten CAN-Controller werden per SPI oder Parallelschnittstelle> angesprochen. Mit I2C kenn ich keinen.
Die CAN-Controller, die im µC sitzen, über den internen Prozessor-Bus.
> CAN ist ein Nachrichtenorientiertes Halb-Duplex-Protokoll, dessen> Nachrichten Adressen und je 0-8 Datenbytes haben. SPI überträgt einfach> nur Bits Voll/Halb-Duplex. Das kann man nicht einfach so> zusammenstecken, da braucht es etwas Intelligenz für, eben in Form eines> µC.>
Falk B. schrieb:
> Die meisten CAN-Controller werden per SPI oder Parallelschnittstelle> angesprochen. Mit I2C kenn ich keinen.>> Die CAN-Controller, die im µC sitzen, über den internen Prozessor-Bus.
Wenn ich einen Sensor habe der SPI als Schnittstelle hat, kann ich den
dann auslesen mit einem uC über die SPI Adresse un´d dann die Daten per
CAN Schnittstelle des uC weitergeben an eine weitere CAN Gegenstelle die
auch ein CAN Interface besitzt?
Ähem schrieb:> Wenn ich einen Sensor habe der SPI als Schnittstelle hat, kann ich den> dann auslesen mit einem uC über die SPI Adresse un´d dann die Daten per> CAN Schnittstelle des uC weitergeben an eine weitere CAN Gegenstelle die> auch ein CAN Interface besitzt?
Ja, das geht und ist gängig, bis darauf dass SPI keine Adressen hat.
Ähem schrieb:> Wenn ich einen Sensor habe der SPI als Schnittstelle hat, kann ich den> dann auslesen mit einem uC über die SPI Adresse un´d dann die Daten per> CAN Schnittstelle des uC weitergeben an eine weitere CAN Gegenstelle die> auch ein CAN Interface besitzt?
Ja sicher!
Ähem schrieb:>> Wenn ich einen Sensor habe der SPI als Schnittstelle hat, kann ich den> dann auslesen mit einem uC über die SPI Adresse un´d dann die Daten per> CAN Schnittstelle des uC weitergeben an eine weitere CAN Gegenstelle die> auch ein CAN Interface besitzt?
Achtung! CAN-Controller alleine reicht nicht. Man braucht auch einen
CAN-Transceiver für die entsprechenden Pegel und mehr.
Variante 1: µC hat integrierten CAN-Controller:
SPI CAN
Sensor <---> µC <-> CAN-Transceiver-IC <---> CAN-Transceiver-IC <-> µC
Variante 2: µC ohne integrierten CAN-Controller:
SPI SPI CAN
Sensor <---> µC <---> CAN-Controller-IC <-> CAN-Transceiver-IC <--->
SPI
CAN-Transceiver-IC <-> CAN-Controller <---> µC
Zwischen CAN-Controller und CAN-Transceiver wird zwar CAN-Protokoll
gesprochen, aber der Spannungspegel z.b entspricht nicht dem
Physical-Layer von CAN. Es wird auch nicht differenziell übertragen.
Noch hat keiner nach dem Datendurchsatz auf dem SPI gefragt, das ist bei
einer Schnittstellenkonvertierung immer eine wichtige Frage. Bedenke,
dass auf dem CAN das Verhältnis Brutto-/Nettodaten etwas weniger als 50%
beträgt. Weiterhin kann CAN (ohne FD) max. 1MBaud, was aber nur auf dem
Labortisch ratsam ist, in der Praxis max. 500kBaud auf kurzen Strecken
von wenigen Metern.
Weiterhin kann das Puffern der Daten aus dem SPI anspruchsvoll werden,
besonders dann wenn man auf das Protokoll keinen Einfluss hat.
Theoretisch kann es passieren, dass die Daten im Burst kommen, dafür
aber nur selten. Die Datenrate passt vielleicht im Durchschnitt, aber
man muss die Daten aus dem Paket irgendwo bunkern und jederzeit
empfangsbereit sein.
Wenn es sich aber tatsächlich nur um „normale“ Sensordaten handelt
sollte das alles kein Problem sein.
Ähem schrieb:> kann ich ein SPI-Signal per uC in CAN wandeln?
Du brauchst einen Protokollwandler. D.h. der MC muß wissen, wie er das
IC am SPI anzusprechen hat und welches Protokoll Du auf dem CAN benutzen
willst.
Typisch hat man dazu auf dem MC einen kleinen Kommandointerpreter, der
dann Steuerbefehle (z.B. Konfiguration des SPI) und Datenpakete
voneinander trennt.