CAN Transceiver MCP2518 not communicating with MCP2561 driver IC

Customer:

I purchased a CAN-BUS module from Soldered some time ago. Unfortunately, I cannot get the module to work with an Arduino Uno. I suspected a defect and bought a second module as a precaution. This module does not work either.

A module from another manufacturer in the same configuration works with the software examples from your library “Soldered-CAN-Bus-Breakout-MCP2518-Arduino-Library-main”.

Using an oscilloscope, I found that the MCP2518 is selected and addressed, but there is no communication between the MCP2518 and the MCP2561, which means the bus does not work.

My suspicion is that the MCP2518 is not being initialized. The module has a 40 MHz crystal. Do I need to add commands or change values in the library?

Original message (German)

Ich habe mir vor einiger Zeit dieses CAN-BUS-Soldered ihrer Firma gekauft. leider bekomme ich das Modul mit einem Arduino Uno nicht zum Laufen. Ich vermutete einen Defekt und kaufte mir zur Sicherheit ein 2. Modul. Auch dieses Modul funktioniert nicht.

Ein Modul eines anderen Herstellers in gleicher Konfiguration und den Software-Beispielen aus ihrer Bibliothek “Soldered-CAN-Bus-Breakout-MCP2518-Arduino-Library-main” funktionieren.

bei Messungen mit einem Oszi habe ich festgestellt, das der 2518 selektiert und angesprochen wird aber es keine Kommunikation zwischen dem 2518 und dem 6561 statt findet und dadurch der BUS nicht arbeitet

Meine Vermutung, der 2518 wird nicht initialisiert. Das Modul ist mit einem 40 MHz Quarz bestückt. Müssen dazu Befehle ergänzt oder Werte in der Bibliothek geändert werden?

Über etwas Unterstützung Ihrer Seits würde ich mich freuen.

Originally submitted via email support on 6 September 2025. Migrated to the forum for community visibility.

Soldered Support:

A few things that might help solve the problem:

Could you please connect a capacitor in parallel between VCC and GND - a 420 µF capacitor (+ to VCC, – to GND) directly on the breakout? This fixed a potential issue on some of these manufactured breakouts.

Have you used termination resistors? The CAN bus requires two 120-ohm resistors, one at each end of the main bus. Please try that.

Let me know if this fixes the problem - then we can look at the issue further.

Original message (German)

Einige Dinge, die zur Lösung des Problems beitragen könnten:
Könnten Sie bitte einen Kondensator parallel zwischen VCC und GND anschließen, einen 420 µF Kondensator (+ an VCC, – an GND) direkt am Breakout? Dies hat bei einer Serie dieser gefertigten Breakouts ein mögliches Problem behoben.
Haben Sie Abschlusswiderstände verwendet? Der CAN-Bus benötigt zwei 120-Ohm-Widerstände, jeweils an den Enden des Hauptbusses. Bitte probieren Sie das aus.
Lassen Sie mich wissen, ob das das Problem behebt – dann schauen wir uns das Thema weiter an.

Customer:

I tested today. For comparison, I tested a foreign board (not from Soldered) with almost identical components and your sample software with your library. I used “CANFD_SEND.ino” and “CANBus-SOLDERED.h”.

Test 1 - Foreign board:
Connections as described in the program. The board has the following important components:

MCP2518FD
Atmel ATA6562H
20 MHz crystal
CAN-BUS with termination resistors

Result: 2 oscillograms (see attachments), with yellow=CAN-H and blue=CAN-L signals.

Test 2 - Soldered board:
The second test used your “CAN Transceiver MCP2518 Board” from Soldered.
Setup and software same as Test 1 with your specifications.

The DIFFERENCE is the 40 MHz crystal.

The oscillogram of the CAN-BUS shows yellow=CAN-H and blue=CAN-L. There is also no communication on the Tx connection between MCP2518 and MCP2561.

What I don’t understand is that the monitor shows initialization of the CAN bus confirmed with “CAN init ok!” even though it does not work.

