您好!
CAN_SLEEP 功能成功地将 CAN 模块置于睡眠状态(时钟停止模式)。 CAN_WAKEUP 功能将成功唤醒 CAN 模块。 稍后查看这两个函数的内容。 MCANSS_CTRL.AUTOWAKEUP 位和 MCANSS_CTRL.WAKEUPREQEN 位已配置为启用。 但当 CAN_RX 引脚被下拉时、模块不能自动唤醒。 CCCR.INIT 位和 CCCR.CSA 位始终为1、即使 CAN_RX 引脚被下拉超过1微秒也是如此。
void CAN_SLEEP (void)
{
DL_MCAN_addClockStopRequest (CANFD0、TRUE);
while (DL_MCAN_OPERAT_MODE_SW_INIT!= DL_MCAN_getOpMode (CANFD0));
}
void CAN_WAKEUP (void)
{
if (DL_MCAN_getClkStopAck (CANFD0))
{
DL_MCAN_enableModuleClock (CANFD0);
DL_MCAN_addClockStopRequest (CANFD0、false);
DL_MCAN_setOpMode (CANFD0、DL_MCAN_OPERAING_MODE_NORMAL);
while (DL_MCAN_OPERAT_MODE_NORMAL!= DL_MCAN_getOpMode (CANFD0));
}
}
此致、
Jason