реклама на сайте
подробности

 
 
> ошибки при предачи данных по CAN, ошибки при предачи данных по CAN между двумя контроллерами
Женек_84
сообщение Oct 26 2010, 08:53
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 31-03-08
Пользователь №: 36 351



Друзья, помогите разобраться с передачей данных между двумя CAN-контроллерами MCP2510, которые соединены по двум коротким
линиям между собой CANH и CANL.
У меня один работает как передатчик, другой как приемник через CAN шину, CAN-трансивер - PCA82C250 в высокоскоростном режиме.
Перевожу и передатчик и приемник в нормальный режим работы, разрешаю все возможные прерывания и отключаю все маски и фильтры
для передатчика и приемника, для передатчика записываю станд. идентификаторы в передающий буфер 0, длину данных ставлю восьми байтам и записываю эти 8 байт. Выставляю самый высокий приоритет для перед. буфера 0 и говорю, что буфер готов к передаче (записываю TXREQ=1). Вижу прерывание на контакте INT и передатчика и приемника, т.е. у обоих контроллеров, что сообщения как бы переданы одним и приняты другим контроллером.
Но когда читаю регистр контроля передающего буфера 0 передатчика (TXB0CTRL), то возникают ошибки при передаче сообщения,
бит передачи не очищается и устанавливаются биты ошибок потери арбитража и ошибка шины.
Не пойму в чем дело. Самая простенькая программа и не работает. Может кто сталкивался с этим?
Может нужно сконфигурировать регистры тайминга для CAN шины - CNF1,2,3?
И третий провод для CAN-шины общий необходим?
Может кто-нибудь прогу скинет или даст ссылку по обмену данными между двумя контроллерами по CAN шине...

Сообщение отредактировал Женек_84 - Oct 26 2010, 09:02
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Женек_84
сообщение Oct 27 2010, 10:39
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 31-03-08
Пользователь №: 36 351



cant, спасибо за ответы.
Я все прочитал конечно и в принципе знал, но проблема все равно остается.
То работает, то нет.
Объединил земли (третий провод) между передатчиком и приемником, ситуация не изменилась. Нестабильность в работе остается.
Буду думать дальше.
Даже вот ща попробовал и не пойму нифига, в одном случае, если у меня первый контроллер - передатчик, а второй - приемник, то все проходит - полученные данные такие же как и переданные, а если наоборот ,то есть, когда второй контроллер становится передатчиком , то затыкается на чтении стандартного идентификатора у приемника, вместо записанных AAh и 00h читает AAh и 02h.

Сообщение отредактировал Женек_84 - Oct 27 2010, 10:59
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd August 2025 - 10:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01369 секунд с 7
ELECTRONIX ©2004-2016