I hope you can follow my results.

Original message (German)

ich habe heute einen Test gemacht. Zum Vergleich habe ich eine fremde Leiterplatte (nicht von Soldered) mit fast identischer Bestückung und ihrer Beispielsoftware mit ihrere Bibliothek getestet. “CANFD_SEND.ino” und “CANBus-SOLDERED.h”

Test1 fremde Leiterplatte
Die Anschlussbelegung wie im Programm beschrieben. Auf der Leiterplatte sind folgende wichtigen Bauteile verbaut:

MCP2518FD
Amtel ATA6562H
Quarz mit 20MHz
CAN-BUS mit Abschluss-Widerstände

Als Ergebnis 2 Oszilogramme (siehe Anhang),
CanbusFremd.bmp gelb=CAN-H blau=CAN-L
Canbus_TxFremd.bmp gelb=Tx Signal zwischen 2518 und 6562 blau=CAN-L

im Anhang auch das Monitorprotokoll der Fremdleiterplatte “MonitorFremd.jpg”

Test2 Soldered-Leiterplatte
der 2. Test ist mit ihrem Modul "CAN Transceiver MCP2518 Board von Soldered
Aufbau und Software wie im Test1 mit ihren Vorgaben

UNTERSCHIED ist der Quarz mit 40 MHz

im Anhang das Oszillosgramm des CAN-BUS gelb=CAN-H blau=CAN-L
auch auf der Tx Verbindung zwischen 2518 und 6561 ist keine Kommunikation

was ich nicht verstehe, das im Monitor die Initialisierung des CAN-Busses mit O.K. “CAN init ok!” quitiert wird, obwohl nicht funktioniert.

ich hoffe, sie können meine Ergebnisse nachvollziehen.

Attachment omitted in migration: CANBUS_TxFremd.bmp

Attachment omitted in migration: CANBUS_Soldered.bmp

Attachment omitted in migration: MonitorSoldered.jpg

Attachment omitted in migration: CANBUSFremd.bmp

Attachment omitted in migration: MonitorFremd.jpg

Soldered Support:

Thank you! I will have a colleague run some detailed tests. Just one thing to try: when initializing the library, please use:

CAN.begin(CAN_500KBPS, CAN_SYSCLK_40M);

This sets the clock correctly (change the first parameter to the value you are already using). Perhaps this is the missing piece. Please try this and give us feedback so we can continue testing to figure out what is wrong.

Original message (German)

vielen Dank! Ich werde einen Kollegen einige detaillierte Tests durchführen lassen – nur eine Sache zum Ausprobieren: Beim Initialisieren der Bibliothek bitte Folgendes verwenden:
CAN.begin(CAN_500KBPS, CAN_SYSCLK_40M); Damit wird der Takt korrekt eingestellt (ändere den ersten Parameter auf den Wert, den du bereits verwendest). Vielleicht ist das das fehlende Puzzlestück. Probier das bitte kurz aus und gib uns eine Rückmeldung, damit wir mit den Tests fortfahren können, um herauszufinden, was nicht stimmt.

Customer:

I had already searched everywhere for this keyword CAN_SYSCLK_40M. Unfortunately it did not help - still no communication with the driver IC.

For your information, I am always testing with 2 Soldered boards!

Something else I noticed: if I disconnect the NCS signal, I still get the message “CAN init ok.” Now I have no more ideas what it could be.

I have also already replaced the MCP2518FD on one board because you wrote that it might be a defective chip series. But nothing changed.

I have attached more pictures of my board. Or do I have the wrong/outdated library?

For your information, I am a diploma engineer in automation technology by profession and have built and repaired many electronic devices and I don’t understand why I can’t get your board to work.

Original message (German)

ich hatte schon überall nach diesem Schlüsselwort gesucht
CAN_SYSCLK_40M
leider hat es nicht geholfen, nach wie vor keine Kommunikation zum Treiber IC.

