Я использую периферийное устройство bxCAN на STMF3 uC в среде, где
1.) важно, чтобы узел был отключен от сети, как только REC / TEC достигнет уровня предупреждения (ожидание состояния отключения шины не является вариантом)
2.) скорость передачи хост-сети неизвестна
3.) соединение может быть спорадическим, так как узел подключается пользователем.
Из-за 1.) драйвер STM32 HAL CAN используется в режиме IT, и всякий раз, когда вызывается с установленным флагом EWG, обратный вызов ошибки завершает работу трансивера и деинициализирует bxCAN. Если значение REC превышает лимит, его легко восстановить, настроив bxCAN в тихом режиме, предполагая, что по CAN есть трафик. Однако, если TEC превышает лимит, bxCAN не сможет передать другой кадр, так как прерывание из-за ошибки будет немедленно инициировано после включения -> вот и мы в тупике.
Я попытался уменьшить TEC, передавая кадры в бесшумном режиме обратной связи, но, похоже, успешные передачи не влияют на TEC в этом режиме.
Я полагаю, что вопрос не относится к этому периферийному устройству, но действителен для других реализаций CAN.
Любые предложения приветствуются.