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