|
Драйвер CAN |
|
|
|
Oct 13 2005, 08:36
|
Знающий
   
Группа: Свой
Сообщений: 506
Регистрация: 29-09-05
Из: Донецк
Пользователь №: 9 063

|
Создал драйвер для CAN. Все уровни соответствуют стандарту. Посчитал, что дифференциальный усилитель не обязателен. Приемный транзистор четко переключается при переходе из Recessive в Dominant и наоборот.Однако MCP2510 выдает ошибку линии.В чем моя ошибка?Что я не так делаю?Думаю , что все это связано с протоколом.Где-то я его не дочитал.
Прикрепленные файлы
drv.bmp ( 8.46 килобайт )
Кол-во скачиваний: 302
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 29)
|
Oct 13 2005, 08:48
|

Знающий
   
Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206

|
Цитата(upc2 @ Oct 13 2005, 13:36) Создал драйвер для CAN. Все уровни соответствуют стандарту. Посчитал, что дифференциальный усилитель не обязателен. Приемный транзистор четко переключается при переходе из Recessive в Dominant и наоборот.Однако MCP2510 выдает ошибку линии.В чем моя ошибка?Что я не так делаю?Думаю , что все это связано с протоколом.Где-то я его не дочитал. а сколько устройств сейчас на шине?
--------------------
Пасу котов...
|
|
|
|
|
Oct 13 2005, 10:48
|

Странник
   
Группа: Свой
Сообщений: 766
Регистрация: 29-08-05
Из: Екатеринбург
Пользователь №: 8 051

|
Цитата(upc2 @ Oct 13 2005, 13:36) Создал драйвер для CAN. Все уровни соответствуют стандарту. Посчитал, что дифференциальный усилитель не обязателен. Приемный транзистор четко переключается при переходе из Recessive в Dominant и наоборот.Однако MCP2510 выдает ошибку линии.В чем моя ошибка?Что я не так делаю?Думаю , что все это связано с протоколом.Где-то я его не дочитал. Хм, я зачем этот весь огород, да еще на таких "крутых" транзисторах? 315/361 Если уж диф. схема не нужна то проще сделать на простом открытом коллекторе... На какой скорости проводятся опыты? Без драйвера работает? (Одна подтяжка к +5 , диод в цепи TX, катодом к ТХ, анод к RX, RX к подтяжке...)
--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
|
|
|
|
|
Oct 13 2005, 11:18
|
Знающий
   
Группа: Свой
Сообщений: 506
Регистрация: 29-09-05
Из: Донецк
Пользователь №: 9 063

|
Хм, я зачем этот весь огород, да еще на таких "крутых" транзисторах? 315/361 Если уж диф. схема не нужна то проще сделать на простом открытом коллекторе... На какой скорости проводятся опыты? Без драйвера работает? (Одна подтяжка к +5 , диод в цепи TX, катодом к ТХ, анод к RX, RX к подтяжке...) [/quote] Драйвер всетаки нужен.Но это потом.Хочу соединить 2 компьютера. Скорость можно задавать из приложения.Ни на одной не идет. При начале передачи выдает ошибку линии. Сейчас проверю ваше предложение.Может я уже спалил микросхемы.
|
|
|
|
|
Oct 13 2005, 11:32
|
Знающий
   
Группа: Свой
Сообщений: 506
Регистрация: 29-09-05
Из: Донецк
Пользователь №: 9 063

|
Цитата(Andy Mozzhevilov @ Oct 13 2005, 14:02) не совсем понятен смысл 2 транзисторов в передатчике, поскольку диф-сигнала в линии они не создадут, проще уж применить схему просто с открытым коллектором. Далее, нужно взять 2х лучевой скоп и посмотреть сигнал Tx и Rx на передающем конце. Приемный конец должен генерить доминантный ACK в соответствующем месте. В общем нужно определить, принимает ли и подтверждает приемник, и дело только в передатчике, или приемник не принимает. Возможно дело в правильности настройки CAN контроллера. Эту схему я скопировал с MCP2551 и 82250 .Уже около года не могу приобрести эти микросхемы.Вот и взялся городить огород.Кончно будут и транзисторы другие, и операционник на входе.Как только соединю 2 компьютера, так дело пойдет быстрее.Все сигналы соответствуют стандарту.А , что значит правильность настройки CAN?В режиме зацикливания все работает прекрасно.
|
|
|
|
|
Oct 13 2005, 11:41
|

