04-03-2020 10:42 AM
I am currently facing troubles using CAN over PS. I have the following setup:
- Custom board based on Zynq 7035
- CAN0 connected to MIO 10, 11
- CAN1 connected to MIO 12, 13
- ADM3053 CAN transceivers connected to CAN0 and CAN1 for external communication
- SN74AVC4T774 - Dual supply bus transceiver to connect ADM3053 with PS MIO pins for signal translation
- Vivado 2019.2 and Petalinux 2019.2
I have also followed all the steps mentioned in - https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842496/Linux+CAN+driver , with regard to setup of CAN. Using loopback with EMIO and PL setup, I was able to send and receive data between CAN0 and CAN1 without any issues.
To test externally, I have connected CAN0 and CAN1 in a loopback i.e., CAN0 High to CAN1 High and similarly the CAN-L via tranceivers. After booting with petalinux I have done the CAN configuration and started the controllers as shown below:
ip status after start:
cansend command result and ip status after first cansend command:
As seen, there is no can frame transmitted due to errors on Tx and 19 frames received on Rx. This also results in triggering BUS-OFF. This does not make any sense and I dont know where to look for the root cause of this issue.
There were couple of threads with similar issue that I have already referred, but none of them resolved and kind of old.
Can anyone please give me some pointers of how to resolve this issue? I am a complete noob in this field and would greatly appreciate your kind help.
Many thanks in advance for the help.
04-05-2020 06:18 AM
Can you please check the external bus is formed correctly or not, the external connection should include a termination resistor of value 120 Ohms. If you already included the termination resistor cross verify hardware connection and the other node connections to confirm the bus is formed correctly.
04-05-2020 11:11 AM - edited 04-05-2020 11:12 AM
First of all, thank you for taking time to reply.
The external bus is properly formed with 120 Ohm terminations. I wanted to check if I am obtaining any signal on CAN0 Tx pin when the cansend command was issued using an oscilloscope. But I could not see any.
Can you please tell me how I can make sure that there is an output on CAN0 tx and that there is signal on the trace from tx pin till the transceiver pin?
Thank you again for taking time.