Ok, this will be a new series of blogs taking you and me from sending a CAN message between two Arduinos. First without interrupts on the receiver and then with. Then with the same hardware, I will send a proper formatted CANaerospace message. CAN and CANaerospace are almost the same.

They are both democratic networks which means that any node can transmit to other nodes, hence there is no master-slave relationship.  While most of the demos show a master and a slave. The circuit below is a typical hook up for either CANbus or CANaerospace. But in its present configuration, it is a SLAVE-MASTER. Also since  CANaerospace uses the ISO 7 layer module, you can create a socket.CAN ie you can put CANaerospace over TCP.

BYTECANbusCANaerospace
0canMsg.can_id = 0x36;Node_ID = 324
1canMsg.can_dlc = 8;UCAR = SHORT
2canMsg.Data[0] = h;SVC_ID = 1 (OK)
3canMsg.Data[1] = t;

MESS_ID starts at 1 and

increments thereafter

4canMsg.Data[2] = 0x00;DATA
5canMsg.Data[3] = 0x00;
6canMsg.Data[4] = 0x00;
7canMsg.Data[5] = 0x00;
8canMsg.Data[6] = 0x00;Not Applical
canMsg.Data[7] = 0x00;

 

 

Since CANaerospace IDs are predefined where 324 is Static Air Temperature, I will only worry about temperature.  I will only be using standard hardware.

PartsList:

  • Arduino Mega 256 x 2
  • MCP2515 CANbus Modules x 2 which are attached to the SPI bus.

 

Articles that I have used.

  • Arduino CAN Tutorial - Interfacing MCP2515 CANbus Module with Arduino. [Pramoth Thangavel] 7/16/2019
  • Using Interrupt to Read Data from CAN Controller in Arduino [Prabakaran P.M]  4/22/2016
  • Portable Implementation of CANaerospace protocol, targeted for microcontrollers and Linux. [Pavel Kirienko]