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