CAN issue with TX2NX

Hi,
I’m facing an issue with a TX2NX board and CAN communication.
The whole system is composed by:

  • a TX2NX
  • a RoboteQ motor controller
  • an STM32 nucleo
  • a custom board

The TX2NX board uses Lely library for CANOpen communication with other boards.

By connecting the TX2NX to the system through an InnoTek USB-CAN converter everything works as expected.
But if I use the integrated CAN controller the TX2NX reports several errors in dmesg output:

  • Bit1 error
  • Ack Error
  • sometimes FrameError and StuffError

I tested the communication using both a ConnectTech Quark carrier and a Forecr DSBoard with same results. I also tried a new TX2NX module but the same happens.

Where should be the problem?

Thank you!

Hi forale,

It seems you are using the custom carrier board for TX2-NX.
Have you tried to verify CAN communication on the devkit?

What’s your Jetpack version in use?

Do you refer to the following instruction to verify CAN bus?
NVIDIA Jetson Linux Driver Package Software Features : CAN (Controller Area Network)

Hi kevinFFF,
yes, I’m using 2 different carriers and both of them give the same errors:

  • ConnectTech Quark
  • Forecr DSBOARD

I’m sorry but I don’t have a TX2-NX devkit to test.

I’ve tested both 4.6.1 and 4.6.3 jetpack versions, and the issue is also the same.

I will look at the link you attach.

Thank you!

Hi KevinFFF,
I was looking at the link you suggest and at the moment some things seems to be ok:

  • mtccan is enabled
    • cat /proc/device-tree/mttcan@c310000/status → okay
  • the pinmux is set as expected:
    • sudo busybox devmem 0x0c303020 w → 0x00000458
    • sudo busybox devmem 0x0c303018 w → 0x00000400

I was looking for the clock using the following commands:

  • sudo cat /sys/kernel/debug/bpmp/debug/clk/can0/rate
  • sudo cat /sys/kernel/debug/bpmp/debug/clk/can0/pto_counter

but both of them give me the “No such file or directory” error. If I type “ls” (as root) in the folder ‘/sys/kernel/debug/bpmp/debug/clk’ I can find only can1 and can2 subfolders, can0 does not exists.

It is okay? Should I look at the can1 folder?
The can1 is configured with a rate of 40000000 and the pt_counter is set to 40001536.
The can2 has both rate and pto_counter set to 38400000.

Thank you!

Have you used Jetson-IO to configure pinmux for CAN bus?

How do you connect CAN port to do loopback test?

You can use the following command to do internal loopback test for can0 first.

$ ip link set can0 type can bitrate 500000 loopback on
$ ip link set can0 up
$ candump can0 &
$ cansend can0 123#abcdabcd

Accordingly with ConnectTech and Forecr guides I don’t have to set pinmux. The only thing to do is to install the relevant BSP.

I want to remark that the communication with the other board is working well with cansend, both using the integrated CAN and the USB-CAN converter.

Actually, using Jetson-IO to configure pinmux is the similar effect as using devmem to write register.

What do you mean about other board?

I want to know if the internal loopback test for each can bus working.

Hello @forale,

Have you connected the TX2 NX’s internal CANBus to your system after it powered on?

Hi Kevin,
I’m sorry for the misunderstanding.
I mean that the TX2NX is able to send messages to other device connected to the CAN network using the cansend command. The issue arises when I want to send some messages to other device using a C++ application.
This C++ application (on the TX2NX) generates Bit1 Error if the connection to the CAN network is made using the internal CAN interface.
The same application works without generating errors if the connection to the CAN network is made using an Innotek CAN-USB adapter, always running on the TX2NX.

Anyway, I will try the loop-back ASAP.

Thanks!

Hi mehmetdeniz,
what do you mean?
I have connected CAN_H and CAN_L to the network before powering up the DSBOARD.

Thanks!

Is it applicable to connect and test it (the internal CANBus) after the DSBOARD booted up?

If you won’t get any problems in this test, we need to disable the CANBus pins from the TX2 NX and set them after it booted up.

Hi,
what I have to do to make the test you suggest?

Let me explain step by step:
1- Power up the TX2 NX with DSBOARD (without connecting your CANBus system (the RoboteQ motor controller, the STM32 nucleo & the custom board))
2- After the TX2 NX booted up (if it has a desktop environment, wait until the desktop GUI opened), connect the internal CANBus pins to the CANBus system
3- Then test the CANBus network.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.