Знающий
   
Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206

|
Цитата(upc2 @ Oct 13 2005, 16:32) стандарту.А , что значит правильность настройки CAN? CAN контроллер же программируется. Это действо может содержвать ошибки. Поэтому предположение, что если принимающий контроллер не отвечает (то есть не подтверждает прием кадра в поле ack), то возможно что-то с настройкой контроллера. Если он отвечает, то возможно что-то со схемотехникой драйверов. Нужно посмотреть задержки распространения сигнала ack от приемника, через его драйверы, через драйверы передатчика и на вход rx передатчика. Задержка на распространение сигнала должна укладываться в определенные границы, которые зависят от скорости обмена и настройки can контроллера. Цитата В режиме зацикливания все работает прекрасно.
--------------------
Пасу котов...
|
|
|
|
|
Oct 13 2005, 12:01
|

Странник
   
Группа: Свой
Сообщений: 766
Регистрация: 29-08-05
Из: Екатеринбург
Пользователь №: 8 051

|
Цитата(upc2 @ Oct 13 2005, 16:32) Эту схему я скопировал с MCP2551 и 82250 .Уже около года не могу приобрести эти микросхемы. Дык 82250 уже лучше и не ждать, выбери из TJA1050-TJA1054.
|
|
|
|
|
Oct 13 2005, 12:09
|

Странник
   
Группа: Свой
Сообщений: 766
Регистрация: 29-08-05
Из: Екатеринбург
Пользователь №: 8 051

|
Или примени драйвер 485-го интерфейса. PS: Не надо изобретать велосипед.
--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
|
|
|
|
|
Oct 14 2005, 03:34
|

Странник
   
Группа: Свой
Сообщений: 766
Регистрация: 29-08-05
Из: Екатеринбург
Пользователь №: 8 051

|
Вот так должно работать, на небольшом расстоянии между CAN-контроллерами. (При R=5К и скорости 125Кбит) Код +5v | ---- R | | TX ----|<|--* | | RX ---------* | | ---- | GND--| | | | | | ... | | | | GND--| | ---- | | | TX ----|<|--* | | RX --------- | ---- Необходимо включить и настроить один узел на прием ВСЕХ пакетов на определенной скорости. Другим попытаться передать на той же скорости. Не использовал MCP2510, настроек регистров не подскажу. Может стоит поискать в инете примеры с исходниками, в которых используется применяемый контроллер? PS: Для связи между PC желательна не диф. схема, а схема с гальванической развязкой, иначе по общему проводу будут помехи(особенно если PC вклющены в разные фазы), которые могут приводить к ошибкам. Для подавления помех можно попробовать зашунтировать сигнальную линию небольшой емкостью на каждом контроллере. (Это касается приведенной выше схемы).
--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
|
|
|
|
|
Oct 14 2005, 03:45
|

Знающий
   
Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206

|
Цитата(upc2 @ Oct 13 2005, 17:56) Вы правы.В петлевом режиме контроллер сам формирует сигнал ACK для передатчика.И поэтому ошибки "Посылка с ошибкой"в режиме зацикливания нет. Наверно дальше надо соединять два контроллера. Так они еще не соединены, что ли? :-O Я же первым вопросом это спросил. Если контроллер на шине только 1, ему никто ничего не подтверждает, поэтому он и не может ничего передать.
--------------------
Пасу котов...
|
|
|
|
|
Oct 14 2005, 08:35
|
Знающий
   
Группа: Свой
Сообщений: 506
Регистрация: 29-09-05
Из: Донецк
Пользователь №: 9 063

|
Можно сказать , что два компьютера соединены по схеме которую я привел.Линия и устройства питаются от отдельного источника.При передаче по осциллографу видно, что все правильно. Ориентируюсь на AN228 с сайта Microchip.Управляю своей версией Kit 2510.Использую их MCP2510.DLL. Вроде все работает.В петлевом режиме все пишется и передается.Фильтры и маски настроены на прием всех сообщений.Но все время ошибка линии.Может на входе используется и третье состояние?Кто может сказать , что должно быть на выводе RX драйвера шины сейчас попробую соединить напрямую по схеме spf.Компьютеры стоят рядом.
|
|
|
|
|
Oct 14 2005, 08:44
|

Знающий
   
Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206

