Busoff interrupt lost when S32K118 at high load

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Busoff interrupt lost when S32K118 at high load

1,188 Views
chenwilsoft
Contributor II

The test case is shorting CANH & CANL repeatedly.

If the load of S32K118 is low, the recovery strategy works fine.

Step1. Busoff raised interrupt & set a flag. Step2. In the main loop, if the flag is set, DeInit & Init CAN. Step 3. wait 100ms. Step 4. Send a frame of data. Step 5. Busoff raised again.

But when the load is high ( ADC interrupt raised every 10ms ), there is a different symptom that occurs in a very low probability. The beginning 4 steps are the same. 

Step1. Busoff raised interrupt & set a flag. Step2. In the main loop, if the flag is set, DeInit & Init CAN. Step 3. wait 100ms. Step 4. Send a frame of data.

But in step 5, Busoff interrupt is not raised. Instead, Busoff Done Int ( Bit 19 of ESR1) is set and FLTCONF of ESR1 changed from 0x00 to 0x11, which means busoff status.

I don't know why the status of CAN has been changed to BusOff. But the BufOff Int Flag ( bit 2 of ESR1 ) is not set. Instead, Busoff Done Int is set.

0 Kudos
Reply
2 Replies

1,148 Views
chenwilsoft
Contributor II

The version of IDE is S32DS 2008 R1,update11, using SDK version 3.0.0.

The callback function judges the flag of ESR1 and sets a variable to 1. In the main loop, judge the variable. If it becomes 1, trigger functions and reset the variable to 0.

Increasing the priority of FlexCAN is under testing.

0 Kudos
Reply

1,165 Views
PetrS
NXP TechSupport
NXP TechSupport

Hi,

could you please specify the code/driver you are using and its version (SDK, RTD,...)?
If using SDK/RTD do you use callbacks to indicate ISR hit?
How do you check flag setting in the main?
If you increase priority of FlexCAN interrupts, do you see the same?

BR, Petr

0 Kudos
Reply