Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблемы с SJA1000
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Controller Area Network (CAN)
Claster
Здравствуйте, Уважаемые!

В данный момент работаю с SJA1000. Железо разрабатывалось на бегу, и не мной. Я программирую МК (ADuC842).
В конце предполагается несколько устройств на шине (до 10), но в данный момент пробую связать 2. Использую UTP5e (что под рукой было), сопротивления по 120 Ом висят прямо на выходах SJA1000 (трансиверов не предусмотрено). Объединены TX0-RX0, TX1-RX1 и повешены на одну из витых пар.
Мне удалось добиться передачи-приема одной посылки в каждую строну, после чего SJA1000 не хочет работать (уходит в ошибку).

Конкретные вопросы:
1. Можно ли связывать SJA1000 между собой непосредственно, без трансиверов? (там вроде выходные драйвера есть, настраиваемые)
2. Допустима ли архитектура моей "шины"? Или нужно терминаторы по-честному делать - отдельно?
3. Для связи использую Clock Mode. Попытки перейти на bi-phase mode приводят к абсолютной глухоте. Почему?
4. Какова должна быть реакция на прерывание по ошибке?

Заранее спасибо!
zksystem
Цитата(Claster @ Sep 10 2010, 17:16) *
сопротивления по 120 Ом висят прямо на выходах SJA1000 (трансиверов не предусмотрено).


Если нет трансиверов, то для чего вы терминаторы на SJA1000 прилепили??

P.S. у Вас какой-то бред, а не схема (ИМХО).

Claster
Цитата(zksystem @ Sep 13 2010, 11:43) *
Если нет трансиверов, то для чего вы терминаторы на SJA1000 прилепили??


Я и не утверждал, что "много раз делал, и все получалось".
Наоборот, прошу мудрых и опытных помочь в новом для меня деле. smile.gif
zksystem
Цитата(Claster @ Sep 13 2010, 17:42) *
Я и не утверждал, что "много раз делал, и все получалось".
Наоборот, прошу мудрых и опытных помочь в новом для меня деле. smile.gif

почитайте CAN Physical layer, там есть схемы, примеры.
Трансиверы нужно обязательно ставить.

P.S. "В данный момент работаю с SJA1000. Железо разрабатывалось на бегу, и не мной." - судя по всему вы расхлебываете чьи-то "акробатические" разработки...
Claster
Цитата(zksystem @ Sep 13 2010, 20:35) *
почитайте CAN Physical layer, там есть схемы, примеры.
Трансиверы нужно обязательно ставить.


Спасибо! Нашел. Читаю.

Цитата(zksystem @ Sep 13 2010, 20:35) *
P.S. "В данный момент работаю с SJA1000. Железо разрабатывалось на бегу, и не мной." - судя по всему вы расхлебываете чьи-то "акробатические" разработки...


Это вы поняли правильно. smile.gif
А как мне найти ответ на вопрос 4?
zksystem
Цитата(Claster @ Sep 14 2010, 14:11) *
А как мне найти ответ на вопрос 4?

SJA1000 не применял, пользуюсь в основном встроенными в микроконтроллер CAN-модулями.
KRS
Цитата(Claster @ Sep 10 2010, 17:16) *
1. Можно ли связывать SJA1000 между собой непосредственно, без трансиверов? (там вроде выходные драйвера есть, настраиваемые)

Можно связать 2 устройства, получится точка точка - общая линия RX = TX1 & TX2

Цитата(Claster @ Sep 10 2010, 17:16) *
4. Какова должна быть реакция на прерывание по ошибке?

По входу в прерывание надо считать Interrupt регистр для очистки. А реакция, зависит от задач. Обычно именно ERROR interrupt можно игнорировать, а обрабатывать статусы BUS OFF и ERROR PASSIVE (если нужно).
Claster
Спасибо за ответ!
Цитата(KRS @ Sep 15 2010, 14:03) *
Можно связать 2 устройства, получится точка точка - общая линия RX = TX1 & TX2

