Друзья, помогите разобраться с передачей данных между двумя 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
|