Adruino + CAN (TJA1050T)

ivpo
Offline
Зарегистрирован: 07.01.2014

Здравствуйте

Ищу примеры реализации CAN-шины на основе связки Arduino (если конкретно, то рассматриваю Nano) и микросхемы TJA1050T (CAN-трансивер). 

Может быть кто-то делал подобное?

Заранее спасибо!

ivpo
Offline
Зарегистрирован: 07.01.2014

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

CAN-шилд не предлагать :)

evgeniy063
Offline
Зарегистрирован: 08.03.2017

Для TJA1050 нужен еще и TMCP2551.
Почитайте http://c4-sedan.ru/forum/viewtopic.php?f=10&t=2545&sid=603515adeebfd465ac39c7ad831074e9
 

ivpo
Offline
Зарегистрирован: 07.01.2014

Т.е. всегда нужна связка MCP 2515 + TJA1050?

 

ivpo
Offline
Зарегистрирован: 07.01.2014

http://tixer.ru/catalog/modules/interfaces-modules/modul_can_na_baze_tja1050/?sphrase_id=361350

А вот такой модуль с Nano сам по себе работать не будет?

evgeniy063
Offline
Зарегистрирован: 08.03.2017

ivpo пишет:
Т.е. всегда нужна связка MCP 2515 + TJA1050?

Да.
TJA1050 это только драйвер, по суте дела, на физическои уровне и один работать не будет.

evgeniy063
Offline
Зарегистрирован: 08.03.2017
ivpo
Offline
Зарегистрирован: 07.01.2014

Да, уже наткнулся. Огромное спасибо!

Правильно ли я понимаю, что оно будет работать с библиотекой MCP_CAN, с которой работает вот этот шилд: http://amperka.ru/product/can-bus-shield?

 

evgeniy063
Offline
Зарегистрирован: 08.03.2017

У меня пока нет железа, жду :)

ivpo
Offline
Зарегистрирован: 07.01.2014

Тоже заказал. Жду.

ivpo
Offline
Зарегистрирован: 07.01.2014

Шилд пришел. Пытаюсь разобраться, но пока не работает.

evgeniy063
Offline
Зарегистрирован: 08.03.2017

Что не работает? К чему подключал? Какие библтотеки использовал?
Это пробывал? https://github.com/autowp/can-usb

ivpo
Offline
Зарегистрирован: 07.01.2014

Использую Nano.

Подключался к SPI через ICSP (MISO, MOSI, SCK) и CS к 10-й ноге.

Подключался к SPI через обычные ноги.

Использовал библиотеки: 

1) https://github.com/p1ne/CAN_BUS_Shield - для модифицированного кварца на 8 МГц

2) https://github.com/autowp/arduino-mcp2515 - для MCP2515

Пока так и не смог заставить работать, но пытаюсь.

ivpo
Offline
Зарегистрирован: 07.01.2014

Руководствовался вот этим: https://www.drive2.ru/l/460733581140951184/

ivpo
Offline
Зарегистрирован: 07.01.2014

Инициализация проходит, а вот отправлять и получать не получается.

Думаю, что это из-за кварца в 8 МГц, но проблему пока не решил :(

MaksVV
Offline
Зарегистрирован: 06.08.2015

может изза того что CS на 9 ногу? http://can.web-box.ru/work_with_can/arduino_canbus

Vladturov.ru
Offline
Зарегистрирован: 18.08.2015

Меняйте кварц с 8 на 16 МГц и все будет работать. я не смог запустить ни с одной библиотекой, поменял кварц и заработало на первой попавшейся библиотеке

 

anatoliyrnd
Offline
Зарегистрирован: 17.03.2016

Ну ввообще в библиотеке от speed-studio есть такое:

MCP_CAN::mcp2515_configRate(const byte canSpeed, const byte clock)

т.е. при инициализации достаточно указать :

CAN.begin(CAN_500KBPS,MCP_8MHz ) и должен заработать на 8мГц.

Vladturov.ru
Offline
Зарегистрирован: 18.08.2015

Позже разобрался, но не на всех библиотеках заработало если проц от 16.
Сейчас вообще на stm32 перешёл, так надобность в mcp2515 отпала, бери любой кварц от4 до 32 и всё, потащили митю тапки :))

zebox
Offline
Зарегистрирован: 08.02.2015

Всем привет!

Подскажите плиз. Хочу использовать Nano +  модуль CAN шины для подключения нескольких (4-5 шт) ардуин между собой. По логике работы необходимо, чтобы все устройства могли и слушать и передавать данные в шину. 

Насколько я понимаю CAN асинхронная шина. Возможно ли менять режим работы вышеуказанного модуля программно, с ведомого на ведущий и обратно, при необходимости?

Можно конечно использовать RS-485, но вроде как сейчас от неё отказываются в пользу CAN (ну может я ошибаюсь).

 

sadman41
Offline
Зарегистрирован: 19.10.2016

В CAN нет ведущего/ведомого. Все равноправные (слышат траффик и могут передавать). Впрочем, в сущности, RS485 - тоже, но он коллизии не разруливает. Ведущий/ведомый в данной ситуации - это вопрос архитектуры прикладного уровня, а не транспортного.

zebox
Offline
Зарегистрирован: 08.02.2015

Т.е. CAN полностью синхронный протокол? Все коллизии регулируются на высоком уровне логикой программы?

sadman41
Offline
Зарегистрирован: 19.10.2016

zebox пишет:

Все коллизии регулируются на высоком уровне логикой программы?

CAN коллизии устраняет на транспортном уровне. RS485 - на прикладном.

С архитектурой ведущий/ведомый это не связано никакак.

zebox
Offline
Зарегистрирован: 08.02.2015

Понял! Спасибо Вам ОГРОМНОЕ!

zebox
Offline
Зарегистрирован: 08.02.2015

Еще вопросик, по схеме подключения...

Как собрать шину из ардуин (5 шт) на таком модуле? Везде схемы соединения  двух устройств, но у меня задача собрать шину из 5 штук.

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Параллельно на пару проводов (я на UTP вешаю). На крайних замкнуть джампер "терминатор".

zebox
Offline
Зарегистрирован: 08.02.2015

sadman41 пишет:

Параллельно на пару проводов (я на UTP вешаю). На крайних замкнуть джампер "терминатор".

А джампер терминатор это J3 или J1?

А к RPi этот модуль подключить возможно? Или там другие шилды?

upd: про RPi нашёл мануал https://vimtut0r.com/2017/01/17/can-bus-with-raspberry-pi-howtoquickstar...

sadman41
Offline
Зарегистрирован: 19.10.2016

Сбоку который. Другой - это то же самое, что и винтовой коннектор.

zebox
Offline
Зарегистрирован: 08.02.2015

Понятно. Спасибо!