Коллеги, снова всех приветствую! Очередной вопрос по интерфейсу CAN.
Устройство отправляет пакеты раз в 500 мс, все стабильно. Как только устройство попадает в нагруженную сеть, то пакеты начинают пропадать. Приходят то раз в секунду, то раз в полторы-две. Я понимаю, что шина может быть занята в момент отправки, но разве CAN не так устроен, что при недоступной шине процесс передачи будет повторен?
Очень похоже, что выставлен бит NART.
NART (No automatic retransmission): Normally, CAN hardware retries to transmit a message if its previous attempts fail, because of arbitration lost etc. But if you make this bit 1, the transmitter does not retry. This is required when you use Time Triggered Communication (TTCAN). Otherwise, you should keep this bit 0.
Если используется CubeMx, то не включено:
@aveal действительно, это решило проблему! Просто огромная благодарность!!! Странно, что нигде явно не указано об этой настройке в STM32CubeMx.
Еще более странно, что они внезапно в Cube сделали NART по умолчанию включенным.