Skip to content

Files

Latest commit

author
Anton N
Jan 16, 2017
db88896 · Jan 16, 2017

History

History

ru

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Jan 16, 2017
Mar 20, 2016

README.md

CanHacker (lawicel) CAN адаптер на Arduino + MCP2515

Используется эту Библиотеку для связи с 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)

Установка библиотеки

  1. Установите библиотеку MCP2515
  2. Скачайте ZIP архив https://github.com/autowp/arduino-canhacker/archive/master.zip
  3. В меню Arduino IDE: Sketch -> Include Library... -> Add .ZIP Library...
  4. Перезапустите 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

Библиотека реализует его не полностью. Поддерживаемые комманды приведены здесь.

Содействие

Приветствуются любые способы участия в коде.