CANdleduino#
Library for communication with drives for Arduino (AVR and Renesas) and Teensy >4.0.
Note
AVR based Arduino boards don’t support native CAN, therefore Candleduino supports MCP2515 via SPI.
It can be included into a project via header-file:
#include "Candleduino.hpp"
Functionalities#
Main features of MD module include:
Creating MDs assigned to instance with unique IDs
Managing internal registers of MDs
Provides helper functions for managing MDs, for example:
getPosition(),zero(),setTargetPosition()
Usage#
uint16_t ID = 100; //ID of the MD drive
MD md(ID);
// MD md(ID, CS_PIN); for custom CS_PIN (Arduino AVR and MCP2515), default is 9
// FlexCAN_T4FD<CAN3, RX_SIZE_256, TX_SIZE_16> CANbus; //CANFD
//or
// FlexCAN_T4<CAN3, RX_SIZE_256, TX_SIZE_16> CANbus; //CAN2.0
// MD md(ID, &CANbus); for Teensy
md.init(); //initialize MD object
For basic communication there are predefined commands like:
md.blink();
md.getMosfetTemperature(float &temperature);
md.setPositionPIDparam(float kp, float ki, float kd, float integralMax);
...
For other registers it is recommended to use:
MD::Error_t MD::readRegister<T>(MD::Message<T> ®isterData)
MD::Error_t MD::writeRegister<T>(MD::Message<T> registerData)
MD::Error_t MD::readRegister<T>(uint16_t registerId, T ®isterData)
MD::Error_t MD::writeRegister<T>(uint16_t registerId, T registerData)
Or CANFD only use readRegisters or writeRegisters for multiple data frame
MD::Error_t MD::readRegisters<T>(MD::Message<T> registerData, ...)
MD::Error_t MD::writeRegisters<T>(MD::Message<T> registerData, ...)
For multiple MD drives user can create multiple MD object with unique ID’s.
Example:
MD md1(100);
MD md2(120);
md1.init();
md2.init();
md1.blink();
md2.blink();
Please look at register table to find more details about registers and their types.