zur Info, ich teste immer mit 2 Leiterplatten von Soldered!!

Was mir noch aufgefallen ist, wenn ich das Signal “NCS” trenne kommt trotzdem die Meldung “CAN init o.k.”
jetzt habe ich keine Ideen mehr woran es liegen könnte.

Ich habe auch schon auf einer Leiterplatte den MCP2518FD getauscht, weil sie geschrieben haben, das es vielleicht eine defekte Schaltkreisserie sein könnte. Hat sich aber nichts geändert.

Anbei noch einmal Bilder von meiner Leiterplatte. Oder habe ich eine falsche/zu alte Bibliothek.

Auch noch zur Info ich bin von Beruf Diplomingenieur für Automatisierungstechnik und habe schon viele elektronische Geräte gebaut und repariert und verstehe nicht, warum ich ihre leiterplatte nicht zu arbeiten überreden kann :frowning:

Schade das der Neue Weg nichts gebracht hat.

mfg
wpw

-----Original-Nachricht-----
Betreff: Update on Your [name removed] Support Inquiry (#190621)
Datum: 2025-09-17T12:42:29+[address removed]: “[name removed] ([name removed])”
An: “Wpw-saw”

Attachment omitted in migration: Zwischenablage01.jpg

Attachment omitted in migration: Zwischenablage02.jpg

Soldered Support:

I am truly sorry you are having this experience with our product. We have received some reports about this breakout, but we have not been able to reproduce the problem so far. The library we use for our CAN-Bus is this one:

We can find the keyword CAN_SYSCLK_40M in it.

From the previous emails, I can see that you are indeed using our library to control the breakout - that is correct. Is your compiler not recognizing the keyword CAN_SYSCLK_40M at all? That is strange, as it should work with our installed library. I just compiled CANFD_SEND.ino for the board definition “ESP32 generic dev module” (which should make no difference) and with our library it compiled without problems with:

while (0 != CAN.begin(CAN_125K_500K, CAN_SYSCLK_40M))

The keyword was found successfully.

We do not doubt your expertise at all - in fact, other experts have also had problems with this breakout. Again: I am very sorry you had to experience this. I am of course offering you a full refund for the products.

Original message (German)

es tut mir wirklich leid, dass du diese Erfahrung mit unserem Produkt machst. Wir haben einige Meldungen zu diesem Breakout erhalten, aber das Problem konnten wir bisher nicht reproduzieren. Die Bibliothek, die wir für unseren CAN-Bus verwenden, ist diese hier:
GitHub - SolderedElectronics/Soldered-CAN-Bus-Breakout-MCP2518-Arduino-Library: CAN Bus Breakout with MCP2518 Soldered Arduino Library · GitHub
Darin finden wir auch das Schlüsselwort CAN_SYSCLK_40M:

Aus den bisherigen E-Mails sehe ich, dass du tatsächlich unsere Bibliothek verwendest, um das Breakout anzusteuern – das ist korrekt. Erkennt dein Compiler das Schlüsselwort CAN_SYSCLK_40M überhaupt nicht? Das ist merkwürdig, da es mit unserer installierten Bibliothek funktionieren sollte. Ich habe gerade CANFD_SEND.ino für das Board-Definition „ESP32 generic dev module“ kompiliert (das sollte keinen Unterschied machen) und mit unserer Bibliothek hat es problemlos funktioniert mit:
while (0 != CAN.begin(CAN_125K_500K, CAN_SYSCLK_40M)) Das Schlüsselwort wurde erfolgreich gefunden.

Wir zweifeln deine Expertise überhaupt nicht an – tatsächlich hatten auch andere Experten bereits Probleme mit diesem Breakout. Nochmals: Es tut uns sehr leid, dass du diese Erfahrung machen musstest. Ich biete dir selbstverständlich eine vollständige Rückerstattung für die Produkte an.

Attachment omitted in migration: image.png

Attachment omitted in migration: image.png