Zwischen den Ardionos sehe ich bei jeder übertragenen Nachricht
kurzzeitig eine Änderung des Spannung auf der CAN Leitung (was ja auch
korrekt ist).
Sende ich mit meinem Raspberry eine Nachricht, so beginnt die Spannung
auf der CAN Leitung wild hin und her zu schwanken, bis ich den Raspberry
resete.
Woran kann das liegen? Ein Fehler in meiner Rasperry Schaltung??
Die SPI Initalisierung am Raspberry funktioniert problemlos und der
MCP2515 wird auf vom Linux Kernel erkannt.
Danke!
lG
Entweder hast Du Deinen Pi schon beschädigt, oder Du bist gerade dabei.
Die GPIO-Pins vom Pi vertragen keine 5V. Du versorgst aber den MCP2515
mit 5V. Dadurch sind für den die Eingangspegel zu niedrig, was
vielleicht noch gehen würde, aber er gibt auf MISO 5V-Pegel aus, was den
Pi entweder schon beschädigt hat oder ihn beschädigen wird.
Also: Sofort alles außer Betrieb nehmen.
MCP2515 mit 3.3V versorgen.
Als Transceiver nimmst Du einen MCP2562. Der braucht einmal 5V für den
CAN-Bus und einmal 3.3V für RX/TX zum MCP2515.
Am MISO machst Du ab Besten noch einen Pullup (irgendwas zwischen 10k
und 100k nach 3.3V), damit der Pi auch dann noch einen gültigen
Logikpegel hat, wenn der MCP2515 MISO auf Z (hochohmig) setzt.
fchk
Thomas schrieb:> Sende ich mit meinem Raspberry eine Nachricht, so beginnt die Spannung> auf der CAN Leitung wild hin und her zu schwanken, bis ich den Raspberry> resete.
Vermutlich spamt der PI Error Frames. Das solltest du mit den Arduinos
erkennen können. Sowas wird normalerweise vom CAN Controller erkannt.
Ansonsten kann ich mich dem Vorredner nur anschließen.
Frank K. schrieb:> Die GPIO-Pins vom Pi vertragen keine 5V. Du versorgst aber den MCP2515> mit 5V. Dadurch sind für den die Eingangspegel zu niedrig, was> vielleicht noch gehen würde, aber er gibt auf MISO 5V-Pegel aus, was den> Pi entweder schon beschädigt hat oder ihn beschädigen wird.
Danke für den Hinweis, daran habe ich gar nicht gedacht.
Habe im Internet nun für den Raspberry ein Schaltplan gefunden, diese
kann ich im Grunde 1:1 übernehmen oder?
Frank K. schrieb:> Am MISO machst Du ab Besten noch einen Pullup (irgendwas zwischen 10k> und 100k nach 3.3V), damit der Pi auch dann noch einen gültigen> Logikpegel hat, wenn der MCP2515 MISO auf Z (hochohmig) setzt.
Kann man mir noch sagen, wieso am MISO ein Pullup benötigt wird? Habe
davon noch nirgends gelesen oder in einem Schaltplan gesehen.
Danke!
Thomas schrieb:> Habe im Internet nun für den Raspberry ein Schaltplan gefunden, diese> kann ich im Grunde 1:1 übernehmen oder?
Sieht erstmal gut aus.
>> Am MISO machst Du ab Besten noch einen Pullup (irgendwas zwischen 10k>> und 100k nach 3.3V), damit der Pi auch dann noch einen gültigen>> Logikpegel hat, wenn der MCP2515 MISO auf Z (hochohmig) setzt.>> Kann man mir noch sagen, wieso am MISO ein Pullup benötigt wird? Habe> davon noch nirgends gelesen oder in einem Schaltplan gesehen.
Grundregel der Digitalelektronik: immer gültige Pegel haben!
Am Eingang eines Pins sind zwei TRansistoren, einmal N und einmal P. Von
denen soll immer nur einer durchgeschaltet sein, der andere soll
sperren. Das funktioniert aber nur, wenn der EIngang entweder auf 0V
oder auf VCC ist. Wenn er irgendwo dazwischen ist, sind beide
Transistoren nur halb durchgeschaltet, und es fließen unzulässige
Querströme.
MISO ist hochohmig, wenn CS high ist. Damit ist der Spannungspegel
undefiniert. Mit dem Pullup ziehst Du ihn auf einen definierten Pegel
und vermeidest diese Querströme.
fchk
Frank K. schrieb:> Grundregel der Digitalelektronik: immer gültige Pegel haben!> Am Eingang eines Pins sind zwei TRansistoren, einmal N und einmal P. Von> denen soll immer nur einer durchgeschaltet sein, der andere soll> sperren. Das funktioniert aber nur, wenn der EIngang entweder auf 0V> oder auf VCC ist. Wenn er irgendwo dazwischen ist, sind beide> Transistoren nur halb durchgeschaltet, und es fließen unzulässige> Querströme.>> MISO ist hochohmig, wenn CS high ist. Damit ist der Spannungspegel> undefiniert. Mit dem Pullup ziehst Du ihn auf einen definierten Pegel> und vermeidest diese Querströme.
Ah ok verstehe ich nun.
Gilt das jetzt nur für den MCP2515, dass dieser hochohmig ist, oder gilt
das generell für alle SPI Kompententen (zB. auch MCP 23S17)
Thomas schrieb:>> MISO ist hochohmig, wenn CS high ist. Damit ist der Spannungspegel>> undefiniert. Mit dem Pullup ziehst Du ihn auf einen definierten Pegel>> und vermeidest diese Querströme.>> Ah ok verstehe ich nun.> Gilt das jetzt nur für den MCP2515, dass dieser hochohmig ist, oder gilt> das generell für alle SPI Kompententen (zB. auch MCP 23S17)
Das gilt generell und auch nicht nur für SPI.
fchk
Frank K. schrieb:> Das gilt generell und auch nicht nur für SPI.
Ja das ist schon klar.
Nur im Falle vom SPI, kann es mir nicht egal sein, wenn das HIGH/LOW im
MISO herumschwankt, wenn das SPI Device gerade nicht den CS auf HIGH
hat? Da wird der MISO PIN ja sowieso nicht ausgewertet (oder?)
und wenn ich 2 SPI Devices auf einer MISO Leitung habe, und ich habe
gerade ein Device aktiv, so wird Der HIGH/LOW Pegel dann sowieso von
diesem einem Device vorgegeben und kann vom anderen nicht aktiven nich
mehr schwanken.
Oder liege ich da falsch?
Thomas schrieb:> Frank K. schrieb:>> Das gilt generell und auch nicht nur für SPI.>> Ja das ist schon klar.> Nur im Falle vom SPI, kann es mir nicht egal sein, wenn das HIGH/LOW im> MISO herumschwankt, wenn das SPI Device gerade nicht den CS auf HIGH> hat? Da wird der MISO PIN ja sowieso nicht ausgewertet (oder?)
Der Prozessor wertet den Pin nicht aus, aber die Eingangstransistoren
sind immer aktiv, und dort fließt dann eventuell ein unzulässig hoher
Querstrom, der bis zur Zerstörung des Einganges gehen kann. Du musst
immer, grundsätzlich und zu jedem Zeitpunkt für eindeutige Pegel an
allen digitalen Eingängen sorgen.
fchk
Frank K. schrieb:> Der Prozessor wertet den Pin nicht aus, aber die Eingangstransistoren> sind immer aktiv, und dort fließt dann eventuell ein unzulässig hoher> Querstrom, der bis zur Zerstörung des Einganges gehen kann. Du musst> immer, grundsätzlich und zu jedem Zeitpunkt für eindeutige Pegel an> allen digitalen Eingängen sorgen.>> fchk
Super danke, wieder was gelernt :-)
Frank K. schrieb:> Der Prozessor wertet den Pin nicht aus, aber die Eingangstransistoren> sind immer aktiv, und dort fließt dann eventuell ein unzulässig hoher> Querstrom, der bis zur Zerstörung des Einganges gehen kann. Du musst> immer, grundsätzlich und zu jedem Zeitpunkt für eindeutige Pegel an> allen digitalen Eingängen sorgen.
Wieso ist es dann kein Problem, wenn man den Pinheader vom RPi einfach
komplett unbeschaltet lässt? So werden die ja millionenfach betrieben.
Rolf M. schrieb:> Frank K. schrieb:>> Der Prozessor wertet den Pin nicht aus, aber die Eingangstransistoren>> sind immer aktiv, und dort fließt dann eventuell ein unzulässig hoher>> Querstrom, der bis zur Zerstörung des Einganges gehen kann. Du musst>> immer, grundsätzlich und zu jedem Zeitpunkt für eindeutige Pegel an>> allen digitalen Eingängen sorgen.>> Wieso ist es dann kein Problem, wenn man den Pinheader vom RPi einfach> komplett unbeschaltet lässt? So werden die ja millionenfach betrieben.
Ich habe jetzt keinen hier zum Nachschauen, was die
Default-KOnfiguration ist. Es gibt mehrere Möglichkeiten:
- Pintreiber komplett abschalten
- schwacher interner Pullup (100k reichen)
- als Ausgang konfigurieren
Offene Eingänge mit undefininierten Pegeln sind jedenfalls immer
problematisch.
fchk
Habe den MCP2561 durch einen MCP2562 ersetzt, den MCP2515 mit 3.3V
versorgt, wie im Diagramm oben angezeigt.
Ich benutze einen 8Mhz Quarz und habe 2x 27pF Kondensator. Ansonsten
entspricht alles dem Diagramm.
Mein Raspberry bootet, CAN- Interface wird erkannt. Auf beide CAN
Leitungen liegen je 2.5V an.
Sobald ich eine Nachricht übertragen möchte sehe ich am Bus eine endlos
lange Übertragung, da anscheiend immer wieder versucht wird, die
Nachricht zu senden, die Gegenseite aber die Nachricht nicht annehmen
kann / will.
8Mhz sollte ja kein Problem sein?
Kann es sein, dass ich durch den 5V Pegel im MISO den PIN am Raspberry
beschädigt habe? Aber dann würde der MCP2515 nicht mehr erkannt werden
können oder??
Hat noch jemand Tipps?