Distribution of Arduino driver for MCP2517FD CAN controller (CANFD mode)

Overview

MCP2517FD and MCP2518FD CAN Controller Library for Arduino (in CAN FD mode)

Compatibility with the other ACAN libraries

This library is fully compatible with the Teensy 3.x ACAN library https://github.com/pierremolinaro/acan, ACAN2515 library https://github.com/pierremolinaro/acan2515, and the ACAN2517 library https://github.com/pierremolinaro/acan2517, it uses a very similar API.

ACAN2517FD library description

ACAN2517FD is a driver for the MCP2517FD and MCP2518FD CAN Controllers, in CAN FD mode. It runs on any Arduino compatible board.

The ACAN2517 library handles the MCP2517FD and MCP2518FD CAN Controller, in CAN 2.0B mode.

The library supports the 4MHz, 20 MHz and 40 MHz oscillator clock.

The driver supports many bit rates: the CAN bit timing calculator finds settings for standard 62.5 kbit/s, 125 kbit/s, 250 kbit/s, 500 kbit/s, 1 Mbit/s, but also for an exotic bit rate as 727 kbit/s. If the desired bit rate cannot be achieved, the begin method does not configure the hardware and returns an error code.

Driver API is fully described by the PDF file in the extras directory.

Demo Sketch

The demo sketch is in the examples/LoopBackDemo directory.

Configuration is a four-step operation.

  1. Instanciation of the settings object : the constructor has one parameter: the wished CAN bit rate. The settings is fully initialized.
  2. You can override default settings. Here, we set the mRequestedMode property to true, enabling to run demo code without any additional hardware (no CAN transceiver needed). We can also for example change the receive buffer size by setting the mReceiveBufferSize property.
  3. Calling the begin method configures the driver and starts CAN bus participation. Any message can be sent, any frame on the bus is received. No default filter to provide.
  4. You check the errorCode value to detect configuration error(s).
static const byte MCP2517_CS  = 20 ; // CS input of MCP2517FD, adapt to your design
static const byte MCP2517_INT = 37 ; // INT output of MCP2517FD, adapt to your design

ACAN2517FD can (MCP2517_CS, SPI, MCP2517_INT) ; // You can use SPI2, SPI3, if provided by your microcontroller

void setup () {
  Serial.begin (9600) ;
  while (!Serial) {}
  Serial.println ("Hello") ;
 // Arbitration bit rate: 125 kbit/s, data bit rate: 500 kbit/s
  ACAN2517FDSettings settings (ACAN2517FDSettings::OSC_4MHz10xPLL,
                               125 * 1000, ACAN2517FDSettings::DATA_BITRATE_x4) ;
  settings.mRequestedMode = ACAN2517FDSettings::InternalLoopBack ; // Select loopback mode
  const uint32_t errorCode = can.begin (settings, [] { can.isr () ; }) ;
  if (0 == errorCode) {
    Serial.println ("Can ok") ;
  }else{
    Serial.print ("Error Can: 0x") ;
    Serial.println (errorCode, HEX) ;
  }
}

Now, an example of the loop function. As we have selected loop back mode, every sent frame is received.

static unsigned gSendDate = 0 ;
static unsigned gSentCount = 0 ;
static unsigned gReceivedCount = 0 ;

void loop () {
  CANFDMessage message ;
  if (gSendDate < millis ()) {
    message.id = 0x542 ;
    const bool ok = can.tryToSend (message) ;
    if (ok) {
      gSendDate += 2000 ;
      gSentCount += 1 ;
      Serial.print ("Sent: ") ;
      Serial.println (gSentCount) ;
    }
  }
  if (can.receive (message)) {
    gReceivedCount += 1 ;
    Serial.print ("Received: ") ;
    Serial.println (gReceivedCount) ;
  }
}

CANFDMessage is the class that defines a CAN FD message. The message object is fully initialized by the default constructor. Here, we set the id to 0x542 for sending a standard data frame, without data, with this identifier.

