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.

Getting the CAN Interrupt on the Vision Mid AVSDK(sys/bios) Platform?

Other Parts Discussed in Thread: HALCOGEN

I am implementing the DCAN on the AVSDK & VisionMid(TI8148).

In the TMS570(use the HALCoGen),  I can be obtained the Interrupt from the VIM(Vectored Interrupt Manager Module).

As follows:

24.2 Device Level Interrupt Management of TMS570_TRM.PDF

==============================

[sys_startup.c]

typedef volatile struct vimRam
{
t_isrFuncPTR ISR[VIM_CHANNELS];
} vimRAM_t;

#define vimRAM ((vimRAM_t *)0xFFF82000U)

static const t_isrFuncPTR s_vim_init[] =
{
...
can1HighLevelInterrupt,
...
can1LowLevelInterrupt,
...
};
---------------------------------------- 
    /* enable interrupts */
vimREG->REQMASKSET0 = 1U
...
| (1U << 16)
...
| (1U << 29)
...;

----------------------------------------

[dcan.c]

#pragma INTERRUPT(can1HighLevelInterrupt, IRQ)

void can1HighLevelInterrupt(void)
{
unsigned value = canREG1->INT;
...
if (value == 0x8000U)
{
canErrorNotification(canREG1, canREG1->ES & 0xE0U);
return;
}
...
}

#pragma INTERRUPT(can1LowLevelInterrupt, IRQ)

void can1LowLevelInterrupt(void)
{
unsigned messageBox = canREG1->INT >> 16U;
...
}
---------------------------------------- 
[*.dil]
DRIVER.SYSTEM.VAR.VIM_CHANNEL_16_NAME.VALUE=can1HighLevelInterrupt
DRIVER.SYSTEM.VAR.VIM_CHANNEL_29_NAME.VALUE=can1LowLevelInterrupt
==============================

but,

In the VisionMid(TI8148), There is no explanation even in DM814x_TRM.PDF.

I don't have the foggiest idea what to the CAN Interrupt processing on the AVSDK.

Could you please help me the way?