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.
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 0x02160801,0x02160802,0x021608003,0x02160804,0x02160805 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 TI’s 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:
Thank you very much.
Vincent Chen