The can.tryToSend tries to send the message. It returns true if the message has been sucessfully added to the driver transmit buffer.

The gSendDate variable handles sending a CAN message every 2000 ms.

can.receive returns true if a message has been received, and assigned to the messageargument.

Use of Optional Reception Filtering

The MCP2517 CAN Controller implements 32 acceptance masks and 32 acceptance filters. The driver API enables you to fully manage these registers.

For example (LoopBackDemoTeensy3xWithFilters sketch):

  ACAN2517FDSettings settings (ACAN2517FDSettings::OSC_4MHz10xPLL, 125 * 1000) ;
  settings.mRequestedMode = ACAN2517FDSettings::InternalLoopBack ; // Select loopback mode
  ACAN2517Filters filters ;
// Filter #0: receive standard frame with identifier 0x123
  filters.appendFrameFilter (kStandard, 0x123, receiveFromFilter0) ;
// Filter #1: receive extended frame with identifier 0x12345678
  filters.appendFrameFilter (kExtended, 0x12345678, receiveFromFilter1) ; 
// Filter #2: receive standard frame with identifier 0x3n4
  filters.appendFilter (kStandard, 0x70F, 0x304, receiveFromFilter2) ;
  const uint32_t errorCode = can.begin (settings, [] { can.isr () ; }, filters) ;

These settings enable the acceptance of standard frames whose identifier is 0x123, extended frames whose identifier is 0x12345678, and data frames whose identifier is 0x304, 0x314, ..., 0x3E4, 0x3F4.

The receiveFromFilter0, receiveFromFilter1, receiveFromFilter2 functions are call back functions, handled by the can.dispatchReceivedMessage function:

