Господа, кто с шиной CAN-Bus работает / работал? Вопросик есть. Вот два устройства, которые должны друг с другом общаться, когда они в сеть включены поодиночке, сигнал на линиях данных у них нормальный, у обоих. Интервал времени здесь 50 микросекунд. А когда они в сети одновременно и, по идее, должен идти интенсивный обмен данными, вместо пачек сигналов я наблюдаю редкие пачки (здесь интервал уже 100 МИЛИ секунд, и это не иголки, а пачки импульсов). Вопрос: это нормальное поведение для двух устройств на шине CAN или какой-то из двух контроллеров тупит?
Комментарии: 25
Eduard
на вид вроде норм, кан физически на rs485 похож тут время деления 50 мс тут 100 уже сигнал только шумный какой-то
Sergey
Ну вот когда одно устройство, на 100 мс. никаких одиночных импульсов, сплошной забор.
Eduard
В кане сложная схема общения, там есть арбитраж, хардбиты итд. Может когда устройство одно, оно просто безпрерывно пакеты отправляет.
Sergey
Вот я и интересуюсь, какая нормальная картинка должна быть, когда два устройства в сети. У меня прибор и датчик, прибор не видит показаний от датчика, который должен опрашиваться постоянно. При этом, датчик выдаёт два разных показания от двух разных сенсоров. По идее, обмен данными должен быть достаточно интенсивным, а не вот эта одна посылка за полгода.. Сложность в том, что взять заведомо исправный датчик, что бы посмотреть, как оно, когда всё в порядке, неоткуда, приходится надеяться на помощь зала :) Не страшно. LVDS же. Всё равно дифсигнал считается.
Yan
Там вариантов недофига - защитные диоды (если они есть), терминирующие резисторы или сами CAN-трансиверы. Как вариант на одном из девайсов неверный node ID, но это маловероятно. Осциллограмму на шине никогда не смотрел)
Sergey
Ну, у меня варианты сокращаются до контроллеров can. Диоды отсутствуют, терминация в порядке. Осциллограмму я смотрел только на одном работающем устройстве. Поэтому, когда устройств оказалось два, сразу появились вопросы :) Процедуры сопряжения устройств в сети по ID не существует (это разновидность can-bus, сеть SeaTalk), так что, все устройства должны воспринимать всех соседей по умолчанию.
Anatoliy
А почему одна линия, когда соединены?
Eugene
А картинка, где пакеты шлются не непрерывно, это когда подключены те самые два устройства, которые надо подружить? Где линия? В шине CAN при отсутствии передачи обе линии примерно 2,5В.
Anatoliy
На верхних картинках две линии, can-h и can-l. А на нижней, где якобы сопрядены устройства линия одна...
Sergey
Да, именно. Первые две картинки, когда устройства включены в сеть поодиночке у меня вопросов не вызывают.
Eugene
При передаче доминантного уровня линии из 2,5В разбегаются. Одна вверх, другая вниз. Вот мы и видим на одной картинке кратковременные пики, а потом паузы, а на другой - постоянные попытки отправить, которые не подтверждаются никем, поэтому повторяются.
Anatoliy
Или там два канала совмещены?
Sergey
Возможно, "нулевые" уровни обоих каналов подтягиваются к одному значению, одним или двумя устройствами. Так там те же два канала что и на первых скринах.
Anatoliy
Там ноль-это 2,5 вольт...верхние картинки похожи на правду. А вот нижняя...чейта они совместились?
Anonim
Всё что встречаю, это DMA + SPI, DMA + USART. Разбираюсь..
Sergey
Вот и я думаю, чой-та. Решил спросить у знающих людей, вдруг это нормально..
Anatoliy
Должно быть как наверху. Один пляшет 2,5-5, другой 2,5-0 зеркально
Eugene
Что не так, не понимаю... Всё логично вроде. О какой картинке речь? Недавно я узнал, что пляшут они от 2,5В вовсе не до 5 и 0, а меньше. :) Если не путаю, прыгают они на 1В в сторону от середины.
Anatoliy
Ну это тонкости, навернякак там пороговое значение для фиксации имеется.
Eugene
Кстати, есть драйверы шины CAN с питанием 3,3В, они от 2,5В прыгают вверх до 3,3В, больше не могут.
Anatoliy
Вот эта картинка почему так?
Sergey
На осциллограмме не совсем реальные значения напряжений, я графики чуть подвинул, для наглядности. Так что, на вольтаж не смотрим :)
Eugene
Ну тут всё в порядке. Отправляется пакет раз в 100мс. Приемник подтверждает, что пакет его устроил. Передатчик успокаивается. А вот если приемника нет ни одного, никто не подтверждает успешный прием пакета, тогда при включенном автоповторе отправитель снова шлет пакет. И так до морковкиного...