3
\$\begingroup\$

I’m using the BeagleBone Black Rev C running Debian Linux. We are developing a new agricultural field implement. I have designed a CANBus interface board that uses the MCP2562 transceiver and Molex 39281043 for bus cable connectors. The first board I designed has just one Molex connector, which connects to the CAN Bus network cable. I have a 120 ohm resistor across CAN_H and CAN_L, which can be jumpered in or out of the circuit as needed. This board works fine with two nodes, both of which are terminated with the onboard resistor connected.

I realized after receiving these that I had no way to easily use this board as a midpoint node, so I copied the working design and added a second Molex connector, allowing the board to be inserted into the network in a daisy chain fashion (at least, that’s how I think it works).

I’ve started testing by putting one of the new two-connector boards in the middle of the network. Before doing so, I have reconfirmed that the two-node configuration still works and confirmed all the cables are good by using each in the two-node configuration one at a time. I have even used one of the new boards as the end node in the two node test configuration and that works.

I have swapped all cables around to confirm they are all good.

The testing is going on in the office away from any appliances, etc. other than overhead office lights and my computer.

I’m running at 500kbps. The cables are roughly 18” long... The traces on the boards are under 0.5” and, admittedly, are small at 6mil. It's a two-layer board. I have checked continuity on the boards and swapped the new boards out for a different copy of the board. I have checked the resistance of the network cable, and it is 60.4 Ohms.

At this point, I am not trying to communicate with the mid-node. I just want to keep communicating between the two end nodes first, and that is not working. There is no code running involving the CANbus on the middle node BeagleBone.

Here is a scope trace of the signal from the two-node setup.

enter image description here

The trace on the scope when the mid-node is in place is definitely different but there it isn't appreciably more noisy.

enter image description here

I have switched in different copies of the same boards and no significant change. I have also checked all cables and connectors and everything seems stable. The CANBus cable is IGUS CFBUS-LB-022 Chainflex. And the connectors on them are Amphenol Sine Systems ATM series.

Any ideas? Anything you’d like to see? This is my first work with CANBus boards, and it was really encouraging to have such initial success but I've not been able to figure out what is going on.

UPDATE: FIXED! I caused the problem by misreading the Microchip MCP2562 transceiver documentation. I put a 100pf capacitor across CAN_H and CAN_L in error. As I designed a rev of the board to improve the signal routing, I checked the doc & found my error. I removed the 100pf caps from all the boards and ran my tests again with the same cables, BeagleBones, boards & software & it all works really well now at 500Kbps. The telltale sign was right there in the scope traces - the capacitive decay that got worse with a third board installed.

enter image description here

\$\endgroup\$
8
  • \$\begingroup\$ There is no code running involving the CANbus on the middle node BeagleBone. That may be a problem. All inputs to the transceiver must have valid logic levels, i.e. the CPU pins that drive them cannot be left floating/undriven. The transceiver must be disabled, and must be powered up unless the datasheet states otherwise. \$\endgroup\$ Commented Oct 1 at 21:17
  • \$\begingroup\$ Is the third node without firmware powered up? Does it work if it is unpowered? \$\endgroup\$ Commented Oct 2 at 7:07
  • \$\begingroup\$ I have tried it without it powered up, with it powered up but no code running, and with the Linux driver loaded and the CANBus link up on the middle node. But you offer a good question that is worth exploring and I will. Thank you! But this also raises something of a concern. It seems if this is the case, if there is a failure of a mid-node on the network, the whole network would cease to function. That would seem to be a major issue for a system relying on CANBus. Can you speak to that? \$\endgroup\$ Commented Oct 2 at 15:57
  • 1
    \$\begingroup\$ FIXED! I caused the problem by misreading the Microchip MCP2562 transceiver documentation. I put a 100pf capacitor across CAN_H and CAN_L in error. As I designed a rev of the board to improve the signal routing, I checked the doc & found my error. I removed the 100pf caps from all the boards and ran my tests again with the same cables, BeagleBones, boards & software & it all works really well now at 500Kbps. The telltale sign was right there in the scope traces - the capacitive decay that got worse with a third board installed. \$\endgroup\$ Commented Oct 8 at 14:52
  • 2
    \$\begingroup\$ "UPDATE: FIXED!" 1) Write that in an answer. 2) In a few days, accept that answer. \$\endgroup\$ Commented Oct 8 at 15:16

1 Answer 1

1
\$\begingroup\$

FIXED! I caused the problem by misreading the Microchip MCP2562 transceiver documentation. I put a 100pf capacitor across CAN_H and CAN_L in error. As I designed a rev of the board to improve the signal routing, I checked the doc & found my error. I removed the 100pf caps from all the boards and ran my tests again with the same cables, BeagleBones, boards & software & it all works really well now at 500Kbps. The telltale sign was right there in the scope traces - the capacitive decay that got worse with a third board installed. Now, three boards (nodes) work at 1Mbps just fine. Here's an example signal from the scope. Notice how much cleaner the signals are.

In case it helps anyone, the cable is IGUS Chainflex CFBUS-LB-022. The cables connect to the board with Molex 0039281043 headers on the board and mating recptacles (plugs) 0039012040. The cables connect to each other using Amphenol Sine Systems ATM Series connectors (ATM04-4P for example). The board connects to the BeagleBone using a Molex 0050579405 receptacle and matching header. The board is a two-layer board.

enter image description here

\$\endgroup\$

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.