0
\$\begingroup\$

I have a CAN device (PiCAN2 for Raspberry 2) that fails to send or receive CAN messages. The device itself is working, but no CAN messages are received or sent. Termination resistance is ok, so I checked the voltage. Between GND and CAN HIGH, there are 1.3 V and it drops to 1.2 V when I try to send messages. Between GND and CAN LOW, I have exactly the same values. Next I checked the resistance. Between CAN HIGH and CAN LOW I have 47 kOhm and between GND and both CAN wires I have >200 MOhm each. So the resistance seems fine. Is it possible that I have an electrical issue in the PiCAN2 that causes the voltage problem, even though the resistance is fine? Or could it be a supply voltage issue? The PiCAN2 sees a supply voltage of 4.8 or 4.9 V, which is slightly lower than the nominal 5 V.

Edit: The device had been working fine until this morning. In case it is an electrical problem: What could be potential causes for this to happen?

Edit 2: [Solved] I replaced the PiCAN2 module with a new one and it works now. So it was indeed a hardware problem. The module must have taken damage when I was working on its solder bridges. However, it kept working properly for a couple more days and also the software was running smoothly at all times, which made this one a bit tricky to troubleshoot.

\$\endgroup\$
4
  • \$\begingroup\$ What type of CAN bus have you implemented for speed? \$\endgroup\$ Commented Sep 8, 2021 at 19:37
  • \$\begingroup\$ Check your chip voltage again. The idle voltage ought be 50% of Vdd but works at any CM voltage over a wide range but with a differential voltage of 500mV min at the Rx and typically Vdiff=2V with a be \$\endgroup\$ Commented Sep 8, 2021 at 20:38
  • \$\begingroup\$ No, that resistance is not fine. You need to study CAN before using it. What are the most common causes of CAN bus communication errors? \$\endgroup\$
    – Lundin
    Commented Sep 9, 2021 at 6:05
  • \$\begingroup\$ I have 60 Ohm between CANH and CANL when everything is connected. The 47 kOhm are only when my device is disconnected. \$\endgroup\$
    – Dave
    Commented Sep 9, 2021 at 8:06

2 Answers 2

2
\$\begingroup\$

CAN is a differential bus, not a voltage driven bus. A voltmeter is not the best tool for determining if it is working. From your CAN Low and CAN HIGH measurements you should have about 60 Ohms, not 47K. It appears you did not install the termination 120 Ohm resistors on the two extreme ends of the bus. Without those resistor it will not work. For debugging etc be sure the grounds are connected together. I do not understand how the device can be working when nothing is going on the bus, CAN must have an acknowledge to each transmission, forcing you to have at least two active nodes on the bus. Here is a shot of the bus I got online. You can see the 120 OHM resistors on each end. enter image description here

Following is a CAN frame, I found online, look to the right side and you will see the required ACK bit. enter image description here The frames are basically the same between 11 and 29 bit identifiers.

https://en.wikipedia.org/wiki/File:CAN-bus-frame-with-stuff-bit-and-correct-CRC.png As far as the supply voltage that depends on the voltage tolerance of the chips involved. CAN will run at 5V as well as 3.3V, this is transceiver dependent, many will use either without any problems. You picked good parts so I would suggest you double check your wiring and termination resistors. Let us know how it goes.

\$\endgroup\$
4
  • \$\begingroup\$ Gil - Hi, As required by this site rule, when we include something in an answer (e.g. photo, image or text) which isn't our own original work, we need to properly reference (cite) it. As you said, those images have come from somewhere else, so in order to comply with that rule, please can you edit your answer and add a link back to the original source web page for each image? Then I can delete this comment, when that has been done. Thanks. \$\endgroup\$
    – SamGibson
    Commented Sep 8, 2021 at 20:56
  • \$\begingroup\$ The values were measured with the node in disconnected. I have several other nodes on the CAN that are working properly. 2 x 120 Ohm terminators are in place. The voltage and resistance measurements mentioned in my original question were done according to this guide: support.enovationcontrols.com/hc/en-us/articles/… \$\endgroup\$
    – Dave
    Commented Sep 9, 2021 at 5:58
  • \$\begingroup\$ CAN voltages are standardized at 2.5V idle. Transceivers are required to fall in line or they are not CAN transceivers. However, 3.3V transceives might only reach 3.3V on CANH rather than 3.5V as is ideal. This is as far as I know within allowed margins. \$\endgroup\$
    – Lundin
    Commented Sep 9, 2021 at 6:07
  • \$\begingroup\$ I replaced the PiCAN2 module with a new one and it works now. So it was indeed a hardware problem. The module must have taken damage when I was working on its solder bridges. However, it kept working properly for a couple more days and also the software was running smoothly at all times, which made this one a bit tricky to troubleshoot. \$\endgroup\$
    – Dave
    Commented Sep 11, 2021 at 18:26
1
\$\begingroup\$

Check your chip voltage again. 4.8V or 3.3?

The idle voltage ought be 50% of 5V or 1.9V/3.3V however works at any CM voltage over a wide +/- range p.

Most important is the terminators and a differential voltage of 500mV min (due to hysteresis) at the Rx and typically Vdiff=2V Nom with 60 ohm Diff load.

Ideal bus dual-end terminations are split 60+60 ohms matched with 4.7nf to gnd or 10% above max bit frequency, with a 120 ohm diff cable. But can be (no pun intended) 100 to 150 ohm cable with terminations to match.

\$\endgroup\$

Not the answer you're looking for? Browse other questions tagged or ask your own question.