Hi Peter,
Good day.
I managed to communicate with it over SPI reliably, and the init is working fine, but in the status register, I constantly get a CAN error. If I read the h0820 register I get that I have a can silent error.
I have connected a CAN device to the can bus and I am actively trying to communicate but still no improvement.
I measured the CAN bus with a scope and I can see that as soon as I connect the transceiver the CAN bus goes to idle mode(both CANH and CANL to 2,45V).
My problem is the following: I managed to get the TCAN to Normal mode(I can verify this using the 0x0800 register). After initialization for half a second, the first byte on the SDO line is 0x00 indicating there are no errors. After that this byte changes to 0xA0, indicating a global error and CAN error. Once reading the 0x0820 register I can determine the CAN error is the CANSLNT error indicating there is nothing on the CAN bus. I tried multiple solutions with no success.
On the evaluation board, we tried to connect multiple CAN case devices from vector, all of them running multiple different CANoe setups (Not at the same time of course. If you turn on KL15 in the CANoe simulation, there should be data on the CAN bus. This was confirmed by watching the CAN-H and CAN-L pins on the CAN cases. Once I connected the TCAN devices to the already active CAN bus both CAN-H and CAN-L went to 2,46V (usually this means CAN Idle). Throughout this, we are constantly getting the same CANSLNT error for the IC. Even if I try to do a power-on reset still, we get the same error. The device never goes into sleeping mode.
I also experimented with sending out data to the CAN bus, but we still get the same CAN silent error and there is nothing on the bus. Here is the SPI bus data according to the digital discovery device:
Data: 61 | A0, 88 | 00, 34 | 00, 04 | 00, 01 | 00, A4 | 00, 00 | 00, 00 | 00, 00 | 00, 28 | 00, 00 | 00, 00 | 00, 00 | 00, 00 | 00, 0B | 00, CA | 00, 00 | 00, 00 | 00, 00 | 00, 00 | 00,
Throughout this, there is still no data on the CAN bus.
Unfortunately, I could not get any further, we seem to get the same CANSLNT error. Do you have any ideas on how to solve this problem?
I thought there might be a problem with the 120-ohm resistor between CAN H and CAN L. This resistor is placed on the Eval board (R50 and R51 in series). I tried removing J11 and J14 to disconnect these resistors and manually placed a resistor there, but nothing changed.
I tried a lot of things, that were said in this thread TCAN4550EVM: Problem sending CAN-messages. I tried reverting to the demo code, but still, I go the CAN Silent error and nothing on the CAN bus. I tried a solution that was suggested there to include this code to disable the possibility of the CAN silent error:
AHB_WRITE_32(0x000C, 0xFFFFFF); //delete all interrupt flags
AHB_WRITE_32(0x0830, 0xFFFFFBFF); //disable CANSLNT interrupt
AHB_WRITE_32(0x0820, 0x00100400); //delete CANSLNT interrupt flag
This did remove the CAN Silent flag but I still could not send out anything to the CAN bus. On the thread, Erik said it got better once he fix the AHB_READ_32() function, but I tested that and it is working for me.
Do you have any ideas, on how we can go forward?
(I still have a Vector CAN case on the can bus and the 120-ohm resistor between CANH and CANL)
Keep safe.
Regards,
Josel