void loop () {
  can.dispatchReceivedMessage () ; // Do not use can.receive any more
  ...
}
Comments
  • Operation Mode is not changing using arduino uno Loopback example

    Operation Mode is not changing using arduino uno Loopback example

    Hi, many thanks for this library, I am using an Arduino uno and the LoopBackDemo example and when the REQOP is changed to 010 (Set Internal Loopback mode) nothing happens and the deadline is reached. I checked the MODIF flag and it keeps in 0 and the OPMOD always keeps in 100 (Configuration mode). The SPI communication is working and I Set the MODIE bit to enable Mode change Interruptions. Is the arduino uno the one that should take care of the interruption or when the REQOP is changed the MCP2517FD controller should do it by it self? Do you know what could it be for the OPMOD don't change? Thanks. Best Regards, Gabriel Pinheiro.

    opened by gab7891 21
  • 10K ohm resistor on CS pin

    10K ohm resistor on CS pin

    Hi, where should I connect the 10k ohm resistor? I see in the manual that between vcc and CS line, but I couldnt find exactly what vcc pin is. is it 3.3v pin or 5v pin on mcp2517fd?

    opened by lalitheranti 12
  • Error sending a message over CAN

    Error sending a message over CAN

    Hi I am using examples of the project and using MCP2517fd breakout board with Adafruit itsybitsy M4 express to generate CAN messages. But I am getting the following output after changing certain thinngs in example code:

    Bit Rate prescaler: 1 Arbitration Phase segment 1: 31 Arbitration Phase segment 2: 8 Arbitration SJW:8 Actual Arbitration Bit Rate: 1000000 bit/s Exact Arbitration Bit Rate ? yes Arbitration Sample point: 80% Data Phase segment 1: 7 Data Phase segment 2: 2 Data SJW:2 TDCO:7 Even, error code 0x1 Sent: 0, received: 0, errors 0, op mode 0, rcved buffer 0, overflows 0 Sent: 0, received: 0, errors 0, op mode 0, rcved buffer 0, overflows 0 Sent: 0, received: 0, errors 0, op mode 0, rcved buffer 0, overflows 0 Sent: 0, received: 0, errors 0, op mode 0, rcved buffer 0, overflows 0 Sent: 0, received: 0, errors 0, op mode 0, rcved buffer 0, overflows 0 Sent: 0, received: 0, errors 0, op mode 0, rcved buffer 0, overflows 0 Sent: 0, received: 0, errors 0, op mode 0, rcved buffer 0, overflows 0 Sent: 0, received: 0, errors 0, op mode 0, rcved buffer 0, overflows 0 Sent: 0, received: 0, errors 0, op mode 0, rcved buffer 0, overflows 0 Sent: 0, received: 0, errors 0, op mode 0, rcved buffer 0, overflows 0 Sent: 0, received: 0, errors 0, op mode 0, rcved buffer 0, overflows 0 Sent: 0, received: 0, errors 0, op mode 0, rcved buffer 0, overflows 0 Sent: 0, received: 0, errors 0, op mode 0, rcved buffer 0, overflows 0

    Please help. what else and what would be wrong possibly

    opened by lalitheranti 12
  • CANMessage in CANMessage.h

    CANMessage in CANMessage.h

    Hello, is the following addition possible? Also insert the signed int-variables in the union? I add this in every version

    public : union { uint64_t data64 ; // Caution: subject to endianness int64_t data_s64 ; // Caution: subject to endianness << uint32_t data32 [2] ; // Caution: subject to endianness int32_t data_s32 [2] ; // Caution: subject to endianness << uint16_t data16 [4] ; // Caution: subject to endianness int16_t data_s16 [4] ; // Caution: subject to endianness << ...

    opened by tomtom0707 9
  • Can't loopback new library with an arduino mega

    Can't loopback new library with an arduino mega

    Hello, I tried the sample test LoopBackDemoArduinoUno, before the new release it's ok, But now i've a Configuration error 0x1 and i can't received anything. Send return no error. Can you help me ?

    Thank you

    opened by E-nodev 8
  • SPI doesn't work on Arduino UNO

    SPI doesn't work on Arduino UNO

    Thanks a lot Mr.Molinaro,

    I'm trying to use 2517FD with an ATMega328P (arduino UNO), but it seems to SPI doesn´t work. Could you help me please?

    Many thanks! Jan

    Arduino 1.8.8 I'm using standard SPI.h Arduino library.

    Communication on serial monitor:

    Hello Error Can: 0x4 Sent: 1

    No communication on MOSI/MISO/SCK ! (measured by oscilloscope). By using direct SPI communication only (without your ACAN2517FD.h driver) SPI is working (measured by oscilloscope).

    PINs: MOSI - PCINT3 (11) MISO - PCINT4 (12) SCK - PCINT5 (13) CS - PCINT2 (10) INT - PCINT19 (3)

    Standard SPI PINs -> I'm using SPI.begin () ;

    Used 20MHz crystal.

    CODE: ( from your examples - only for HW function testing)

    #include <ACAN2517FD.h> #include <SPI.h>

    static const byte MCP2517_CS = 10 ; // CS input of MCP2517 static const byte MCP2517_INT = 3 ; // INT output of MCP2517

    ACAN2517FD can (MCP2517_CS, SPI, MCP2517_INT) ;

    void setup () { pinMode(A0, OUTPUT); //LED1 pinMode(A1, OUTPUT); //LED2 pinMode(A5, OUTPUT); //PC5
    digitalWrite (A5, LOW) ; //PC5 - CAN_STB transceiver (Normal mode)

    Serial.begin (9600) ;
    SPI.begin () ;    
    while (!Serial) {}
    Serial.println ("Hello") ;
    // Arbitration bit rate: 125 kbit/s, data bit rate: 500 kbit/s
    ACAN2517FDSettings settings (ACAN2517FDSettings::OSC_20MHz, 125 * 1000, ACAN2517FDSettings::DATA_BITRATE_x4) ;
    settings.mRequestedMode = ACAN2517FDSettings::InternalLoopBack ; // Select loopback mode
    const uint32_t errorCode = can.begin (settings, [] { can.isr () ; }) ;
    if (0 == errorCode) {
      Serial.println ("Can ok") ;
    } else {
      Serial.print ("Error Can: 0x") ;
      Serial.println (errorCode, HEX) ;
    }
    

    }

    static unsigned gSendDate = 0 ; static unsigned gSentCount = 0 ; static unsigned gReceivedCount = 0 ;

    void loop () { CANFDMessage message ; if (gSendDate < millis ()) { message.id = 0x542 ; const bool ok = can.tryToSend (message) ; if (ok) { gSendDate += 2000 ; gSentCount += 1 ; Serial.print ("Sent: ") ; Serial.println (gSentCount) ; } } if (can.receive (message)) { gReceivedCount += 1 ; Serial.print ("Received: ") ; Serial.println (gReceivedCount) ; } }

    opened by zetora 8
  • Setting configuration error 0x10000 with ESP32 and MCP2518FD Click

    Setting configuration error 0x10000 with ESP32 and MCP2518FD Click

    I'm trying to add CAN FD to my ESP32 project with a Mikroe MCP2518FD CLICK. I am running the LoopBackDemoESP32 example. My only changes were the pin numbers and the oscillator frequency.

    #define LED_BUILTIN 17

    static const byte MCP2517_SCK = 18 ; // SCK input of MCP2517FD static const byte MCP2517_MOSI = 19 ; // SDI input of MCP2517FD static const byte MCP2517_MISO = 23 ; // SDO output of MCP2517FD

    static const byte MCP2517_CS = 5 ; // CS input of MCP2517FD static const byte MCP2517_INT = 14 ; // INT output of MCP2517FD

    and

    ACAN2517FDSettings settings (ACAN2517FDSettings::OSC_40MHz, 125 * 1000, DataBitRateFactor::x1) ;

    The MCP2518FD is connected like this: image

    When I go the terminal I get a config error 0x10000 followed by a bunch of Sent packets, but none Received: 18:16:55.690 -> rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) 18:16:55.690 -> configsip: 0, SPIWP:0xee 18:16:55.690 -> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 18:16:55.690 -> mode:DIO, clock div:1 18:16:55.690 -> load:0x3fff0018,len:4 18:16:55.690 -> load:0x3fff001c,len:1216 18:16:55.690 -> ho 0 tail 12 room 4 18:16:55.690 -> load:0x40078000,len:9720 18:16:55.690 -> ho 0 tail 12 room 4 18:16:55.690 -> load:0x40080400,len:6352 18:16:55.690 -> entry 0x400806b8 18:16:55.861 -> sizeof (ACAN2517FDSettings): 44 bytes 18:16:55.861 -> Configure ACAN2517FD 18:16:55.861 -> MCP2517FD RAM Usage: 2016 bytes 18:16:55.861 -> Configuration error 0x10000 18:16:55.861 -> Sent: 1 18:16:57.794 -> Sent: 2 18:16:59.797 -> Sent: 3 18:17:01.807 -> Sent: 4 18:17:03.779 -> Sent: 5 18:17:05.837 -> Sent: 6

    opened by turbotom93 7
  • Possible Bug regarding Retransmission Setting

    Possible Bug regarding Retransmission Setting

    The datasheet of the MCP2518FD says on page 27:

    RTXAT: Restrict Retransmission Attempts bit( 1) 1 = Restricted retransmission attempts, CiFIFOCONm.TXAT is used 0 = Unlimited number of retransmission attempts, CiFIFOCONm.TXAT will be ignored

    Current code says: data8 = mUsesTXQ ? (1 << 4) : 0x00 ; // Bug fix in 1.1.4 (thanks to danielhenz) I changed it to

    data8 = 0x01 ; //Enable RTXAT to limit retransmissions (Flole)
    data8 |= mUsesTXQ ? (1 << 4) : 0x00 ; // Bug fix in 1.1.4 (thanks to danielhenz)
    

    Do I see that correctly that right now RTXAT is not set, causing the retransmissions to be always unlimited and the code should be modified just as I did it above?

    opened by Flole998 4
  • Configuration error 0x20000

    Configuration error 0x20000

    Goood job... Thanks a lot Mr.Pierremolinaro #^_^#

    I'm trying to send & receive sensors data between tow nodes ESP32 in FD mode. I don't know how to append a specific data to frame when it declared: CANFDMessage frame ; when I uploaded the same example sketch to each ESP, serial monitor appears this lines without any received frame:

    sizeof (ACAN2517FDSettings): 44 bytes Configure ACAN2517FD MCP2517FD RAM Usage: 2016 bytes Configuration error 0x20000 Sent: 1 Sent: 2 Sent: 3 Sent: 4 Sent: 5 Sent: 6 Sent: 7 Sent: 8 Sent: 9

    and continues sending...

    opened by ferasterkawi 4
  • Issues initializing ACan2517FD with Arduino Due

    Issues initializing ACan2517FD with Arduino Due

    My code for initialization is:

        # define MCP2517_CS 9
        # define MCP2517_INT 2
        canController = new ACAN2517FD{MCP2517_CS, SPI, MCP2517_INT};
         
         // Arbitration bit rate: 125 kbit/s, data bit rate: 500 kbit/s
        ACAN2517FDSettings settings{ACAN2517FDSettings::OSC_40MHz, 125 * 1000, ACAN2517FDSettings::DATA_BITRATE_x4};
        uint32_t errorCode{0};
        for (uint8_t i = 0; i < CAN_INITIALIZATION_RETRY_COUNT; i++) {
            errorCode = canController->begin (settings, [] { canController->isr(); });
            if (errorCode == 0) {
                SerialUSB.println ("Can OK") ;
                return errorCode;
            } else{
                SerialUSB.print ("Error Can: 0x") ;
                SerialUSB.println (errorCode, HEX) ;
                delay(50);
            }
        }
    

    I am using the following breakout board: CAN with the following wiring: Arduino | CAN-FD 50 (MOSI) -> DO 51 (MISO) -> DI 52 (SCK) -> SCK 5v -> 5v 3.3v -> 3.3v 9 (CS) -> CS 2 (INT) -> INT

    And I get the error code 1 (kRequestedConfigurationModeTimeOut). I have the jumper on the board set to 3.3v voltage levels. Can you see anything I can try or something I'm missing? Does CLKO need to be landed somewhere? I also don't know what the oscillator is, but I've tried every one of the ACan2517FDSettings::Oscillator enums and get the same result. I have also tried switching DO/DI. Thanks.

    opened by tlewiscpp 3
  • No data rate switching in CAN FD mode

    No data rate switching in CAN FD mode

    Bonjour M. Molinaro and thank you for your work!

    I tried to establish a CAN FD communication, using two Arduino Nano clones and two MCP2517FD click boards from Mikroelektronika, connected with a short DB9 cable (driver version 1.1.3). One is sender only, the other one receiver only.

    It works perfectly transmitting some CAN FD Messages with 64 bytes payload, up to 1Mbit/s. But the data rate for the payload is not switched, as I can view on the scope. Even 125kbit/s arbitration rate and a x2 factor for data rate is ignored.

    I found out that the the method ACAN2517FD::appendInControllerTxFIFO() is called, but the BRS bit is not set (as in the method ), so I copied the lines

    if (mHasDataBitRate) { // Copied from sendViaTXQ()
      data |= 1 << 6 ; // Set BRS bit
    } 
    

    into this method.

    Now, the sending controller seems to increase the data rate for the first bit and fails immediately. This is done exactly 32 times in a fast sequence, until it gives up. There is no error state, I can try to send the frames cyclically and it appears on the bus. Only, there is no valid data transmission.

    Did you try the data rate switch using two MCP2517FD controllers? Am I missing an important configuration detail?

    I did only slight modifications to your loopback example code, e.g.

    ACAN2517FDSettings settings (ACAN2517FDSettings::OSC_40MHz, 125UL * 1000UL, ACAN2517FDSettings::DATA_BITRATE_x4) ;
    
    //settings.mRequestedMode = ACAN2517FDSettings::InternalLoopBack ; // No loopback here!
    
    settings.mDriverTransmitFIFOSize = 2;
    settings.mDriverReceiveFIFOSize = 2;
     
    

    By the way: Shouldn‘t it be

    d = mUsesTXQ ? (1 << 4) : 0x00 ; instead of

    d = mUsesTXQ ? 0x04 : 0x00 ;

    in ACAN2517FD::begin() ?

    Kind regards,

    Daniel

    opened by danielhenz 3
  • Avoid race condition during interrupt attachment

    Avoid race condition during interrupt attachment

    We used to attach first and then register our interrupt with the SPI library. In between these steps an interrupt could occur causing issues. So we should first register it with the SPI library and then attach it.

    opened by Flole998 0
  • Optionally disable MCP2517FD workarounds

    Optionally disable MCP2517FD workarounds

    By default this does nothing, when enabling the compile-time-define DISABLEMCP2517FDCOMPAT it no longer disables interrupts during SPI transactions which slightly increases performance and avoids delaying interrupts (which could be problematic on dimmers for example as they may start flickering).

    I took this chance to move the duplicate enable/disable code to it's own function that is always inlined, so this just improved readability but shouldn't affect the generated machine code at all.

    This new option should be added to the documentation PDF aswell.

    Fixes: #26

    opened by Flole998 0
  • Trying to run on Raspberry Pico

    Trying to run on Raspberry Pico

    Hi

    First, thank you Pierre for this great, very well documented, library.

    It runs very fine on Arduino UNO + Mikroe Click board MCP2518FD.

    I'm now trying to run the library on Raspberry PICO using Arduino IDE. FYI, I have run severall other codes, initially intented to Arduino boards, on Pico with success.

    But with acan2517FD, no way. When I upload LoopBackDemoArduinoUnoNoInt.ino (with pins adapt) => no compiler issue, code uploaded with success but I always get 0X1 errorCode...

    I have tried many many many things : with or without interrupts, Teensy3.1 scketch (32bit), tried to adapt bit rates, etc, etc but no success...

    Could someone give me a way to adapt LoopBackDemoArduinoUnoNoInt program to run on Pico.

    Thanks !

    opened by startOfStars 5
  • noInterrupts() and Interrupts() call potentially unneccesary

    noInterrupts() and Interrupts() call potentially unneccesary

    I'm currently looking into code similar to this which can be found all over the library:

    https://github.com/pierremolinaro/acan2517FD/blob/6ee34ab8408225a1a126c1b2e49b0c67ad4c365a/src/ACAN2517FD.cpp#L726

    As far as I can see, as we are using attachInterrupt, the mSPI.beginTransaction (mSPISettings) ; a few lines before is taking care of that:

    If your program will perform SPI transactions within an interrupt, call this function to register the interrupt number or name with the SPI library. This allows SPI.beginTransaction() to prevent usage conflicts. Note that the interrupt specified in the call to usingInterrupt() will be disabled on a call to beginTransaction() and re-enabled in endTransaction().

    Looking at the SPI Library that seems to be the case: https://github.com/arduino/ArduinoCore-avr/blob/24e6edd475c287cdafee0a4db2eb98927ce3cf58/libraries/SPI/src/SPI.h#L181 As we are using attachInterrupt() the interruptMode is greater than 0 so it should not be necessary to do this.

    Unless someone has any reason to not do so I would suggest to remove the noInterrupts() and Interrupts() calls. As far as the taskDISABLE_INTERRUPTS () ; for the ESP is concerned I think this should be moved before the beginTransaction() to prevent a race condition there. An interrupt could occur after the beginTransaction() call or in the middle of it messing up the settings. Same thing for the enabling, that should be done after the endTransaction().

    These changes should remove quite some instructions from each SPI transaction, thus increasing the performance.

    opened by Flole998 1
  • Software Buffer is overflowing instead of filling the hardware buffer

    Software Buffer is overflowing instead of filling the hardware buffer

    I think the current way of how the software/hardware buffers are handled is not ideal and I would suggest doing the following: If the software buffers are full do not simply drop the hardware buffers but instead allow them to fill up further by not reading them. I think this only requires a simple change:

    https://github.com/pierremolinaro/acan2517FD/blob/f0b69f567a3118c361166f3bf4c03d17b6d72bb3/src/ACAN2517FD.cpp#L838

    Here a isFull check for the buffer needs to be appended. As the bits are for "interrupt pending" it shouldn't matter if we do read the register but don't fetch the data from the FIFO and the interrupt should still be pending. As the return value of isr_core is telling the calling code if it should run it again it is important that in this case "false" is returned so we are not deadlocking. I am not sure how well this goes with the attachInterrupt though as LOW would constantly re-trigger the isr as the pin is never rising, so maybe we would have to temporarily disable interrupts in that case and re-enable them once dispatchReceivedMessage has been called as then we definitely have space in the software buffer again.

    Suggestions/concerns/ideas are welcome!

    opened by Flole998 7
  • SPI connection with Arduino Nano 33 BLE

    SPI connection with Arduino Nano 33 BLE

    Hello! First of all, thanks a lot for the library.

    I currently have a MCP2518FD-Click and i wanted to use it along with my Arduino 33 nano BLE.

    I already tried the example LoopBackDemoArduinoUno with an Arduino Uno and everything works fine.

    But when i switch to the Arduino Nano the code seems to stuck (Arduino IDE stops working as long as i don't disconnect the Arduino from the USB) when calling the function "writeRegister8" inside ACAN2517FD::begin. Could it be something wrong with the SPI communication? I double checked the wiring and it seems to be correct (it's equal to the one on my Arduino Uno).

    Also, i'm using the MCP2518 with jumper on VIO=3.3 (used a shifter with arduino UNO) and i'm connecting both 3.3V and 5V.

    Thanks for your time!

    opened by Marittia 5