|
Цитата(upc2 @ Oct 14 2005, 13:35) Можно сказать , что два компьютера соединены по схеме которую я привел.Линия и устройства питаются от отдельного источника.При передаче по осциллографу видно, что все правильно. Ориентируюсь на AN228 с сайта Microchip.Управляю своей версией Kit 2510.Использую их MCP2510.DLL. Вроде все работает.В петлевом режиме все пишется и передается.Фильтры и маски настроены на прием всех сообщений.Но все время ошибка линии.Может на входе используется и третье состояние?Кто может сказать , что должно быть на выводе RX драйвера шины сейчас попробую соединить напрямую по схеме spf.Компьютеры стоят рядом. Такое ощушение, что вы не слышите вопросов. Второй CAN контроллер программируется? Или просто подключен к CAN шине? Посмотрите, что у второго CAN контроллера на Tx, если там постоянная 1, то он не слышит приема, если он подтверждает прием пакета от первого CAN контроллера в поле ACK, то значить проблемы с линией. Нужно локализоваться сначала в этом, а потом уже искать причину в драйверах или схеме соединения.
--------------------
Пасу котов...
|
|
|
|
|
Oct 14 2005, 09:39
|

Знающий
   
Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206

|
Цитата(upc2 @ Oct 14 2005, 14:09) На обоих контроллерах стоят одинаковые приложения.Оба контроллера программируются.Скорость передачи одинаковая.При начале передачи одного на входе другого появляются импульсы.Приема данных не вижу. Даже в режиме "только чтение" на втором не получаю данных. Я не знаю, что означает этот режим для CAN. Цитата Проверить осциллографом ack на втором Tx не догадался .Спасибо Я об этом выше писал. Цитата Сейчас проверю.CANINTF сигнализирует две ошибки.Посылка с ошибкой. Это связано с подтверждением ack.И ошибка линии.Как он выявляет эту ошибку? Так это надо документацию на MCP смотреть, в каких случаях контроллер эту ошибку выставляет. Еще совет, посмотрите 2 лучевым скопом сразу сигналы на Tx одного и Rx другого на предмет временнЫх задержек, завалов фронтов и т.п.. Что-там видно?
--------------------
Пасу котов...
|
|
|
|
|
Oct 14 2005, 10:19
|

Странник
   
Группа: Свой
Сообщений: 766
Регистрация: 29-08-05
Из: Екатеринбург
Пользователь №: 8 051

|
Цитата(upc2 @ Oct 14 2005, 14:09) Скорость передачи одинаковая. Какая эта скорость? если не секрет... Цитата Приема данных не вижу. Чем это пытаетесь определять? Считыванием регистров или по сигналу прерывания? Формирование сигнала прерывания разрешено?
--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
|
|
|
|
|
Oct 14 2005, 11:08
|

Странник
   
Группа: Свой
Сообщений: 766
Регистрация: 29-08-05
Из: Екатеринбург
Пользователь №: 8 051

|
Цитата(upc2 @ Oct 14 2005, 15:55) Что-то я запутался.Счетчик ошибок отключает передатчик.При передаче одной посылки набегает столько ошибок?Наверно помехи.Сейчас буду разбираться. Посылка передается до тех пор паке не будет передана без ошибок или не переполнится счетчик ошибок. Это по спецификации, да и в доке на контроллер должно быть описано. Такая ситуация возникает когда на шине только один контроллер, остальные выключены неверно настроены обрыв связи у них неисправен выход TX, который долже формировать ask ...
--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
|
|
|
|
|
Oct 14 2005, 11:09
|

Знающий
   
Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206

