Используется эту Библиотеку для связи с MCP2515
Резлизует взаимодействие с CAN шиной через микросхему MCP2515 по протоколу CanHacker (lawicel).
- передача и прием can фреймов
- поддержка стандартных (11 бит) и расширенных (29 бит) фреймов
- поддержка remote фреймов (RTR)
- поддержка фильтра по ID (маска + код)
- интерфейс, работающий со Stream: возможность работы с Serial, SoftwareSerial, Ethernet и другими интерфейсами
- поддерживаемые скорости can шины от 10Kbps до 1Mbps
- поддерживаются модули с разными кварцами - 8, 16, 20 МГц. По умолчанию установлена частота 16 МГц, используйте функцию setClock если у вас модуль с другим кварцем.
- поддержка CanHacker (приложение для Windows)
- поддержка CANreader (приложение для Android)
- Установите библиотеку MCP2515
- Скачайте ZIP архив https://github.com/autowp/arduino-canhacker/archive/master.zip
- В меню Arduino IDE: Sketch -> Include Library... -> Add .ZIP Library...
- Перезапустите Arduino IDE, чтобы увидеть "canhacker" в списке библиотек и примеров
Протестировано с Arduino Nano. На Arduino Uno при работе через CanHacker для Windows, есть проблема с слишком долгой перезагрузкой и потерей первой комманды
Пример
#include <can.h>
#include <mcp2515.h>
#include <CanHacker.h>
#include <CanHackerLineReader.h>
#include <lib.h>
#include <SPI.h>
const int SPI_CS_PIN = 10;
const int INT_PIN = 2;
CanHackerLineReader *lineReader = NULL;
CanHacker *canHacker = NULL;
void setup() {
Serial.begin(115200);
while (!Serial);
SPI.begin();
softwareSerial.begin(115200);
Stream *interfaceStream = &Serial;
canHacker = new CanHacker(interfaceStream, null, SPI_CS_PIN);
lineReader = new CanHackerLineReader(canHacker);
pinMode(INT_PIN, INPUT);
}
void loop() {
canHacker->processInterrupt();
lineReader->process();
}
Протокол CanHacker (lawicel) описан в документации к приложению CanHacker
Библиотека реализует его не полностью. Поддерживаемые комманды приведены здесь.
Приветствуются любые способы участия в коде.