FlexCAN bus error handling?

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

FlexCAN bus error handling?

3,051件の閲覧回数
lawsonbob
Contributor I

Are there any examples for S32 Design Studio for handling CAN bus errors using the FlexCAN driver? Our application needs to actively monitor bus warn, passive and bus off conditions. In the case of a bus off condition, we need to periodically reinitialize the FlexCAN hardware.

In flexcan_irq.c, I see that all CAN related interrupts are forwarded to the same interrupt handler:

/* Implementation of CAN0 IRQ handler for OR'ed interrupts (Bus Off,
Transmit Warning, Receive Warning). */
void CAN0_ORed_IRQHandler(void)
{
    FLEXCAN_IRQHandler(0U);
}

/* Implementation of CAN0 IRQ handler for interrupts indicating that errors were
detected on the CAN bus. */
void CAN0_Error_IRQHandler(void)
{
    FLEXCAN_IRQHandler(0U);
}

In FLEXCAN_IRQHandler() in flexcan_driver.c, the interrupt handler processes all normal transmit and receive interrupts then at the bottom of the handler calls:

/* Clear all other interrupts in ERRSTAT register (Error, Busoff, Wakeup) */
FLEXCAN_ClearErrIntStatusFlag(base);

In FLEXCAN_ClearErrIntStatusFlag() in flexcan_hw_access.c, the error interrupt bits are simply cleared with no way of reporting any error status up to the application:

void FLEXCAN_ClearErrIntStatusFlag(CAN_Type * base)
{
    if((base->ESR1 & FLEXCAN_ALL_INT) != 0U)
    {
        (base->ESR1) = FLEXCAN_ALL_INT;
#ifdef ERRATA_E9005
        /* Dummy read as a workaround for errata e9005 to ensure the flags are
        cleared before continuing. */
        (void)(base->ESR1);
#endif
    }
}

Am I missing something? This is my first experience with the FlexCAN driver but at first glance it appears that it has no support at all for CAN bus error detection / recovery.

タグ(4)
0 件の賞賛
返信
2 返答(返信)

2,504件の閲覧回数
jiri_kral
NXP Employee
NXP Employee

Hi, 

what is your S32DS version and which SDK you are using? 

Jiri

0 件の賞賛
返信

2,503件の閲覧回数
lawsonbob
Contributor I

S32 Design Studio for ARM, v2018.R1.180326

S32K146 SDK v0.8.6

0 件の賞賛
返信