This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TCAN4550: Can not Receive CAN-FD Frames with 8Mbit/s

Part Number: TCAN4550

Hi,

I'm developing with the TCAN4550 and I was testing the device with different bitrates.

Now I have problems with a communication @ 8Mbit/s (Dataphase). So if I send a frame from the TCAN4550 to another CAN-node, everything is fine. But if I want to receive a Frame with the TCAN4550 with a bitrate of 8Mbits, I get error frames.  I'm working with 1Mbit/s in the Nominal-Bitrate.

Sometimes a message is passing trough perfectly, but I'm alo getting a lots of error Frames, the Protocol-Register says, there is sometimes a problem with the arbitrition-phase sometimes with the dataphase.

So, I think it has to be a problem with the bit timing. But I stillt didn't not figured out the problem.

The TCAN4550 in my case hs an external 40Mhz Ocillator.

With 8Mbit (Data Bit Timing) I'm writing to the Data Bit Timing & Prescaler Register (0x100C) :  0x800111

Nominal Bit Timing & Prescaler Register (0x101C) : 0x02040401

Transmitter Delay Comp. Offset Register (0x1048): 0x400

With other Bitrates at the dataphase the communication works fine. (@ 5Mbits, 2Mbits, 1Mbits).

Does anyone have any idea why the communication might not work?

Thanks for your replay.

Best Regards,

