Перейти к содержанию
    

Пропуск данных на CAN шине

1 hour ago, adnega said:

А длина шины какая?

все три находяться рядом в одной коробке. растояние 10 сантиметров друг от друга.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, jenya7 сказал:

все три находяться рядом в одной коробке. растояние 10 сантиметров друг от друга.

Тогда задержка линии у вас небольшая. Можно считать, что каждые 10 метров кабеля вносят задержу в 50 нс.

Дык, получилось изменить точку сэмплирования? Заработало?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, adnega said:

Тогда задержка линии у вас небольшая. Можно считать, что каждые 10 метров кабеля вносят задержу в 50 нс.

Дык, получилось изменить точку сэмплирования? Заработало?

не могу пока проверить. нет доступа к системе.

интересно а этим инструментом можно пользоваться?

он мне генерирует такую таблицу

can_baud.png.a3cf5d1697f4f79e25f587a787927bed.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, jenya7 said:

интересно а этим инструментом можно пользоваться?

Если у вас по шине хоть один раз приняло , то задержками можно не баловаться. Точно не в них дело
CAN - железобетонная шина. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, AlexandrY said:

Если у вас по шине хоть один раз приняло , то задержками можно не баловаться. Точно не в них дело
CAN - железобетонная шина. 

ну я попробую глубже копнуть в коде. я тоже склонен доверять шине. все таки в машинах используется.

Изменено пользователем jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 доминантных бит в районе бита подтверждения по инициативе передатчика).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, adnega said:

Я недавно плотно разбирался с CAN на высокой скорости и приличной дистанции.

Термин "хоть один раз приняло" не работает в отношении CAN, т.к. там есть состояния активной и пассивной ошибки и т.п.

Весь отчет выложить не могу, но вот кусочек:

 

я не совсем понял - терминаторы надо ставить с двух концов?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только что, jenya7 сказал:

я не совсем понял - терминаторы надо ставить с двух концов?

Да, каждый из двух конецов шины должен быть терминирован.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, adnega said:

Да, каждый из двух конецов шины должен быть терминирован.

ой. я только с одного конца резистор поставил. оба по 120 ом должны быть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

27 минут назад, jenya7 сказал:

ой. я только с одного конца резистор поставил. оба по 120 ом должны быть?

В тривиальном случае - да.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, adnega said:

В тривиальном случае - да.

спасибо. сделаю все изменения, включая временные параметры, расскажу о результатах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для проверки я бы оставил на шине 1 мастер и 1 слейв, кабель (для проверки) увеличил хотябы на несколько метров + 2 терминатора на 120 Ом.

В первую очередь убедитесь в исправности всех трансиверов. Там есть одна "провокация", что даже с "подпаленным" трансивером обмен может или вообще работать без ошибок, или давать сбои, но продолжать работать.

Еще одна "провокация" это (если есть на трансивере ) вход и подключенный резистор Rs. При его большом значении может "дохнуть" обмен на высоких скоростях.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Зная остальные темы jenya7, необходимо предполагать наиболее дурацкую ошибку.

И, кончено же, она есть:

CAN_InitStructure.CAN_NART = ENABLE; //ENABLE DISABLE NO AUTOMATIC RETRANSMITTION

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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]);                         
        }
    }
}

сейчас получается я читаю один

 

получается я могу ускорить  посылку мастера слейвам. сейчас на каждый мэйлбокс я жду ответ. я ведь могу послать три мэйлбокса подряд и подождать ответ после трех.

 

Изменено пользователем jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...