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

Создал драйвер для CAN.

Все уровни соответствуют стандарту.

Посчитал, что дифференциальный усилитель не обязателен.

Приемный транзистор четко переключается при переходе

из Recessive в Dominant и наоборот.Однако MCP2510

выдает ошибку линии.В чем моя ошибка?Что я не так делаю?Думаю , что

все это связано с протоколом.Где-то я его не дочитал.

drv.bmp

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


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

Создал драйвер для CAN.

Все уровни соответствуют стандарту.

Посчитал, что дифференциальный усилитель не обязателен.

Приемный транзистор четко переключается при переходе

из Recessive в Dominant и наоборот.Однако MCP2510

выдает ошибку линии.В чем моя ошибка?Что я не так делаю?Думаю , что

все это связано с протоколом.Где-то я его не дочитал.

 

а сколько устройств сейчас на шине?

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


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

Создал драйвер для CAN.

Все уровни соответствуют стандарту.

Посчитал, что дифференциальный усилитель не обязателен.

Приемный транзистор четко переключается при переходе

из Recessive в Dominant и наоборот.Однако MCP2510

выдает ошибку линии.В чем моя ошибка?Что я не так делаю?Думаю , что

все это связано с протоколом.Где-то я его не дочитал.

 

Хм, я зачем этот весь огород, да еще на таких "крутых" транзисторах? 315/361

 

Если уж диф. схема не нужна то проще сделать на простом открытом коллекторе...

 

На какой скорости проводятся опыты?

 

Без драйвера работает? (Одна подтяжка к +5 , диод в цепи TX, катодом к ТХ, анод к RX, RX к подтяжке...)

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


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

не совсем понятен смысл 2 транзисторов в передатчике, поскольку диф-сигнала в линии они не создадут, проще уж применить схему просто с открытым коллектором.

 

Далее, нужно взять 2х лучевой скоп и посмотреть сигнал Tx и Rx на передающем конце. Приемный конец должен генерить доминантный ACK в соответствующем месте.

В общем нужно определить, принимает ли и подтверждает приемник, и дело только в передатчике, или приемник не принимает.

Возможно дело в правильности настройки CAN контроллера.

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


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

Хм, я зачем этот весь огород, да еще на таких "крутых" транзисторах? 315/361

 

Если уж диф. схема не нужна то проще сделать на простом открытом коллекторе...

 

На какой скорости проводятся опыты?

 

Без драйвера работает? (Одна подтяжка к +5 , диод в цепи TX, катодом к ТХ, анод к RX, RX к подтяжке...)

 

 

Драйвер всетаки нужен.Но это потом.Хочу соединить 2 компьютера.

Скорость можно задавать из приложения.Ни на одной не идет.

При начале передачи выдает ошибку линии.

Сейчас проверю ваше предложение.Может я уже спалил микросхемы.

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


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

не совсем понятен смысл 2 транзисторов в передатчике, поскольку диф-сигнала в линии они не создадут, проще уж применить схему просто с открытым коллектором.

 

Далее, нужно взять 2х лучевой скоп и посмотреть сигнал Tx и Rx на передающем конце. Приемный конец должен генерить доминантный ACK в соответствующем месте.

В общем нужно определить, принимает ли и подтверждает приемник, и дело только в передатчике, или приемник не принимает.

Возможно дело в правильности настройки CAN контроллера.

 

Эту схему я скопировал с MCP2551 и 82250 .Уже около года не могу

приобрести эти микросхемы.Вот и взялся городить огород.Кончно будут и

транзисторы другие, и операционник на входе.Как только соединю 2

компьютера, так дело пойдет быстрее.Все сигналы соответствуют

стандарту.А , что значит правильность настройки CAN?В режиме зацикливания

все работает прекрасно.

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


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

стандарту.А , что значит правильность настройки CAN?

CAN контроллер же программируется. Это действо может содержвать ошибки.

Поэтому предположение, что если принимающий контроллер не отвечает (то есть не подтверждает прием кадра в поле ack), то возможно что-то с настройкой контроллера.