Я неточно выразился. Имеется ввиду соединение, в котором можно увеличивать количество устройств.
Т.е. соединение двух и более устройств с объединением всех RX0-TX0, и RX1-TX1 и работа на витой паре без трансиверов.
Может есть прецеденты?
Попытаюсь объяснить: мне досталась для оживления схема, а я пытаюсь выяснить, можно ли запустить ее так. А если надо дорабатывать, то что и как надо делать?

Цитата(KRS @ Sep 15 2010, 14:03) *
По входу в прерывание надо считать Interrupt регистр для очистки. А реакция, зависит от задач. Обычно именно ERROR interrupt можно игнорировать, а обрабатывать статусы BUS OFF и ERROR PASSIVE (если нужно).

Правильно ли я понял, что попадая в прерывание по ошибке, надо считать регистр статуса и обрабатывать ситуацию далее?
А какая реакция должна быть для продолжения работы? Просто выкл-вкл SJA1000? Или есть что-то умнее? Или вообще надо забыть про CAN в этот сеанс?
zksystem
Цитата(Claster @ Sep 15 2010, 16:02) *
Я неточно выразился. Имеется ввиду соединение, в котором можно увеличивать количество устройств.
Т.е. соединение двух и более устройств с объединением всех RX0-TX0, и RX1-TX1 и работа на витой паре без трансиверов.
Может есть прецеденты?
Попытаюсь объяснить: мне досталась для оживления схема, а я пытаюсь выяснить, можно ли запустить ее так. А если надо дорабатывать, то что и как надо делать?


Более двух устройств только с трансивером.
KRS
Цитата(Claster @ Sep 15 2010, 16:02) *
Правильно ли я понял, что попадая в прерывание по ошибке, надо считать регистр статуса и обрабатывать ситуацию далее?
А какая реакция должна быть для продолжения работы? Просто выкл-вкл SJA1000? Или есть что-то умнее? Или вообще надо забыть про CAN в этот сеанс?

По входу в прерывание первым делом надо считать IR регистр, что бы определить почему произошло прерывание и сбросить его.
По ошибкам можно ничего не делать, если на шине серьезные проблемы CAN сам отключится - перейдет в BUS OFF и отключится. Вот тогда надо заново его переводит в operating mode (возможно с перенастройкой). Ну если при отправке получили ERROR PASSIVE - то скорее всего больше CAN устройств нет (некому ACK установить)
Claster
Цитата(KRS @ Sep 15 2010, 19:07) *
По входу в прерывание первым делом надо считать IR регистр, что бы определить почему произошло прерывание и сбросить его.
По ошибкам можно ничего не делать, если на шине серьезные проблемы CAN сам отключится - перейдет в BUS OFF и отключится. Вот тогда надо заново его переводит в operating mode (возможно с перенастройкой). Ну если при отправке получили ERROR PASSIVE - то скорее всего больше CAN устройств нет (некому ACK установить)

Спасибо большое, KRS! До меня это реально не доходило.

И вам спасибо, zksystem, особенно за отправку к Требования физического уровня!

Многие вопросы уже решены, начинаю проектировать плату с трансиверами. Однако появились новые вопросы:
1. В требованиях физического уровня нашел примеры разъемов. Увидел, что можно пускать в линии питание для изолированных трансиверов.
Но можно ли все запихнуть в UTP5e? Или пускать жгутом кабели питания и информационные?
2. Для простого терминирования советуют ставить сопротивления, равные волновому сопротивлению витой пары. Обычно это 120 Ом.
Видел в интернете, что волновое сопротивление UTP5e 100 Ом ± 15 Ом. Значит ли это, что нужно для терминаторов брать 100 Ом?
3. Как делать отводы от шины для устройств? Или где-нибудь можно купить Т-адаптеры? Посоветуйте, пожалуйста.
Нигде не могу найти такой информации. А изобретать велосипед неохота. smile.gif
4. Про терминаторы подобный вопрос: самому ли делать в какой-нибудь коробочке или купить где-нибудь можно?
KRS
Цитата(Claster @ Sep 17 2010, 11:21) *
Но можно ли все запихнуть в UTP5e? Или пускать жгутом кабели питания и информационные?

1 Пара CAN, остальные пары же свободны, можно по ним и питание пустить.

