FLEXCAN can not resume transmission if TXMB is BUSY

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

FLEXCAN can not resume transmission if TXMB is BUSY

433 次查看
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.

 

标记 (2)
0 项奖励
回复
1 回复

383 次查看
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 项奖励
回复