|
|
  |
ошибки при предачи данных по CAN, ошибки при предачи данных по CAN между двумя контроллерами |
|
|
|
Oct 26 2010, 08:53
|
Участник

Группа: Участник
Сообщений: 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
|
|
|
|
|
Oct 27 2010, 07:31
|
Участник

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

|
Поставил терминальные резисторы на 120 (Ом) на приемнике и передатчике между CANH и CANL, сконфигурировал регистры тайминга для CAN - CNF1, CNF2, CNF3 и все вроде заработало. Данные приемника совпадают с данными передатчика. Но не всегда работает, иногда при чтении данные не совпадают, причем где угодно могут не совпадать, то есть либо сами данные, либо идентификаторы. Какая-то нестабильность в работе. Третьего провода (земли) для CAN нет. Может в нем дело? Или регистры какие-нибудь еще сконфигить? А может это из-за неправильной конфигурации регистров тайминга? Может ли такое быть?
|
|
|
|
|
Oct 27 2010, 10:39
|
Участник

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

|
cant, спасибо за ответы. Я все прочитал конечно и в принципе знал, но проблема все равно остается. То работает, то нет. Объединил земли (третий провод) между передатчиком и приемником, ситуация не изменилась. Нестабильность в работе остается. Буду думать дальше. Даже вот ща попробовал и не пойму нифига, в одном случае, если у меня первый контроллер - передатчик, а второй - приемник, то все проходит - полученные данные такие же как и переданные, а если наоборот ,то есть, когда второй контроллер становится передатчиком , то затыкается на чтении стандартного идентификатора у приемника, вместо записанных AAh и 00h читает AAh и 02h.
Сообщение отредактировал Женек_84 - Oct 27 2010, 10:59
|
|
|
|
|
Oct 29 2010, 05:23
|
Участник

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

|
Заметил, что здесь дело даже не в CAN шине. Сделал после записи сразу считывание данных из передатчика и увидел, что иногда неправильно считывает или записывает получается в сам MCP2510. Например, записал идентификатор AAh в контроллер и сразу считал его, иногда проходит, а иногда нет, может например считать 6Ah. Не пойму в чем дело... Получается в самом SPI интерфейсе?
|
|
|
|
|
Oct 29 2010, 11:44
|
Участник

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

|
А ща вообще в тупик зашел. Пишу в регистр по адресу 0Fh в MCP2510 любые данные, вижу правильные временные диаграммы SPI при записи, но читает каждый раз по разному- иногда првильно, иногда нет и также прям на линиях SPI смотрю, тож нормальные диаграммы чтения, а данные не те бывают.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|