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.

TCAN4551-Q1: Error in data transmission

Part Number: TCAN4551-Q1

Hi Team,

My customer is testing CANBUS transmission function and find a issue as below.

Sending out a series of  continuous CAN ID per 20mS, sometimes one of CAN IDs goes wrong and this CAN ID data is same as previous one. 

EX : customer send out 0x021608010x021608020x0216080030x021608040x02160805 by SPI but capture CANBUS data then the date becomes 0x02160801,0x02160802,0x021608003,0x02160803,0x02160805。

Customer use SPI "TCAN4x5x_MCAN_WriteTXBuffer()" send correct CAN ID but the data in CANBUS is wrong like below.

(left side is log data, right side is CANBUS data captured at CANBUS differential line)

Cound team provide command and any experiment we can try?

Thanks a lot.

Vincent Chent

  • Vincent,

    Is it possible to capture the CAN bus waveforms when they are correct vs. not correct? And can the interrupt register (0x0820) be read before and after a transmission?

    Regards,

    Eric Hackett 

  • Hi Eric,

    Since it is a sequence of data transmission, customer is hard to capture the wrong one of the waveforms. We will continue to try it.

    And there are two more questions.

    1. Will there be a pin level change to notify MCU when tcan4551 receives data ?

    We currently follow TIs DEMO using polling registers to check for new data, but this takes up too much CPU time.

    2. Does tcan4551 have a hardware bus off auto recovery feature? How to enable it?

    Thanks a lot.

    Vincent Chen

  • Vincent,

    Understood, let me know if the customer can read off the interrupt register as well.

    1. Yes, the user can assign GPO1 or GPO2 as an MCAN interrupt to toggle when a message is received. There are a few steps to this, let's take the example of using GPO1. In register 0x0800, bits 11:10 can be written to configure how the GPO1 works. Writing a 01 to these bits configures the GPO1 pin to be the MCAN_INT 1 output. Once this is configured, the user then needs to assign which interrupt is going to be MCAN_INT1. This is done by writing to register 0x1058. By writing a 1 to any of the bits in this register, the user is assigning which interrupt will be output as MCAN_INT1. The interrupts for new message in FIFO, full FIFO, watermark reached, etc. are in this register, so for this particular case the user would likely want to assign the new message interrupt to MCAN_INT1. Once this is done, the user will then need to enable MCAN_INT1 by writing a 1 to bit 1 in register 0x105C.

    2. As part of the Bosch MCAN definition, this is always on and always enabled. The status of this can be checked using the Protocol Status Register 0x1044 and looking at the LEC bits. The Bit0error is indicative of 11 recessive bits being sent during the bus off auto recovery feature.

    Regards,

    Eric Hackett 

  • Hi Eric,

    Customer has some progress on using this device and has few questions as following, could you please help comment it?

    My device is now in bus-off status and we would like to consult the following questions:

    1. Does the TCAN4551's bus-off auto-recovery feature recover itself after entering bus-off, or it require the user's mcu to clear cccr.init to trigger the auto-recovery feature?
    2. What are the complete steps for tcan4551 to recover from the bus-off state? Is there any sample code for reference ?
    3. I have assigned the new message interrupt of rx fifo0 to line int1, if I assign the interrupt of bus-off to it as well, how do I know which interrupt it is when I receive it? Querying register 1050?
    4. What does the 25bit (bus-off status change/unchanged) in register 1050 mean ? busoff->normal and normal -> busoff are both means change?

    Thank you very much.

    Vincent Chen