Я использую 16-битный MCU PIC24HJ64GP504 для написания приложения на основе CAN.По сути, это связь между моей платой и другим узлом, которая постоянно отправляет данные на мою плату с использованием CAN со скоростью 1 Мбит / с.Я настраиваю модуль ECAN в моем PIC24 для работы на скорости 1 Мбит / с.Я написал код таким образом, что в течение первых 10 мс модуль ECAN будет принимать все сообщения, поступающие с другой стороны, и после этого я перенастроил модуль ECAN для приема только тех сообщений с идентификатором сообщения 0x13.
Теперь возникает проблема ... Другой узел и моя плата включаются одновременно.Другой узел начинает передавать сообщения примерно через 40 мс после включения питания.Но я не могу получить какое-либо сообщение об этом на моей доске.Теперь, если я сначала включу свою плату, дадим ей некоторое время, чтобы перенастроить модуль ECAN с новыми фильтрами и настроить, а затем включить другой узел, тогда все работает отлично.
Теперь самая странная часть ... Если между моей платой и другим узлом подключен анализатор шины CAN, и даже если я включаю оба узла одновременно, все работает нормально ... Нет необходимостичтобы включить мою доску первым.Я пробовал это с тремя различными анализаторами шин от разных производителей и получил те же результаты.
Мне кажется, что при переконфигурации модуля ECAN требуется некоторое время, чтобы успокоиться.А с введением в шину анализатора шины это время как-то сокращается, так что все работает отлично.Но я не уверен, что именно проблема может быть.