|
Цитата(upc2 @ Oct 14 2005, 15:55) Разобрался с ошибками.Регистр CANINTF указывал на регистр EFLG. Тот указывал на ошибку "Передатчик в пассивном состоянии сч.ошибок >127" Передатчик переходит в пассивное состояние, если при передаче зафиксировано больше 127 ошибок. Также передатчик будет переходить в пассивное состояние и там оставаться, если он не получил 127 подтверждений ACK от других CAN контроллеров на шине. То есть однозначно у вас передатчик не слышит приемника, либо приемник вообще не принимает. Цитата Ошибка "Посылка с ошибками" указывала , что приемный буфер переполнен. Это в каком контроллере, том же который передает? Цитата Что-то я запутался.Счетчик ошибок отключает передатчик.При передаче одной посылки набегает столько ошибок?Наверно помехи. Нет, в CAN же аппаратное подтверждение приема пакетов. Поэтому единожды начав передавать сообщение CAN контроллер будет его пытаться передать, пока оно не будет подтверждено другими CAN контроллерами в сети. Если других CAN контроллеров в сети нет, или они не работают, то передатчик попытается передать сообщение 128 раз, каждый раз добавляя ошибку передачи, и потом перейдет в пассивный режим. Как он будет в пассивном режиме работать, не помню, нужно спецификацию CAN смотреть, там эта ситуация описана. Цитата Сейчас буду разбираться. Надо немного перепаять схемы.Это я смотрел на закоротку предложенную sfj. Вы сначала убедитесь, что второй CAN контроллер у вас принимает пакеты и подтверждает их ACK. Третий раз уже советую это сделать.
--------------------
Пасу котов...
|
|
|
|
|
Oct 14 2005, 11:12
|
Знающий
   
Группа: Свой
Сообщений: 506
Регистрация: 29-09-05
Из: Донецк
Пользователь №: 9 063

|
Цитата(spf @ Oct 14 2005, 13:19) Цитата(upc2 @ Oct 14 2005, 14:09) Скорость передачи одинаковая. Какая эта скорость? если не секрет... Цитата Приема данных не вижу. Чем это пытаетесь определять? Считыванием регистров или по сигналу прерывания? Формирование сигнала прерывания разрешено? Скорость 50 бит/с. Я в программе вижу состояние всех регистров MCP2510. Если я разрешил прием всех посылок, то хочу увидеть появление данных в буфере 0 приемного регистра.Или это не так?Это мой первый пуск CANа.
|
|
|
|
|
Oct 14 2005, 11:29
|

Знающий
   
Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206

|
Цитата(upc2 @ Oct 14 2005, 16:21) <<Это в каком контроллере, том же который передает? >> Да это выдает каждое приложение.Кажется до меня начинает доходить. Вы правы со счетчиком. Второй контроллер должен ответить.Значит сообщение должно быть для него.Все дело в фильтрах и масках. CAN контроллер должен подтверждать все сообщения. Маски здесь не при чем. Фильтры и маски - они только для того, чтобы приложения не загружать прерыванием на каждое сообщение из CAN. то есть можно настроить так, чтобы аппаратно прерывания генерились только на нужные сообщения, не более того. У вас проблема явно ниже, сам CAN контроллер не принимает сообщения. Ответьте на вопрос, у вас ACK на Tx есть на принимающем контроллере или нет?
--------------------
Пасу котов...
|
|
|
|
|
Oct 14 2005, 11:32
|

Знающий
   
Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206

|
Цитата(upc2 @ Oct 14 2005, 16:25) <<Вы сначала убедитесь, что второй CAN контроллер у вас принимает пакеты и подтверждает их ACK. Третий раз уже советую это сделать. >> Сейчас этим занимаюсь.Перепаиваю схемы. Зачем там перепаивать, нужно скопом посмотреть на ноге Tx принимающего контроллера. Как только там увидите ack - значит CAN контроллер слышит шину. Пока там подтверждения не добьетесь, работать ничего не будет.
--------------------
Пасу котов...
|
|
|
|
|
Oct 20 2005, 05:35
|

Странник
   
Группа: Свой
Сообщений: 766
Регистрация: 29-08-05
Из: Екатеринбург
Пользователь №: 8 051

|
Цитата(upc2 @ Oct 20 2005, 10:23) Ну и славно... И все же, рекомендую сделать гальваническую развязку. Для надежности. Не рекомендую кузова(общий провод) двух PC соединять через свое устройство.
--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
|
|
|
|
|
Oct 21 2005, 05:12
|
Знающий
   
Группа: Свой
Сообщений: 506
Регистрация: 29-09-05
Из: Донецк
Пользователь №: 9 063

|
Цитата(spf @ Oct 20 2005, 08:35) Цитата(upc2 @ Oct 20 2005, 10:23) Ну и славно... И все же, рекомендую сделать гальваническую развязку. Для надежности. Не рекомендую кузова(общий провод) двух PC соединять через свое устройство. Спасибо за рекомендации и ссылки.Все полезно.У нас сейчас идет "атака " на CAN.Переориентировал заявку в коммерческом отделе на TJA1050.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|