Releases(2.1.10)
Owner
Pierre Molinaro
Pierre Molinaro
CAN / CANFD Arduino Library for Teensy 4.0

CAN Library for Teensy 4.0 / 4.1 It handles Controller Area Network (CAN) for CAN1, CAN2 and CAN3, and Controller Area Network with Flexible Data (CAN

Pierre Molinaro 12 Dec 9, 2022
MCP2515 CAN Controller Driver for Arduino

MCP2515 CAN Controller Library for Arduino Compatibility with the ACAN library This library is fully compatible with the Teensy 3.x ACAN library https

Pierre Molinaro 47 Dec 13, 2022
Arduino library for the MCP2515 CAN Controller

MCP2515 CAN Controller Library for Arduino Compatibility with the ACAN library This library is fully compatible with the Teensy 3.x ACAN library https

Pierre Molinaro 4 Dec 18, 2022
Unified interface for selecting different implementations for communicating with a TM1637 LED controller chip on Arduino platforms

AceTMI Unified interface for communicating with a TM1637 LED controller chip on Arduino platforms. The code was initially part of the AceSegment libra

Brian Park 0 Feb 2, 2022
CAN Driver for Teensy 3.1 / 3.2, 3.5 and 3.6

CAN Library for Teensy 3.1 / 3.2, 3.5, 3.6 Compatibility with the ACANxxxx libraries This library is fully compatible with the MCP2515 CAN Controller

Pierre Molinaro 10 Dec 9, 2022
An implementation of a ANT driver for Arduino, Mbed and ESP-IDF

ant-arduino Arduino library for communicating with ANT radios, with support for nRF51 devices. This library Includes support for the majority of packe

Curtis Malainey 79 Dec 4, 2022
Arduino library for controlling the MCP2515 in order to receive/transmit CAN frames.

107-Arduino-MCP2515 Arduino library for controlling the MCP2515 in order to receive/transmit CAN frames. This library is prepared to interface easily

107-Systems 51 Nov 16, 2022
Arduino Arduino library for the CloudStorage server project. The library provides easy access to server-stored values and operations.

Arduino-CloudStorage Arduino/ESP8266 library that allows you to easly store and retreive data from a remote (cloud) storage in a key/value fashion. Cl

Gil Maimon 7 Jan 30, 2022
Arduino library for making an IHC in or output module using an Arduino

Introduction This is an Arduino library for making an IHC in or output module using an Arduino. (IHC controller is a home automation controller made b

Jens Østergaard Nielsen 2 Mar 26, 2020
ArduinoIoTCloud library is the central element of the firmware enabling certain Arduino boards to connect to the Arduino IoT Cloud

ArduinoIoTCloud What? The ArduinoIoTCloud library is the central element of the firmware enabling certain Arduino boards to connect to the Arduino IoT

Arduino Libraries 64 Dec 16, 2022
Leonardo Modifier Keys Controller

Leonardo Modifier Keys Controller An Arduino Leonardo powered box that allows you to press the modifier keys of the computer. Description An USB devic

Generic Institute 1 May 23, 2022
ESP8266 MQTT Sharp-fu-y30 air purifier controller

ESP8266 MQTT Sharp-fu-y30 air purifier controller Disclaimer Note: if you decide to do those changes to your air purifier, you take all the responsibi

xis 2 Dec 6, 2022
Driver for Texas Instrument's ADS1115 analog to digital converter IC.

Driver for Texas Instrument's ADS1115 analog to digital converter IC. It's somewhat compatible with the ADS1113 and ADS1114 variants. More details in the official datasheet

Tamás Ruszka 0 Sep 27, 2021
An ESP32 CAN 2.0B library

CAN Library for ESP32 ACAN_ESP32 library description ACAN_ESP32 is a driver for the CAN module built into the ESP32 microcontroller. The driver suppor

Pierre Molinaro 11 Dec 9, 2022
Arduino library for interfacing with any GPS, GLONASS, Galileo or GNSS module and interpreting its NMEA messages.

107-Arduino-NMEA-Parser Arduino library for interfacing with any GPS, GLONASS, Galileo or GNSS module and interpreting its NMEA messages. This library

107-Systems 15 Jan 1, 2023
Arduino library for providing a convenient C++ interface for accessing UAVCAN.

107-Arduino-UAVCAN Arduino library for providing a convenient C++ interface for accessing UAVCAN (v1.0-beta) utilizing libcanard. This library works f

107-Systems 54 Jan 2, 2023
A RESTful environment for Arduino

aREST Overview A simple library that implements a REST API for Arduino & the ESP8266 WiFi chip. It is designed to be universal and currently supports

null 1.2k Dec 29, 2022
Arduino web server library.

aWOT Arduino web server library. Documentation 1. Getting started Hello World Basic routing Application generator Serving static files 2. Guide Routin

Lasse Lukkari 246 Jan 4, 2023
Arduino, esp32 and esp8266 library for ABB (ex PowerOne) Aurora Inverter, implement a full methods to retrieve data from the Inverter via RS-485

ABB Aurora protocol You can refer the complete documentation on my site ABB Aurora PV inverter library for Arduino, esp8266 and esp32 I create this li

Renzo Mischianti 22 Nov 22, 2022