Ich hab solche MCP2515 CAN-Bus Module im Einsatz, aber die letzte Bestellung aus China funktioniert nicht wie erwartet. Liegt wohl daran dass ich die Module mit 3v3 vom ESP32 versorge. Der INT hat einen 10k Pull-up aber liegt dauerhaft auf GND. Deswegen werden auch keine Nachrichten abgeholt. Mit den optisch gleichen Modulen aus der alten Bestellung funktioniert es.
Kann ich einfach den CAN Transceiver austauschen gegen einen SN65HVD230D oder sollte das Modul mit 5v versorgt werden?
Der MCP2515 kann beides, aber der TJA1050 will 5V sehen.
Wenn deine alten Module die gleichen Chips haben hast du arg Glück das die gehen, denn du bist definitiv außerhalb der Specs.
Es gibt auch ein CAN-Modul mit dem MCP2515, das zwar mit 5 V betrieben wird, aber die separate Einspeisung der I/O-Spannung ermöglicht. Bei Reichelt kostet es etwas über 11 €. Bei AliExpress habe ich ein solches Modul bisher nicht gefunden.
aber die letzte
Bestellung aus China funktioniert nicht wie erwartet.
Das versteht kein Schwein. Warum soviel Ärger einhandeln wenn
man für wenig mehr Geld die Module in Deutschland kaufen kann?
Beim deutschen Händler könntest du die Teile einfach zurück-
schicken, beim Chinesen wird das echt Äggdschn. Aber es besteht
für Käufe in Deutschland die Chance dass die Module einwandfrei
funktionieren.
Kann ich einfach den CAN Transceiver austauschen gegen einen SN65HVD230D
Been there, done that.
Hat bei mir funktioniert. Du musst halt schauen, was die sonstigen Pins an deinem CAN-Treiber machen und wie die auf der Platine belegt sind. (Pin 5 und 8)
Warum soviel Ärger einhandeln wenn
man für wenig mehr Geld die Module in Deutschland kaufen kann?
Inkl. Versand € 5,19 für 5x Stück, kann man nichts falsch machen. Mit 5V funktionieren die auch. Der ESP32 ist an den VSPI Pins 5V tolerant, deswegen konnte ich das testen.
Bin einfach davon ausgegangen die sind pinkompatibel. Wollte nur wissen ob Widerstände geändert werden müssen. Also wenn's bei Dir funktioniert hat teste ich das auch noch mal.
Warum soviel Ärger einhandeln wenn
man für wenig mehr Geld die Module in Deutschland kaufen kann?
Inkl. Versand € 5,19 für 5x Stück, kann man nichts falsch machen. Mit 5V
funktionieren die auch. Der ESP32 ist an den VSPI Pins 5V tolerant,
deswegen konnte ich das testen.
Ja, aber das ist Murks. Schon mal in die Datenblätter geschaut? Auch alles verstanden?
Der MCP2515 erkennt an seinen Eingangspins High, wenn die Spannung ≥ 0.7×Vcc ist. Bei Vcc=5V sind das 3.5V. Kannst Du nachrechnen. Dein ESP wird als 3.3V System niemals 3.5V an seinen Ausgangspins liefern. Wenn es funktioniert hat, dann nur zufällig. Und wenn es nur zufällig funktioniert, dann sind auch 5€ 5€ zuviel.
Also muss der MCP2515 mit 3.3V versorgt werden, damit alles sauber funktioniert.
Nächster Punkt: Transceiver. Ja, es gibt reine 3.3V Transceiver. Die müssen aber etwas rumtricksen. Schau: CAN ist ein 5V-Standard. Rezessiver Pegel ist VCC/2, als 2.5V auf CAN_H und CAN_L. Beim dominanten Pegel (also 0) wird CAN_L um 1V runtergezogen und CAN_H um 1V hochgezogen. Also CAN_L=1.5V und CAN_H=3.5V. Ein 3.3V Transceiver schafft aber niemals 3.5V am CAN_H. Der schafft bestenfalls 3.0V. Zu wenig. Als Ausgleich zieht er CAN_L auf 1.0V statt der normgerechten 1.5V. Ist zwar nicht wirklich konform zur ISO 11898-2, funktioniert aber meistens.
Wenn ich 5V zur Verfügung habe, dann nehme ich immer Dual-Supply Transceiver wie den MCP2562(FD). Der hat 3.3V am Logikteil und 5V an der Busseite, passt also zu einem 3.3V Controller und erzeugt normgerechte Buspegel. Das ist dann alles sauber und funktioniert dann nicht nur zufällig, sondern immer.
Ich bezahle lieber etwas mehr und habe dafür wirklich funktionierende Lösungen.
Der ESP32 hat ein TWAI, was dem CAN entspricht.
Transceiver mit VIO 3,3V ran wie z.B. ein TJA1043 / TJA1051T/3 oder halt ein Tranceiver für 3,3V only (nicht ganz standardkonform mit CAN) wie den SN65HVD230.
Ja Herr Oberlehrer. Dieser Hinweis wird auch wahnsinnig viel zur Lösung der eigentlichen Problemstellung beitragen. Du darfst dir auf die Schulter klopfen.
Der MCP2515 erkennt an seinen Eingangspins High, wenn die Spannung ≥
0.7×Vcc ist.
Ich kann die 5V etwas runter drehen auf 4.75V dann passt es.
Nein, passt nicht. Schon mal das Datenblatt des ESP32 gelesen? Da steht drin:
"VOH High-level output voltage min: 0.8 × VDD max: -"
Der Hersteller garantiert nur, dass der High-Pegel am Ausgang mindestens 0.8×Vcc ist. Und Du willst noch etwas Toleranz haben.
Bei Deinem konketen Exemplar mag das aktuell zufällig so sein. Bei einem anderen Exemplar kann das weniger sein. Für den Hersteller ist alles größer gleich 0.8 ok. Und der schreibt das nicht ohne Grund so rein. Das kann sich auch mit der Temperatur ändern, oder mit dem Alter des Chips usw. Das weißt Du alles nicht.
Ich habe halt keine Lust auf den CAN Modulen eine Leiterbahn zu trennen.
Was wäre denn sinnvoller ein Pegelwandler für 10 MHz, oder die
SN65HVD230?
Wenn Du normgerechte Buspegel haben willst: Pegelwandler. Und zwar solche mit manueller Richtungsumschaltung: 74LVC1T45 und 74LVC2T45. Die mit automatischer Richtungsumschaltung wie TXB0108 nimmst Du genau nur dann, wenn Du dieses Feature auch tatsächlich brauchst und weißt, was Du machst. Die automatische Richtungsumschaltung ist nämlich etwas empfindlich.
Bei Deinem konketen Exemplar mag das aktuell zufällig so sein. Bei einem
anderen Exemplar kann das weniger sein. Für den Hersteller ist alles
größer gleich 0.8 ok.
Die Ausgangsspannung hängt vom Strom ab. Ohne diese Angabe steht diese Worst-Case-Angabe für die Ausgangsspannung in keiner Relation zur Anwendung - Exemplarstreuungen hin oder her.
Das wäre dann ein Baustein pro Leitung. Ich glaub dann kann ich CAN bei der nächsten Revision auch gleich direkt mit drauf machen und verzichte auf das Modul.
oder zwei Leitungen pro Baustein. Du hast CS, SCK, MOSI als EIngang und MISO und INT als Ausgang. Wären also zwei 74LVC2T45. Da das SOT23-6 sind, hält sich der Platzbedarf in Grenzen.
Ich glaub dann kann ich CAN bei
der nächsten Revision auch gleich direkt mit drauf machen und verzichte
auf das Modul.
Das wäre extrem sinnvoll. Und dann nimmst Du Dual-Supply-Transceiver.
Der MCP2515 ist nicht auf 5V
Versorgung beschränkt.
Richtig, der ist ja auch nicht das Problem.
Ich hab oben klar geschrieben das der TJA1050 nicht passt.
Welch sinnlose Idee es war einen 3-5V Controller mit einem 5V-only-Transceiver zu verheiraten, weiß ich auch nicht.
Aber das ist "Makerschrott", der wird billig ohne technische Info vertickt, wird schon passen, Hauptsache ich hab dein Geld.
Die machen überhaupt nichts mit eigenen Chips, sondern haben viel
CN-Module, angereichert mit Doku, auf dem deutschen Markt verkauft.
Das sag mal Herrn Kirnbichler!
Es ist aber schon komisch, dass sie für manche Bausteine / Module eigene (Arduino-)Ansprech-Routinen vorschlagen, obwohl die Bausteine originalgetreue Herstellernummer haben, sich aber nicht wie das Original verhalten.
Für einen Maker-Stuff-Lieferanten war der Laden vorbildlich bzgl. Doku.
Demnächst ist da dann aber Schicht (im Schacht).
Das Modul wurde so oft kopiert dass es praktisch überall zu haben ist.
Es ist ja auch UNGLAUBLICH schwierig [tm], das Modul zu nutzen.
a) Betrieb mit 5V an 5V Controller -> Null Problemo
b) Betrieb mit 3,3V an 3,3V Controller
der Tranceiver muss extra mit 5V gespeist werden
RXD vom Tranceiver braucht ca. 2k Vorwiderstand in Richtung Controller als Pegelwandler/Strombegrenzung
Mehr braucht es nicht. Der TJA1050 ist an TXD TTL-kompatibel, verdaut also problemlos 3,3V Signale. Dann braucht es auch KEINERLEI weitere Pegelwandler.
Es handelt sich nun aber mal um dieses fertige (weit verbreitete) CAN Modul. Wie Du dem PCB-top.png entnehmen kannst sind die VCC Pins mit einer Leiterbahn direkt verbunden.
Es ist ja auch UNGLAUBLICH schwierig [tm], das Modul zu nutzen.
Interessanter Weise gibt es da eine kleine Stolperfalle.
Das Board gibts mit 8MHz Quarz und mit 16MHz.
Nicht weiter problematisch, muss man nur beachten, sonst keine Kommunikation.
Es handelt sich nun aber mal um dieses fertige (weit verbreitete) CAN
Modul. Wie Du dem PCB-top.png entnehmen kannst sind die VCC Pins mit
einer Leiterbahn direkt verbunden.
Ja dann muss man es halt auftrennen! Oder ist das Neuland [tm] für dich?
Neudeutsch "hacking".
Die blauen Module haben eigentlich immer mit 3V3 funktioniert. Als pragmatischen Workaround habe ich dem Nutzer geschrieben er soll VCC mit dem 5V Pin verbinden.
Das schwarze JOY-IT CAN Bus Modul habe ich genau deswegen auch schon von Anfang an mit in der Stückliste, weil diese den 16MHz Quarz haben, und die blauen Module fast nur mit 8MHz zu finden sind (es wird beides "benötigt")
Die blauen Module haben eigentlich immer mit 3V3 funktioniert. Als
pragmatischen Workaround habe ich dem Nutzer geschrieben er soll VCC mit
dem 5V Pin verbinden.
Vieles im Elektronikbereich funktioniert außerhalb der Spec „irgendwie“, jedoch:
Wenn TJA1050 verbaut dann 3.3V (only) Murks, 5V okay
Wenn 65HVD230 verbaut 3.3V okay, 5V Murks
Noch mal ne Murksfrage wenn ich nun beide Modulvarianten am selben SPI betreiben will, eines mit separatem 3v3 Interface für den MCP2515 und eines auf 5V.
Für INT habe ich Pull-Up zu 3v3 für beide MCP2515, sollte funktionieren.
MOSI,
SCLK und
CS
jeweils ohne Pegelwandler funktionieren trotzdem. Ist nicht ganz 0,7 x Vdd aber die MCP2515 haben ja noch eine Sicherheit ggü den Datenblattwerten, in der Praxis passen die Pegel noch mit der halben Versorgungsspannung, also ca. 2,5V
Für MISO des 5V MCP2515 Moduls habe ich einen Spannungsteiler 4k7/10k zum ESP32 dazwischen geschaltet. Passt soweit auch.
Für MISO von dem (höherwertigeren) MCP2515 Modul (mit separatem 3v3 Interface) möchte ich direkt auf den ESP32 gehen.
Da es für beide Module derselbe GPIO ist, wird dann aber in den Knotenpunkt des MISO Spannungsteilers eingespeist - ist das vertretbar oder kann das Probleme machen?
Über CS0, CS1 gesteuert darf ja eigentlich nur jeweils einer senden.
Noch mal ne Murksfrage wenn ich nun beide Modulvarianten am selben SPI
betreiben will, eines mit separatem 3v3 Interface für den MCP2515 und
eines auf 5V.
Junge, du merkst es auch nicht, was? Du laberst und murkst immer nur ewig vor dich hin. Viel Spaß noch dabei!
Das geht, allerdings ist die Gegenrichtung Murks. Du kannst 0.7VDD nicht einfach ignorieren. Warum überhaupt diese beiden Versorgungen? Packe einen 65HVD230 drauf und gut isses.
Gut dann passt es ja soweit danke. Querströme sind über 4k7 nicht das Thema.
Die Pegelwandler für die Gegenrichtung hatte ich ja schon vorgesehen (74LVC2T45 liegen hier) hab ich aus Platzgründen aber erstmal weggelassen. Nicht dass die Platz wegnehmen aber es war kein Platz mehr für nachträgliche Leiterbahnen. MISO hat jetzt noch die zwei Widerstände bekommen, das ging ohne noch mal alles neu zu routen. Die 0,7xVDD kann ich nachträglich mit dem Poti an der 5V Schiene noch einstellen, dass passt auch.
Ziel war es die Trägerplatine mit dem ursprünglichen blauen CAN Modul kompatibel zu halten, dann bleibt es austauschbar.
Die Idee mit dem SN65HVD230 hatte ich auch schon, aber es ist letztendlich einfacher das Modul mit 5V zu betreiben.
Wenn Du normgerechte Buspegel haben willst: Pegelwandler. Und zwar
solche mit manueller Richtungsumschaltung: 74LVC1T45 und 74LVC2T45.
Werde aus dem Datenblatt nicht so recht schlau. Wozu braucht es eine Richtungsumschaltung?
Habe mir jetzt hier abgeguckt wie die verschaltet werden. Ich würd die ja gern drauf machen, aber die brauchen schon etwas Platz. Vor allem wenn da noch Kerkos dazu müssen.