Страница 1 из 1

Про CAN-шину

Добавлено: Пт янв 21, 2022 13:03:27
PenguinChik
Допустим у нас в устройстве есть несколько блоков управления. Они связаны между собой - CAN-шиной. К блокам управления подключены различные датчики. Блоки управления их постоянно опрашивают. И блоки управления постоянно шлют друг другу информацию о данных с датчиков. Допустим у нас пришла информация о температуре. В двоичном коде это пусть будет 1011. Пока эти данные передаются из одного блока управления в остальные блоки, у нас ничего больше между остальными блоками передаваться не будет? Получается, пока у нас один блок передает информацию, остальные молчат?

Re: Про CAN-шину

Добавлено: Пт янв 21, 2022 13:19:36
korob
В CAN-шине присутствует арбитраж доступа, который как раз и занимается подобными ситуациями.

Re: Про CAN-шину

Добавлено: Пт янв 21, 2022 14:44:50
PenguinChik
А почему у нас CANH соединен с передатчиком, а CANL с приемником ? Получается у нас осуществляется передача и прием сигналов одновременно? И уже по разнице этих сигналов получается результирующий сигнал?

Re: Про CAN-шину

Добавлено: Пт янв 21, 2022 14:54:27
mickbell
Чо??? Как это? На рисунке видно, что обе линии - и CANH, и CANL - подключены ко всему. Передача осуществляется дифференциально, то есть задействованы обе линии одновременно.

Re: Про CAN-шину

Добавлено: Пт янв 21, 2022 17:42:45
Express
Схерали, про захват линии по приоритетам не слышали чоли?

Re: Про CAN-шину

Добавлено: Пт янв 21, 2022 18:00:12
electroget
[uquote="PenguinChik",url="/forum/viewtopic.php?p=4165167#p4165167"]А почему у нас CANH соединен с передатчиком, а CANL с приемником ?[/uquote]

Потому что это диффиренциальный интерфейс. Сигналы в линиях зеркальны относительно друг друга.

Re: Про CAN-шину

Добавлено: Вс янв 23, 2022 19:50:08
YS
Пока эти данные передаются из одного блока управления в остальные блоки, у нас ничего больше между остальными блоками передаваться не будет? Получается, пока у нас один блок передает информацию, остальные молчат?
Да. Пока идет передача одного кадра, больше никто передавать по шине не может. Но зато все, кто хочет, могут принять передаваемые данные.

Кто будет передавать следующим, определяется по результатам арбитража, который происходит каждый раз, когда два устройства (или большее количество) пытаются начать передавать одновременно. Устройство с более высоким приоритетом захватывает шину и передает, устройство с более низким приоритетом ждет, пока шина освободится, и пробует снова.

Re: Про CAN-шину

Добавлено: Вс янв 23, 2022 23:56:22
Eddy_Em
[uquote="YS",url="/forum/viewtopic.php?p=4166609#p4166609"]Устройство с более высоким приоритетом захватывает шину и передает[/uquote]
В нормальном CAN нет приоритетов. Там все определяется последовательностью битов. У кого будет первый доминантный бит, тот и "победил".

Re: Про CAN-шину

Добавлено: Пн янв 24, 2022 20:37:36
YS
У кого будет первый доминантный бит, тот и "победил".
Ага, именно так.

А теперь представьте себе, как это будет работать с учетом того, что адреса двоичные.

Внезапно, побеждать будет стабильно устройство с численно меньшим адресом.

Re: Про CAN-шину

Добавлено: Пн янв 24, 2022 20:43:41
Eddy_Em
YS, правильно. Только приоритета никакого нет. Это — просто приятная особенность нижнего уровня протокола.

Re: Про CAN-шину

Добавлено: Пн янв 24, 2022 20:45:48
YS
Ну, как хотите. Так или иначе, чем меньше адрес устройства в численном представлении, тем больше у него шансов передать сообщение первым. Механизм арбитража был специально спроектирован таким образом, что де-факто дает приоритезацию адресов.