Naixrim 0 6 сентября, 2022 Опубликовано 6 сентября, 2022 · Жалоба Добрый день всем! Разбираюсь сейчас с готовым CAN контроллером. Перечитав доки и посмотрев пару лекций на ютубе, остались непонятыми пару моментов. В контроллере есть bit monitoring, что сравнивает бит который отправили с тем что на шине и четкого обьяснения его работы я не нашел (или был невнимателен или не понял). Я предполагал, что условно передатчик отдает на шину фрейм, а приемник его повторяет и идет тем самым проверка о единообразии битов, но теория совсем не бьется с тем как происходит арбитраж на шине и тем, что если устройств будет больше 2х. Если кто может навести на нужные статьи или обьяснить принцип работы bit monitoring (указав, что он берет и с чем сравнивает) я был бы весьма признателен. Также очень приветствую дополнительные доки и спеки по этому вопросу, у самого тоже уже небольшая заначка есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novikovfb 19 6 сентября, 2022 Опубликовано 6 сентября, 2022 · Жалоба Вкратце: Передатчик выдает в шину сигнал, а приемник проверяет соответствие переданного и принятого уровней. В случае расхождения в заголовке передатчик считает, что кто-то более приоритетный ломанулся на шину, и затыкается. Все абоненты слушают шину и, если хоть один понял сообщение, то ставит бит подтверждения (ACK). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Naixrim 0 6 сентября, 2022 Опубликовано 6 сентября, 2022 · Жалоба 2 минуты назад, novikovfb сказал: Вкратце: Передатчик выдает в шину сигнал, а приемник проверяет соответствие переданного и принятого уровней. В случае расхождения в заголовке передатчик считает, что кто-то более приоритетный ломанулся на шину, и затыкается. Все абоненты слушают шину и, если хоть один понял сообщение, то ставит бит подтверждения (ACK). Ну я вроде так и думал, но у меня передатчик на первых же битах ( начиная с SOF ) выдает Bit Error, начинает увеличиватся счетчик ошибок TEC, и он переходит в состояние Active Error. Т.е. как я понял у меня срабатывает bit monitoring в самом передатчике Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_3m 9 6 сентября, 2022 Опубликовано 6 сентября, 2022 · Жалоба 43 минуты назад, Naixrim сказал: Ну я вроде так и думал, но у меня передатчик на первых же битах ( начиная с SOF ) выдает Bit Error, начинает увеличиватся счетчик ошибок TEC, и он переходит в состояние Active Error. Т.е. как я понял у меня срабатывает bit monitoring в самом передатчике Приемник у вас свой сигнал принимает ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Naixrim 0 6 сентября, 2022 Опубликовано 6 сентября, 2022 · Жалоба 2 минуты назад, _3m сказал: Приемник у вас свой сигнал принимает ? Приемник принимает сигнал от передатчика. Два одинаковых контроллера в общей шине. Настроены на нормальный режим. Один передает и один принимает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novikovfb 19 6 сентября, 2022 Опубликовано 6 сентября, 2022 · Жалоба 59 minutes ago, Naixrim said: Ну я вроде так и думал, но у меня передатчик на первых же битах ( начиная с SOF ) выдает Bit Error, начинает увеличиватся счетчик ошибок TEC, и он переходит в состояние Active Error. Т.е. как я понял у меня срабатывает bit monitoring в самом передатчике сравните осциллографом сигнал на входе передатчика и выходе приемника. Должны быть одинаковые с небольшой задержкой Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Naixrim 0 6 сентября, 2022 Опубликовано 6 сентября, 2022 · Жалоба 2 минуты назад, novikovfb сказал: сравните осциллографом сигнал на входе передатчика и выходе приемника. Должны быть одинаковые с небольшой задержкой Они одинаковые но с очень большой задержкой. Может быть 7-8 тактов. Я правильно вас понял, что приемник должен передатчику отдать его же сигнал? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novikovfb 19 6 сентября, 2022 Опубликовано 6 сентября, 2022 · Жалоба 1 minute ago, Naixrim said: Я правильно вас понял, что приемник должен передатчику отдать его же сигнал? да, с учетом разрядки емкости линии терминаторными резисторами (зарядка - доминантный уровень, идет существенно быстрее через открытые ключи передатчика) и задержек в приемнике и передатчике. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Naixrim 0 6 сентября, 2022 Опубликовано 6 сентября, 2022 · Жалоба 16 минут назад, novikovfb сказал: да, с учетом разрядки емкости линии терминаторными резисторами (зарядка - доминантный уровень, идет существенно быстрее через открытые ключи передатчика) и задержек в приемнике и передатчике. Я прошу прощения, до меня долго доходит и я попрошу пару уточнений. Чтобы было понятнее что я имею в виду я прислал картинку. Так вот, передатчик сидит на общей линии через трансивер и TXD линией и RXD линией. Тоже самое и с приемником. Передатчик выдает фрейм данных и как я думаю, он же проверяет свой же сигнал который идет по пути Трансивер -> RXD ? Т.е. участия приемника ( т.е. отдельного устройства или контроллера) здесь не нужно чтобы передатчик сам себя проверил? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 6 сентября, 2022 Опубликовано 6 сентября, 2022 · Жалоба 20 минут назад, Naixrim сказал: Передатчик выдает фрейм данных и как я думаю, он же проверяет свой же сигнал который идет по пути Трансивер -> RXD ? Проверяет не фрейм, проверяет каждый выставленный на шину рецессивный бит. Как только обнаружено несовпадение передаваемого бита с принятым обратно с шины состоянием - генерится состояние коллизии и потери арбитража. Либо генерится состояние ошибки (смотря в какой части кадра произошла эта коллизия). И передатчик отменяет дальнейшую передачу бит кадра. До следующего кадра. Почитайте хоть что-нибудь по теории работы шины CAN. Да хотя бы вики. Ведь инфы в инете вагон. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Naixrim 0 6 сентября, 2022 Опубликовано 6 сентября, 2022 · Жалоба 2 часа назад, jcxz сказал: Проверяет не фрейм, проверяет каждый выставленный на шину рецессивный бит. Как только обнаружено несовпадение передаваемого бита с принятым обратно с шины состоянием - генерится состояние коллизии и потери арбитража. Либо генерится состояние ошибки (смотря в какой части кадра произошла эта коллизия). И передатчик отменяет дальнейшую передачу бит кадра. До следующего кадра. Почитайте хоть что-нибудь по теории работы шины CAN. Да хотя бы вики. Ведь инфы в инете вагон. Как раз насчет почитать по теории работы. Нигде не сказано следующий момент, ни в спеке Боша, ни в спеках кого либо еще. Чей рецессивный бит сверяется? Собственно об этом и есть мой вопрос. ПЕРЕДАТЧИК проверяет сам себя. Т.е. выставляет бит на шину, через трансивер считывает свой же бит и его проверяет или он ждет такого же ответа от ПРИЕМНИКА, который ему зеркалит принятые биты и отправляет обратно передатчику? Прикладываю скрин спецификации, где сказано о том, что передатчик мониторит, но каким образом и от кого (себя или эхо от приемника), не сказано! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 6 сентября, 2022 Опубликовано 6 сентября, 2022 · Жалоба Naixrim, bit monitoring работает почти на всех битах кадра, кроме битов поля арбитража. А всякие эхо-моды, сайлент-моды и т.д. это локальные свистоперделки от вендоров CAN-контроллеров, делаются с целью реализации программистом какого-никакого самоконтроля. Вы, введя свои термины "передатчик" и "приемник", несколько запутали коллег, я думаю Нет на шине никаких передатчиков и приемников. На шине висят равнозначные абоненты. Любой абонент в любой момент времени может попытаться отправить фрейм. Когда шина свободна (контроллер абонента увидел >= 11 рецессивных бит на шине подряд) - осуществляется попытка передачи. Когда фрейм передается (он передается побитно), каждый выставляемый на TXD (а, следовательно, и на саму CAN-шину) бит контролируется CAN-контроллером по RXD. А дальше срабатывает обычная логика - если биты совпадают, то все ок, если нет, то: 1) если это поле арбитража - bit error не выставляется, фреймы ошибок не отправляются, кадры не разрушаются, счетчики ошибок стоят на месте, просто "проигравший" по приоритету ID-сообщения абонент перестанет передавать свои биты и будет лишь дальше слушать линию; 2) если это нифига не поле арбитража, а, например, поле данных - то ахтунг зе бите эррор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Naixrim 0 6 сентября, 2022 Опубликовано 6 сентября, 2022 · Жалоба Я наверное должен пояснить некоторый момент. Я задал здесь вопрос так как после полученной информации я все еще считал, что она не однозначная. И скорее это нужно для подтверждения выводов сделанных на ее основе. Как мне кажется я нашел здесь ответ на свой вопрос. 12 минут назад, Arlleex сказал: Naixrim, bit monitoring работает почти на всех битах кадра, кроме битов поля арбитража. А всякие эхо-моды, сайлент-моды и т.д. это локальные свистоперделки от вендоров, делаются с целью реализации программистом, какого-никакого самоконтроля. Вы, введя свои термины "передатчик" и "приемник", несколько запутали коллег, я думаю Нет на шине никаких передатчиков и приемников. На шине висят равнозначные абоненты. Любой абонент в любой момент времени может попытаться отправить фрейм. Когда шина свободна (контроллер абонента увидел >= 11 рецессивных бит на шине подряд) - осуществляется попытка передачи. Когда фрейм передается (он передается побитно), каждый выставляемый на TXD (а, следовательно, и на саму CAN-шину) бит контролируется CAN-контроллером по RXD. А дальше срабатывает обычная логика - если биты совпадают, то все ок, если нет, то: 1) если это поле арбитража - bit error не выставляется, фреймы ошибок не отправляются, кадры не разрушаются, счетчики ошибок стоят на месте, просто "проигравший" по приоритету ID-сообщения абонент перестанет передавать свои биты и будет лишь дальше слушать линию; 2) если это нифига не поле арбитража, а, например, поле данных - то ахтунг зе бите эррор. Да, именно этого ответа я ждал и шел больше недели! Огромное вам спасибо! Да, согласен, что со своей формулировкой я ввел всех в заблуждение, потому прошу прощения. Моя проблема возникла из-за того, что знакомство с этим я начал с получения на руки только контроллера без физики. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novikovfb 19 7 сентября, 2022 Опубликовано 7 сентября, 2022 · Жалоба 12 hours ago, Arlleex said: Нет на шине никаких передатчиков и приемников. я под передатчиком подразумевал вход TxD выходы CAN_H, CAN_L у CAN_Tranciever (см. схему выше), под приемником - выход RxD у него же. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 7 сентября, 2022 Опубликовано 7 сентября, 2022 · Жалоба 42 минуты назад, novikovfb сказал: я под передатчиком подразумевал вход TxD, ... под приемником - выход RxD у него же. Что не билось с расставленными ролями "передатчик" и "приемник" у ТС. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться