Hallo zusammen, ich habe ein paar MCP2515/TJA1050/8MHz Can-Bus Modul (siehe Google, "MCP2515_CAN", diese blauen Dinger mit zwei Schraubterminals). Angebunden an einen Arduino Nano, nutze PlatformIO + https://github.com/autowp/arduino-mcp2515 als Library. Zum Testen habe ich zwei Arduinos+MCP2515, H/L verbunden, und die jumper für die 120Ohm Widerstände gesetzt. Daten Senden klappt einwandfrei mit 20kbps, 50kbps, 100kbps oder 500kbps. Egal ob mit/ohne Wiederstände, und egal ob kurzes/langes Kabel etc. Nur mit 10kbps klappt es nicht. TXERR bit gesetzt, Fehlerzähler geht hoch, andere Seite empfängt auch nicht. Habe zum Testen mal auf eine andere Library umgebaut (https://github.com/pierremolinaro/acan2515), und auch die CNF1-3 register mal mit verschiedenen Einstellungen von https://www.kvaser.com/support/calculators/bit-timing-calculator/ geupdated, hilft alles nichts. Habe dann den MCP2515 an ein eigenes Netzteil angeschlossen, und wenn ich die Spannung zwischen 5 und 6V variiere, kommt hin und wieder mal ein Paket durch, aber nicht dauerhaft. Empfangen mit 10kbps (Heizung, Heatronic) klappt ohne Probleme. Im Oszilloskop kann ich nichts seltsames erkennen. Hat hier mal einer ähnliche Erfahrungen gemacht oder eine Idee dazu? Ganz vielen Dank vorab Moritz
Soweit ich mich erinnern kann, gibt es CAN Transceiver mit integrierter Überwachung auf Busblockaden, die sprechen bei zu langen dominanten Zuständen an und unterbinden diese. Da gibt es welche, die mindestens 20kbs sehen wollen. Wenn auf deinem Board der TJY1050 verbaut ist, dann steht in dessen Datenblatt 60 kbaud up to 1 Mbaud.
Christian K. schrieb: > Soweit ich mich erinnern kann, gibt es CAN Transceiver mit integrierter > Überwachung auf Busblockaden, die sprechen bei zu langen dominanten > Zuständen an und unterbinden diese. Da gibt es welche, die mindestens > 20kbs sehen wollen. Wenn auf deinem Board der TJY1050 verbaut ist, dann > steht in dessen Datenblatt 60 kbaud up to 1 Mbaud. Das scheint es wohl zu sein. Der TJA1050 hat ein Timeout wenn TXD zu lange LOW ist von typ. 450us. Durch das bit stuffing ist TXD zwar maximal 5 bits lang LOW, aber bei 10kHz sind das halt dann 500us ... LG, Sebastian
Super vielen Dank, das scheint es zu sein. Schade, dass da echt nur tdom(TXD) irgendwo versteckt im Datasheet steht, und nicht irgendwo eine minimum usable baud rate oder so etwas. Der MCP2551 scheint auch nur bis auf 40 kbps runter zu können. Hier https://github.com/Neuroquila-n8fall/JunkersControl wird das obige Board empfohlen zur Kommunikation mit einer Junkers Heatronic, dann hat der Herr wahrscheinlich mit Glück eins der TJAs bekommen, der eher bei 250us statt 450us liegt... Es scheint auch keine Transceiver zu geben, die 10 kbps wirklich unterstützen, vielleicht mal was für nen raspberry pico mit bitbanging :/ Danke! Moritz
Moritz M. schrieb: > Es scheint auch keine Transceiver zu geben, die 10 kbps wirklich > unterstützen, vielleicht mal was für nen raspberry pico mit bitbanging > :/ Wozu meinst du, 10kbps zu brauchen? Ist das ein neuer Trend, slow communication? Nimm 125kbit/s und mehr und gut.
Moritz M. schrieb: > Der MCP2551 scheint auch nur bis auf 40 kbps runter zu können. Nö, 16kbit/s, RTFM. "1.5 TXD Permanent Dominant Detection If the MCP2551 detects an extended Low state on the TXD input, it will disable the CANH and CANL output drivers in order to prevent the corruption of data on the CAN bus. The drivers are disabled if TXD is Low for more than 1.25 ms (minimum). This implies a maximum bit time of 62.5 μs (16 kb/s bus rate), allowing up to 20 consecutive transmitted Dominant bits during a multiple bit error and error frame scenario. The drivers remain disabled as long as TXD remains Low. A rising edge on TXD will reset the timer logic and enable the CANH and CANL output drivers." Seite 12 14 TtxL2busZ TX Permanent Dominant Timer Disable Time 1.25 4 ms Der kann also mit etwas Glück auch 10kbit/s.
:
Bearbeitet durch User
Moritz M. schrieb: > Zum Testen habe ich zwei Arduinos+MCP2515, H/L verbunden Nur, weil es im textuellen Schaltplan nicht erkennbar ist: GND ist aber schon auch verbunden?
Ich hab mir so eine Platine mit TJA1055 bestückt. Hab die auch noch einzeln da auf 1.27 mm Adapterplatine, falls Du was brauchst. Beitrag "Re: Meine erste Platine mit TARGET 3001!"
Moritz M. schrieb: > Es scheint auch keine Transceiver zu geben, die 10 kbps wirklich > unterstützen Es gibt durchaus ältere Transceiver die dieses Timeout noch nicht haben, z.B. die früher weit verbreiteten PCA82C250/251. Damit habe ich über ein paar Jahre meine Zentralheizung mit 10kBit angebunden.
Moritz M. schrieb: > Schade, dass da echt nur tdom(TXD) irgendwo versteckt im Datasheet > steht, und nicht irgendwo eine minimum usable baud rate oder so etwas. Etwas Salz in die Wunde : Im Datenblatt des 1050er steht ganz am Anfang :It is primarily intended for high-speed automotive applications using baud rates from 60 kbaud up to 1 Mbaud. Es muss wohl jeder Entwickler irgendwann mal schmerzhaft lernen das man Datenblätter VOLLSTÄNDIG lesen muss. Jede Zeile auf jeder Seite. Oft verstecken sich wichtige Informationen irgendwo ganz weit hinten im Text.
Naja, "primarily intended" heisst für mich nicht "only usable for" ;) Trotzdem ganz vielen Dank, ich probier mich mal an dem MCP2551 (ja - habe im datasheet gesehen - 16 kbaud). Ansonsten habe ich endlich einen Grund, mir das programmable input/output vom raspberry pico mal anzuschauen. Besten Dank an alle! Moritz
Moritz M. schrieb: > Ansonsten habe ich endlich einen Grund, mir das programmable > input/output vom raspberry pico mal anzuschauen. Ja, aber da mal fix einen CAN-Controller nachzubauen ist eher eine Illusion. Zumal das Problem hier beim Tranceiver (Pegelwandler) liegt. Den kannst du mit dem Raspberry PI nicht ersetzen.
Mal ne blöde Idee. Man könnte eventuell die Schutzschaltung des TJA1050 überlisten indem man alle 200us den TXD ganz kurz (5-10ns) auf HIGH zieht. Unter Umständen wird das noch nicht einmal auf dem CAN-Bus sichtbar. Ein solch kurzes Signal zu generieren ist für den ATmega328P aber schwierig, und man müsste das Signal noch zwischen MCP2515 TXCAN und den TJA1050 TXD rein-odern ... LG, Sebastian
Bau doch einen anderen Transceiver ein. Die sind ja allesamt recht pinkompatibel, hier und da mal ein Pin, der ggf. anderweitig beschaltet werden muss. TJA1042T, MCP2551, SN65HVD255 usw. Bevor wieder herumgemotzt wird, ich habe die Eignung dieser Transceiver auf 10kBit vor dem Schreiben des Beitrags nicht validiert. Edit: sehe gerade, teilweise schon genannt…
:
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.