adnega 11 3 июня, 2019 Опубликовано 3 июня, 2019 · Жалоба А длина шины какая? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 3 июня, 2019 Опубликовано 3 июня, 2019 · Жалоба 1 hour ago, adnega said: А длина шины какая? все три находяться рядом в одной коробке. растояние 10 сантиметров друг от друга. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 3 июня, 2019 Опубликовано 3 июня, 2019 · Жалоба 3 минуты назад, jenya7 сказал: все три находяться рядом в одной коробке. растояние 10 сантиметров друг от друга. Тогда задержка линии у вас небольшая. Можно считать, что каждые 10 метров кабеля вносят задержу в 50 нс. Дык, получилось изменить точку сэмплирования? Заработало? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 3 июня, 2019 Опубликовано 3 июня, 2019 · Жалоба 1 hour ago, adnega said: Тогда задержка линии у вас небольшая. Можно считать, что каждые 10 метров кабеля вносят задержу в 50 нс. Дык, получилось изменить точку сэмплирования? Заработало? не могу пока проверить. нет доступа к системе. интересно а этим инструментом можно пользоваться? он мне генерирует такую таблицу Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 3 июня, 2019 Опубликовано 3 июня, 2019 · Жалоба 3 minutes ago, jenya7 said: интересно а этим инструментом можно пользоваться? Если у вас по шине хоть один раз приняло , то задержками можно не баловаться. Точно не в них дело CAN - железобетонная шина. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 3 июня, 2019 Опубликовано 3 июня, 2019 (изменено) · Жалоба 1 hour ago, AlexandrY said: Если у вас по шине хоть один раз приняло , то задержками можно не баловаться. Точно не в них дело CAN - железобетонная шина. ну я попробую глубже копнуть в коде. я тоже склонен доверять шине. все таки в машинах используется. Изменено 3 июня, 2019 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 3 июня, 2019 Опубликовано 3 июня, 2019 · Жалоба 13 минут назад, AlexandrY сказал: Если у вас по шине хоть один раз приняло , то задержками можно не баловаться. Точно не в них дело CAN - железобетонная шина. Я недавно плотно разбирался с CAN на высокой скорости и приличной дистанции. Термин "хоть один раз приняло" не работает в отношении CAN, т.к. там есть состояния активной и пассивной ошибки и т.п. Весь отчет выложить не могу, но вот кусочек: Цитата Качественно оценить работоспособность шины можно наблюдая бит подтверждения (ACK) от принимающих узлов при помощи осциллографа. На Рис. 2 представлена корректная передача пакета. В конце каждого пакета будет доминантное состояние шины длительностью 1 мкс. Зачастую уровни сигнала передачи и подтверждения имеют разную амплитуду и хорошо различимы. Если нет ни одного принимающего узла, то бита подтверждения может не быть. Все узлы сети должны формировать бит подтверждения, даже если пакет в последствии будет проигнорирован. Фаза подтверждения состоит из одного доминантного бита (ACK Slot) и одного рецессивного бита (ACK Delimiter). Вопросы согласования линии не обсуждаются, т.к. согласование должно быть выполнено. Как правило несогласованная и ненагруженная терминаторами линия не будет работать в принципе. В обсуждаемом случае имеем следующую картину в районе бита подтверждения (см. Рис. 3). Синий овал выделяет бит подтверждения от принимающего узла, но по какой-то причине в момент 1 передающий узел выставляет 6 доминантных бит - активная сигнализация об ошибке (до момента 4). В момент 2 принимающий узел снимает бит подтверждения и выставляет рецессивный бит разделителя, но считывает доминантное состояние, которое приводит к формированию активной ошибки в виде 6 доминантных бит, но уже приемником от момента 3 до момента 5. Такой пакет считается ошибочным как на стороне передатчика, так и на стороне приемника. Передача с ошибкой увеличивает у передатчика счетчик ошибок передачи на 8. После 16 ошибочных передач счетчик достигнет значения 128, и формирование активной ошибки передатчиком будет запрещено. Осциллограмма станет похожей на исправную работу (см. Рис. 2). Но при этом передатчик продолжит воспринимать ошибку, продолжит увеличивать счетчик, но будет формировать уже пассивную ошибку, которую на осциллограмме не будет видно. После 16 ошибочных передач с пассивной ошибкой счетчик ошибок передачи переполнится и произойдет отключение от шины (bus off). После восстановления передатчика (128 появлений 11 рецессивных бит на шине) счетчики будут обнулены и передатчик опять начнет сигнализировать об ошибках, выставляя активную ошибку. То есть будет наблюдаться чередование 16 пакетов как на Рис. 3 и 16 пакетов как на Рис. 2. Дальнейшие выкладки применимы только для подобного характера обмена (периодическое появление 6 доминантных бит в районе бита подтверждения по инициативе передатчика). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 3 июня, 2019 Опубликовано 3 июня, 2019 · Жалоба 1 hour ago, adnega said: Я недавно плотно разбирался с CAN на высокой скорости и приличной дистанции. Термин "хоть один раз приняло" не работает в отношении CAN, т.к. там есть состояния активной и пассивной ошибки и т.п. Весь отчет выложить не могу, но вот кусочек: я не совсем понял - терминаторы надо ставить с двух концов? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 3 июня, 2019 Опубликовано 3 июня, 2019 · Жалоба Только что, jenya7 сказал: я не совсем понял - терминаторы надо ставить с двух концов? Да, каждый из двух конецов шины должен быть терминирован. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 3 июня, 2019 Опубликовано 3 июня, 2019 · Жалоба 1 hour ago, adnega said: Да, каждый из двух конецов шины должен быть терминирован. ой. я только с одного конца резистор поставил. оба по 120 ом должны быть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 3 июня, 2019 Опубликовано 3 июня, 2019 · Жалоба 27 минут назад, jenya7 сказал: ой. я только с одного конца резистор поставил. оба по 120 ом должны быть? В тривиальном случае - да. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 3 июня, 2019 Опубликовано 3 июня, 2019 · Жалоба 1 hour ago, adnega said: В тривиальном случае - да. спасибо. сделаю все изменения, включая временные параметры, расскажу о результатах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 5 июня, 2019 Опубликовано 5 июня, 2019 · Жалоба Для проверки я бы оставил на шине 1 мастер и 1 слейв, кабель (для проверки) увеличил хотябы на несколько метров + 2 терминатора на 120 Ом. В первую очередь убедитесь в исправности всех трансиверов. Там есть одна "провокация", что даже с "подпаленным" трансивером обмен может или вообще работать без ошибок, или давать сбои, но продолжать работать. Еще одна "провокация" это (если есть на трансивере ) вход и подключенный резистор Rs. При его большом значении может "дохнуть" обмен на высоких скоростях. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 10 июня, 2019 Опубликовано 10 июня, 2019 · Жалоба Зная остальные темы jenya7, необходимо предполагать наиболее дурацкую ошибку. И, кончено же, она есть: CAN_InitStructure.CAN_NART = ENABLE; //ENABLE DISABLE NO AUTOMATIC RETRANSMITTION Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 11 июня, 2019 Опубликовано 11 июня, 2019 (изменено) · Жалоба 19 hours ago, esaulenka said: Зная остальные темы jenya7, необходимо предполагать наиболее дурацкую ошибку. И, кончено же, она есть: CAN_InitStructure.CAN_NART = ENABLE; //ENABLE DISABLE NO AUTOMATIC RETRANSMITTION это не ошибка. при AUTOMATIC RETRANSMITTION у меня шина засирается нипадецки. кстати. сейчас заметил. FIFO то может содержать до трех мэйлбоксов. то есть мне надо считать сколько мэйлбоксов pending в FIFO и считать их всех. void USB_LP_CAN1_RX0_IRQHandler(void) { if(CAN_GetITStatus(CAN1, CAN_IT_FMP0) == SET) { msg_count = CAN_MessagePending(CAN1, CAN_FIFO0); for (int i = 0; i < msg_count; i++) { CAN_Receive(CAN1, CAN_FIFO0, &RxMessage[i]); } } } сейчас получается я читаю один получается я могу ускорить посылку мастера слейвам. сейчас на каждый мэйлбокс я жду ответ. я ведь могу послать три мэйлбокса подряд и подождать ответ после трех. Изменено 11 июня, 2019 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться