FLEXCAN can not resume transmission if TXMB is BUSY

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

FLEXCAN can not resume transmission if TXMB is BUSY

328 Views
emb02
Contributor IV

Hi,

I'm testing S32K144 FLEXCAN in which FLEXCAN is not resuming transmission if TXMB is busy for long period.

I'm sending multiple message frames using RTOS in different time intervals. After some time (not fixed) TXMB remains BUSY for all time and hence FLEXCAN won't send any frames further. 

I'm also monitoring the IMASK register to check MB interrupt. I observed the state of last message before transmission has been halted in which TXMB state is BUSY, and buffer interrupt is Enabled.

Interrupt must be generated after that and it should clear MB interrupt and then change TXMB state to IDLE by completing transfer as defined in IRQ Handler.

FLEXCAN_IRQHandler() 

{

FLEXCAN_ClearMsgBuffIntStatusFlag(base, mb_idx);

if (state->mbs[mb_idx].state == FLEXCAN_MB_IDLE)
{
/* Complete transmit data */
FLEXCAN_CompleteTransfer(instance, mb_idx);
}

}

But in my case interrupt is not generated and hence TXMB state remains BUSY always.


How to resume the transmission after this?

I'm using S32DSv3.5 platform and S32K144_SDK_4.0.1.

I'm attaching my test project. Guide me with this.

 

Tags (2)
0 Kudos
1 Reply

278 Views
PetrS
NXP TechSupport
NXP TechSupport

Hi,

so can you check what is MB status in IMASK1, IFLAG1, state->mbs[mb_idx].state and MB CODE field when the issue happens?
Generally, do a calling of Abort function clear BUSY condition?

BR, Petr

0 Kudos