JAJA859 April 2025 MSPM0G3506 , MSPM0G3507 , MSPM0G3518 , MSPM0G3519
ユーザーは、アプリケーションの要件を満たすために、マイコンを低消費電力モードにする必要があります。ただし、MCAN モジュールは低消費電力モードではディスエーブルになっています。回避方法として、低消費電力モードに移行する前に、ユーザーは MCAN RX ピンを入力ピンとして構成できます。そのピンでエッジ障害割り込みを有効化します。MCAN の RX ピンで 1 つのメッセージが受信されると、マイコンはエッジ障害割り込みによってウェークアップされます。次に、MCAN RX ピンを MCAN 機能として再構成し、MCAN モジュールを再構成します。MCAN は、この方法で通常の機能に復元します。
コード例を以下に示します。
void MCAN_LowPowerMode(void)
{
DL_GPIO_initDigitalInputFeatures(GPIO_MCAN0_IOMUX_CAN_RX,
DL_GPIO_INVERSION_DISABLE, DL_GPIO_RESISTOR_PULL_UP,
DL_GPIO_HYSTERESIS_DISABLE, DL_GPIO_WAKEUP_DISABLE);
DL_GPIO_setLowerPinsPolarity(GPIO_MCAN0_CAN_RX_PORT, DL_GPIO_PIN_13_EDGE_FALL);
DL_GPIO_clearInterruptStatus(GPIO_MCAN0_CAN_RX_PORT, GPIO_MCAN0_CAN_RX_PIN);
DL_GPIO_enableInterrupt(GPIO_MCAN0_CAN_RX_PORT, GPIO_MCAN0_CAN_RX_PIN);
DL_SYSCTL_setPowerPolicySTANDBY0();
__WFI();
DL_SYSCTL_setPowerPolicyRUN0SLEEP0();
DL_GPIO_initPeripheralInputFunction(
GPIO_MCAN0_IOMUX_CAN_RX, GPIO_MCAN0_IOMUX_CAN_RX_FUNC);
MCAN0_Restart();
}
/*MCAN restart function*/
void MCAN0_Restart(void)
{
DL_MCAN_reset(CANFD0);
delay_cycles(16);
DL_MCAN_disablePower(CANFD0);
delay_cycles(32);
DL_MCAN_enablePower(CANFD0);
// MCAN RAM need at least 50us to finish init
// 1600 CPU cycles@CPU32MHz
// 4000 CPU cycles@CPU80MHz
delay_cycles(4000);
SYSCFG_DL_MCAN0_init();
}