MCP2515 connection with Jetson AGX Orin

How do I connect the MCP2515 CAN Bus Module with Jetson AGX Orin Developer Kit

Pinout of MCP2515 CAN Bus Module:-

  • VCC :5V power input pin
  • GND : power ground pin
  • CS : SPI SLAVE select pin (Active low)
  • SO : SPI master input slave output lead
  • SI : SPI master output slave input lead
  • SCLK: SPI clock pin
  • INT: MCP2515 interrupt pin

Hi paul.anuj1,

What’s your Jetpack version in use?

Please refer to the following thread about our verification for MCP2515.
Jetson Orin NX(JP5.1.2_R35.4.1) mcp2515 can1 can send data, can not recieve data - #10 by KevinFFF

Orin AGX has two CAN controllers built-in - there is no need for the MCP2515 unless you need three or more busses. And the internal controllers are much more capable.

I want to use a CAN Transceiver but only MCP2515 is available locally.

MCP2515 (the chip itself) does not contain a transceiver as well - you would need an extra transceiver chip as well. Or you have an unknown board with MCP2515 SPI controller and MCP2551 transceiver.

Okay so is there any alternative to waveshare sn65hvd230 which is recommended by Nvidia.

Also will TJA1050 work directly?

Normally, MCP2515 module would come with CAN transceiver, but it’s more complicated for porting the module.

We would suggest you using the built-in CAN interfaces with CAN tranceiver since you are using AGX Orin.

Both should work. I would also suggest you could verify internal loopback test for CAN first.

I cannot directly connect wires to the CAN pins for a loopback test without a transceiver in between right?

I don’t have the Waveshare SN65HVD230 currently.

So I will use the TJA1050 instead for now.

This should solve my problem is my understanding correct?

TJA1050 is a 5V chip. The Orin pins are not 5V tolerant, so you need level shifters for 5V signals. Otherwise the 5V fron the RX pin of the transceiver will kill the corresponding pin on the Orin.

The Orin CAN controller implements also CAN-FD, so you should use a CAN-FD capable transceiver chip.

Suitable parts are:
MCP2562FD
MCP2558FD
SN65HVD266
NCV7351−3
and many more with VIO 3.3V supply on pin 5.

That explains it!
Here all I can get is a Can Module with MCP2515 with TJA1050 as a CAN transceiver

Link for reference:

I’ll get one of those suggested by you

The “internal” loopback test means that you don’t need to connect any external cable for the test.
You could refer to the developer guide and verify this first.

1 Like

You MUST NOT use this MCP2515/TJA1050 board. This board will damage your Orin!

Reason: This Board requires 5V supply. If the MCP2515 received 5V power supply it will output its signals with 5V level . This will damage the Orin pins immeadiately. The MCP2515 itself can also run on 3.3V, but this board can’t since the TJA1050 can’t. So this board is unusable for you.

Here is a link to Farnell India for the MCP2562FD:
https://in.element14.com/microchip/mcp2562fd-e-p/can-transceiver-8mbps-1-tx-rx/dp/2434898

Datasheet:

1 Like

Thankyou Frank for the detailed explanation!

I am getting this error:
adas_dil@ubuntusudo modprobe can
adas_dil@ubuntu:~$ sudo modprobe can_raw
adas_dil@ubuntu:~$ sudo modprobe mttcan
adas_dil@ubuntu:~$ sudo ip link set can0 up type can bitrate 500000 dbitrate 1000000 berr-reporting on fd on
adas_dil@ubuntu:~$ sudo ip link set can1 up type can bitrate 500000 dbitrate 1000000 berr-reporting on fd on
adas_dil@ubuntu:~$ sudo ip link set can0 type can bitrate 500000 loopback on
RTNETLINK answers: Device or resource busy
adas_dil@ubuntu:~$ sudo ip link set can0 up
adas_dil@ubuntu:~$ sudo candump can0 &
[1] 3840
adas_dil@ubuntu:~$ sudo cansend can0 123#abcdabcd
adas_dil@ubuntu:~$

Could you share the full dmesg for further check?

Or please reboot the board and run above workflow again.