Специальный проект AUTOSAR - Практические вопросы: проблемы со сном, вызванные многоканальной конфигурацией CAN

1. Предыстория проблемы

        В предыдущих проектах использовался один канал CAN, в последнее время в связи с изменением топологии автомобиля добавлен новый канал CAN подсети, причем этот канал CAN не поддерживает пробуждение, но требует передачи управления сетью. Сообщения.

       После импорта DBC я запустил векторный инструмент для генерации кода, подошел к плате и увидел, что возникла проблема. Система не находится в спящем режиме, и после прекращения передачи сообщения ток всегда составляет около 300 мА. Что является причиной этого?

2. Место проблемы

        Согласно нашему предыдущему введению в управление режимами, мы знаем, что спящий режим MCU в основном контролируется BswM и EcuM. Прежде всего, необходимо переключить состояние BswM.Согласно спецпроекту AUTOSAR-Анализ состояния BswM, мы знаем, что при нормальной работе BswM находится в состоянии RUN, а для сна ему необходимо перейти из RUN- >POST_RUN->PRE-SHUTDOWN->WAIT_FOR_NVM->SLEEP , наконец, передайте управление EcuM, и EcuM решит войти в режим Go Halt/Poll.

        Очевидно, что система не спит, поэтому начать нам остается только с миграции состояния BswM. Сначала разбейте точку в записи ActionList каждого состояния после RUN, выполните ее за один шаг и, наконец, обнаружите, что BswM не переходит в состояние NormalSleep, как показано ниже:

        Очевидно, что условие if в приведенном выше коде не выполнено, поэтому это

Supongo que te gusta

Origin blog.csdn.net/djkeyzx/article/details/131652713
Recomendado
Clasificación