Description
Source
Call Graph
Start Line: 820
void CAN_disable(void)
{
// Disable the interrupt on the interrupt controller
AIC_DisableIT(AT91C_ID_CAN0);
// disable all IT
AT91C_BASE_CAN0->CAN_IDR = 0x1FFFFFFF;
#if defined AT91C_BASE_CAN1
AIC_DisableIT(AT91C_ID_CAN1);
// disable all IT
AT91C_BASE_CAN1->CAN_IDR = 0x1FFFFFFF;
#endif
// Enable Low Power mode
AT91C_BASE_CAN0->CAN_MR |= AT91C_CAN_LPM;
// Disable CANs Transceivers
// Enter standby mode
PIO_Set(&pin_can_transceiver_rs);
#if defined (PIN_CAN_TRANSCEIVER_RXEN)
// Enable ultra Low Power mode
PIO_Clear(&pin_can_transceiver_rxen);
#endif
// Disable clock for CAN PIO
#if defined(AT91C_ID_PIOA)
AT91C_BASE_PMC->PMC_PCDR = (1 << AT91C_ID_PIOA);
#elif defined(AT91C_ID_PIOABCD)
AT91C_BASE_PMC->PMC_PCDR = (1 << AT91C_ID_PIOABCD);
#elif defined(AT91C_ID_PIOABCDE)
AT91C_BASE_PMC->PMC_PCDR = (1 << AT91C_ID_PIOABCDE);
#endif
// Disable the CAN0 controller peripheral clock
AT91C_BASE_PMC->PMC_PCDR = (1 << AT91C_ID_CAN0);
}