Philipp

  • Hello Philipp,

    These types of problems generally come down to incorrect bit timing settings or signal integrity problems from reflections and poor signal quality on the CAN FD bus itself.  However, these two are not mutually exclusive and adjustments to either could improve the communication.

    If you have the ability to monitor the CANH and CANL waveforms with a scope, it will help determine if there is a reflection that is occurring in the bit period that needs to be avoided by adjusting the sample point (usually later) in the bit period in order to avoid an incorrect data sample that will result in an error.

    Thanks for the register descriptions.  With a 40MHz clock, you will have 5 time quanta (TQ) to work with during the data phase.  If I have decoded your register settings correctly, you have set both the DTSEG1 and DTSEG2 to 1 (which is interpreted as 2).  There is 1 TQ needed for the SYNC before the DTSEG1 which gives you 3 TQ before the sample point, and 2 TQ after.  This is a 60% sample point within the bit period and it may be susceptible to errors because it has not allowed enough time for any reflections to subside prior to sampling the bit.  I would suggest shifting the sample point by 1TQ and make the DTSEG1 = 2 (interpreted as 3) and the DTSEG2 = 0 (interpreted as 1).  This moves the sample point to the last possible location within the bit period, but it gives the maximum amount of time for the reflections to subside.

    If you are having issues with the arbitration phase, then similar adjustments can be made to the Nominal Bit Timing & Prescaler register.  Once again, if I have decoded your register settings correctly, it appears you are using a prescaler of 5, that will give you an effective clock rate of 8Mhz and 8 TQ per bit at a rate of 1Mbps.  And you have set it so that the NTSEG1 is 4 (interpreted as 5) and NTSEG2 is 1 (interpreted as 2).  This gives you a 75% sample point within the bit that should be OK.  If you need to make adjustments to this, you might consider reducing the prescaler so that you have more TQ to work with allowing a finer adjustment to be made.

    The Transmitter Delay Compensation Register is important for allowing high data rates to work by setting a secondary sample point.  This may be a value that you need to try several values to determine if there is an optimal value.  Different systems have different wiring harness lengths and may contain different types of transceivers with different loop delay times.  Therefore, one value of this register may not work for all systems and I would suggest you try sweeping through different values to determine if an optimum value can be found.  I have personally used a setting of 4 (just like you) in my 8Mbps communication tests, but I did sweep through many values in order to determine this was my optimal value for the system I was testing.

    If these suggestions do not improve your communication, we may need to look at the signal integrity and determine if there are any improvements that can be made in the hardware.

    Regards,

    Jonathan

  • Hi Jonathan,

    thanks you your reply.

    I tried today to fix these problem bus I had no success.

    So I tried the bittiming configuration for the 8Mbit Dataphase as you suggested, but I still have some errors.

    I'm working with the following setup: My Hardware has two TCAN4550 Controllers,

    With a bus with about 2m of length I have connected two PEAK-CAN USB- Adapters.

    One of these peak-can tries to send a short CAN-FD message (DLC=1, Data= 0x55, Id =0x123) @ 8Mbits. This is a very shortmessage I think, I would expect, this should be tranmitted easy.

    But I get still sometimes ACK-Delimiter-errors or CRC-Form-errors. These type of error is simliar to the output of one of the PEAK-CAN-Adapters or the Protocol-Status-Register (0x1044). In the PSR-Register, the error is classified as a dataphase-error. The hardware was designed according to the layout example of the data sheet.

    The value for Transmitter-Delay-Compensation-Offset, I also adjusted several times, but the best result I always get with the value of 4.

    With a scope, I can't figure out any signal problem of the CAN-Frame.

    If I remove the TCAN4550 from the bus-setup described above, the communication works fine. As already mentioned, the problem is only on receive frames. The TCAN4550 can send CAN-FD-Frames with 8Mbits without any problems.

  • Hi Philipp,

    It sounds like we need to do some additional debug to determine the source of the problem.

    Can you provide the values of the status registers so that I can see what bits are being set?  I am interested in the following registers 0x0820, 0x0824 0x1040, 0x1044, and 0x1050.

    Do both TCAN4550-Q1 devices report the same values, or are they different?  Is one more problematic than the other one?  Do the values change when you swap the location of the TCAN4550-Q1 on the bus?  I'm curious if there is a difference in performance between the two boards, or if there is a performance difference based on the location of the board along the wiring harness.  Trying different combinations can help expose these differences.

    Where is the termination on the bus located?  Is it directly on the wiring harness?  Is is included in your PEAK-CAN-USB Adapters?  Is it on your TCAN4550-Q1 boards? Or is it on everything or nothing?  There should only be 2 sets of termination resistors, preferably at the ends of the wiring harness per the specification.  I'm wondering if there are more than 2 sets of termination resistors, or perhaps not enough termination that may be resulting in problems.

    Can a single TCAN4550-Q1 and a single PEAK-CAN-USB adapter communicate without error, both TX and RX?  Can the two TCAN4550-Q1 boards communicate with each other without error when the PEAK-CAN-USB adapters are not connected to the bus?  I am wondering if there is some issue with the two different type of devices communicating together and if the TCAN4550-Q1 can receive messages from the other TCAN4550-Q1, but not the PEAK-CAN-USB adapter.  This might point to some clock frequency tolerance, or difference, and or some other difference between the two types of nodes that is a hardware issue.

    Can you provide schematics of your TCAN4550-Q1 boards and some scope shots of the waveforms both transmitted and received by the TCAN4550-Q1 having issues?    If you are not comfortable sharing this information on the forum, let me know and I can reach out to you via email so that you can send those privately for my review.

    Regards,

    Jonathan

  • Hi Jonathan,

    thank you for your detailed reply.

    I will review the points mentioned next week as I am currently working on a different topic.

    Unitl now I can say, a communication with only one PEAK-CAN and a TCAN4550 @8Mbits is only possible in TX (from TCAN4550 to the PEAK-CAN). After a view successful received CAN Messages, I'm getting a CRC or an ACK-Delimiter Error.

    The Termination is at both ends of the Bus, with each 100 Ohm Resistor.

    I will also send you next week some pictures via mail of the design and the schematic of the TCAN4550.

    Regards, Philipp

  • Hi Philipp,

    I will follow up with an email to the address in your profile which you can reply to with any additional information.

    I also noticed that you may need to change the termination resistors to 120 Ohms.  I'm not sure what type of wire you are using, or it's impedance, but the CAN standard specifies a 120 Ohm system and the transceivers are designed to support a nominal load of 60 Ohms (two 120 Ohms in parallel).  A stronger load will reduce amplitudes and any margin in the system that can result in bit errors. Since you are trying to operate at 8Mbps, you will need as much margin as possible.  This might be something easy to try and see if you have any performance improvement.

    I also wanted to check with you about performance results at other data rates to help narrow down the cause of the errors.  Have you tried operation at 5Mbps?  If so was it error free and you are only receiving errors at 8Mbps?

    Regards,

    Jonathan