Цитата(Claster @ Sep 17 2010, 11:21) *
3. Как делать отводы от шины для устройств? Или где-нибудь можно купить Т-адаптеры? Посоветуйте, пожалуйста.
Нигде не могу найти такой информации. А изобретать велосипед неохота. smile.gif

Чем меньше отводы тем лучше - особенно на больших скоростях.
Можно на каждом устройстве ставить два разъема вход и выход, т.е. само устройство будет Т адаптером.

Цитата(Claster @ Sep 17 2010, 11:21) *
4. Про терминаторы подобный вопрос: самому ли делать в какой-нибудь коробочке или купить где-нибудь можно?

Можно на устройстве поставить джампер или свитч и соответственно на крайних их замыкать.
Claster
Цитата(KRS @ Sep 17 2010, 15:32) *
1 Пара CAN, остальные пары же свободны, можно по ним и питание пустить.

А делал ли кто это практически? Не повлияет ли +12В на ЭМС?

Цитата(KRS @ Sep 17 2010, 15:32) *
Можно на каждом устройстве ставить два разъема вход и выход, т.е. само устройство будет Т адаптером.

Спасибо! Хорошая идея!
Но у меня уже есть готовые железки. Есть ли в магазинах что-нибудь готовое?

Цитата(KRS @ Sep 17 2010, 15:32) *
Можно на устройстве поставить джампер или свитч и соответственно на крайних их замыкать.

Тоже хорошо! Но тоже лишний раз готовую железку ковырять неохота. Может есть рекомендации по магазинам?
Хотя бы как они в магазинах называются?
А то пытался найти "CAN-терминаторы" и "CAN-ответвители" - нет результата.
KRS
Цитата(Claster @ Sep 17 2010, 16:43) *
А делал ли кто это практически? Не повлияет ли +12В на ЭМС?

Постоянный ток же не должен влиять!

Цитата(Claster @ Sep 17 2010, 16:43) *
Хотя бы как они в магазинах называются?
А то пытался найти "CAN-терминаторы" и "CAN-ответвители" - нет результата.

Как то пробовали что то подобное найти, не получилось!
Если у вас получится, интересно будет! Поделитесь.

Вообще такие штуки только для коаксиала и видел (когда еще ethernet и по нему пускали)
Claster
Цитата(KRS @ Sep 18 2010, 01:41) *
Как то пробовали что то подобное найти, не получилось!
Если у вас получится, интересно будет! Поделитесь.
Вообще такие штуки только для коаксиала и видел (когда еще ethernet и по нему пускали)

Я таки нашел кое-что, но не готов покупать по такой цене. smile.gif
Т-адаптер:
http://www.gridconnect.com/gc-can-t-adapter.html
Терминатор:
http://www.gridconnect.com/gc-can-term.html

Напишите ваше мнение.
zksystem
Цитата(Claster @ Sep 20 2010, 17:29) *
Я таки нашел кое-что, но не готов покупать по такой цене. smile.gif
Т-адаптер:
http://www.gridconnect.com/gc-can-t-adapter.html
Терминатор:
http://www.gridconnect.com/gc-can-term.html

Напишите ваше мнение.

да уж... за такую цену врядли оно себя оправдает.
DmitryDI
Цитата(KRS @ Sep 15 2010, 13:03) *
Можно связать 2 устройства, получится точка точка - общая линия RX = TX1 & TX2


По входу в прерывание надо считать Interrupt регистр для очистки. А реакция, зависит от задач. Обычно именно ERROR interrupt можно игнорировать, а обрабатывать статусы BUS OFF и ERROR PASSIVE (если нужно).


Пишу драйвер под QNX4. Возникла проблема, когда сеть рвется (выпал разъем) – срабатывает прерывание и устройство входит в режим Buss-off - данные принимает, но послать ничего не может. Помогает только перегрузка ПС. Вопрос таков: Как вернуться в нормальный режим после образования сети вновь.

С уважением,
Дейнека Дмитрий
KRS
Цитата(DmitryDI @ Mar 4 2011, 16:06) *
в режим Buss-off - данные принимает, но послать ничего не может.

Вообще при басоф контроллер отключается от сети и нужно его заново инициализировать и включать.
Странно что пакеты при этом принимаются!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.