Если он отвечает, то возможно что-то со схемотехникой драйверов. Нужно посмотреть задержки распространения сигнала ack от приемника, через его драйверы, через драйверы передатчика и на вход rx передатчика. Задержка на распространение сигнала должна укладываться в определенные границы, которые зависят от скорости обмена и настройки can контроллера.

 

В режиме зацикливания

все работает прекрасно.

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


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

Эту схему я скопировал с MCP2551 и 82250 .Уже около года не могу

приобрести эти микросхемы.

 

Дык 82250 уже лучше и не ждать, выбери из TJA1050-TJA1054.

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


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

Или примени драйвер 485-го интерфейса.

 

PS:

Не надо изобретать велосипед.

 

post-8051-1129205329_thumb.jpg

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


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

Вы правы.В петлевом режиме контроллер сам формирует сигнал ACK для

передатчика.И поэтому ошибки "Посылка с ошибкой"в режиме зацикливания нет. Наверно дальше надо соединять два контроллера.Но все время есть

ошибка "Ошибка на линии". Это я анализирую регистр CANINTF.

Проверка на себя,как было предложено выше, не помогла.

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


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

Вот так должно работать, на небольшом расстоянии между CAN-контроллерами. (При R=5К и скорости 125Кбит)

 

           +5v
            |
----        R
   |        |
TX ----|<|--*
   |        |
RX ---------*  
   |        |
----        |
GND--|      |
     |      |
     |      |
       ...
     |      |
     |      |
GND--|      |
----        |
   |        |
TX ----|<|--*
   |        |
RX ---------  
   |
----

 

Необходимо включить и настроить один узел на прием ВСЕХ пакетов на определенной скорости.

Другим попытаться передать на той же скорости.

 

Не использовал MCP2510, настроек регистров не подскажу.

Может стоит поискать в инете примеры с исходниками, в которых используется применяемый контроллер?

 

 

PS:

Для связи между PC желательна не диф. схема, а схема с гальванической развязкой, иначе по общему проводу будут помехи(особенно если PC вклющены в разные фазы), которые могут приводить к ошибкам.

 

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

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


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

Вы правы.В петлевом режиме контроллер сам формирует сигнал ACK для

передатчика.И поэтому ошибки "Посылка с ошибкой"в режиме зацикливания нет. Наверно дальше надо соединять два контроллера.

Так они еще не соединены, что ли? :-O

Я же первым вопросом это спросил.

Если контроллер на шине только 1, ему никто ничего не подтверждает, поэтому он и не может ничего передать.

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


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

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

привел.Линия и устройства питаются от отдельного источника.При передаче по осциллографу видно, что все правильно.

Ориентируюсь на AN228 с сайта Microchip.Управляю своей версией

Kit 2510.Использую их MCP2510.DLL. Вроде все работает.В петлевом

режиме все пишется и передается.Фильтры и маски настроены на прием всех сообщений.Но все время ошибка линии.Может на входе используется и третье состояние?Кто может сказать , что должно быть на выводе RX драйвера шины

сейчас попробую соединить напрямую по схеме spf.Компьютеры стоят рядом.

lpt_can.bmp

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


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

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

привел.Линия и устройства питаются от отдельного источника.При передаче по осциллографу видно, что все правильно.

Ориентируюсь на AN228 с сайта Microchip.Управляю своей версией

Kit 2510.Использую их MCP2510.DLL. Вроде все работает.В петлевом

режиме все пишется и передается.Фильтры и маски настроены на прием всех сообщений.Но все время ошибка линии.Может на входе используется и третье состояние?Кто может сказать , что должно быть на выводе RX драйвера шины

сейчас попробую соединить напрямую по схеме spf.Компьютеры стоят рядом.

 

Такое ощушение, что вы не слышите вопросов.

Второй CAN контроллер программируется? Или просто подключен к CAN шине?

Посмотрите, что у второго CAN контроллера на Tx, если там постоянная 1, то он не слышит приема, если он подтверждает прием пакета от первого CAN контроллера в поле ACK, то значить проблемы с линией.

Нужно локализоваться сначала в этом, а потом уже искать причину в драйверах или схеме соединения.

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


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

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

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

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

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

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

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

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

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

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