Skip to content

Commit 8c8500a

Browse files
ansonhexPillar1989
authored andcommitted
Added Self send and receive + FD examples
1 parent c11356b commit 8c8500a

File tree

2 files changed

+160
-0
lines changed

2 files changed

+160
-0
lines changed
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
/*
2+
This is an example of sending and receiving on its own, connect two channels to each other using jumpers.
3+
*/
4+
5+
#include <SPI.h>
6+
#include "mcp2518fd_can.h"
7+
8+
/*SAMD core*/
9+
#ifdef ARDUINO_SAMD_VARIANT_COMPLIANCE
10+
#define SERIAL SerialUSB
11+
#else
12+
#define SERIAL Serial
13+
#endif
14+
15+
// Set SPI CS Pin according to your hardware
16+
// For Wio Terminal w/ MCP2518FD RPi Hat:
17+
// Channel 0 SPI_CS Pin: BCM 8
18+
// Channel 1 SPI_CS Pin: BCM 7
19+
// Interupt Pin: BCM25
20+
// *****************************************
21+
// For Arduino MCP2515 Hat:
22+
// SPI_CS Pin: D9
23+
24+
const int SPI_CS_PIN_SEND = 9;
25+
const int SPI_CS_PIN_RECEIVE = 10;
26+
27+
mcp2518fd CAN_SEND(SPI_CS_PIN_SEND);
28+
mcp2518fd CAN_RECEIVE(SPI_CS_PIN_RECEIVE);
29+
30+
unsigned char len = 0;
31+
unsigned char buf[8];
32+
33+
void setup() {
34+
SERIAL.begin(115200);
35+
while(!Serial); // wait for Serial
36+
37+
if (CAN_SEND.begin((byte)CAN_500K_1M) != 0 || CAN_RECEIVE.begin((byte)CAN_500K_1M) != 0) {
38+
Serial.println("CAN-BUS initiliased error!");
39+
while(1);
40+
}
41+
42+
SERIAL.println("CAN BUS Shield init ok!");
43+
}
44+
45+
unsigned char stmp[8] = {0, 0, 0, 0, 0, 0, 0, 0};
46+
void loop() {
47+
// send data: id = 0x00, standrad frame, data len = 8, stmp: data buf
48+
stmp[7] = stmp[7] + 1;
49+
if (stmp[7] == 100) {
50+
stmp[7] = 0;
51+
stmp[6] = stmp[6] + 1;
52+
53+
if (stmp[6] == 100) {
54+
stmp[6] = 0;
55+
stmp[5] = stmp[6] + 1;
56+
}
57+
}
58+
59+
CAN_SEND.sendMsgBuf(0x00, 0, 8, stmp);
60+
delay(100); // send data per 100ms
61+
SERIAL.println("CAN BUS sendMsgBuf ok!");
62+
63+
// ---------------------
64+
65+
if (CAN_MSGAVAIL == CAN_RECEIVE.checkReceive()) {
66+
// read data, len: data length, buf: data buf
67+
SERIAL.println("checkReceive");
68+
CAN_RECEIVE.readMsgBuf(&len, buf);
69+
// print the data
70+
for (int i = 0; i < len; i++) {
71+
SERIAL.print(buf[i]); SERIAL.print(" ");
72+
}
73+
SERIAL.println();
74+
}
75+
SERIAL.println("---LOOP END---");
76+
}
77+
78+
// END FILE
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
/*
2+
This is an example of sending and receiving (FD) on its own, connect two channels to each other using jumpers.
3+
*/
4+
5+
#include <SPI.h>
6+
#include "mcp2518fd_can.h"
7+
8+
/*SAMD core*/
9+
#ifdef ARDUINO_SAMD_VARIANT_COMPLIANCE
10+
#define SERIAL SerialUSB
11+
#else
12+
#define SERIAL Serial
13+
#endif
14+
15+
// Set SPI CS Pin according to your hardware
16+
// For Wio Terminal w/ MCP2518FD RPi Hat:
17+
// Channel 0 SPI_CS Pin: BCM 8
18+
// Channel 1 SPI_CS Pin: BCM 7
19+
// Interupt Pin: BCM25
20+
// *****************************************
21+
// For Arduino MCP2515 Hat:
22+
// SPI_CS Pin: D9
23+
24+
const int SPI_CS_PIN_SEND = 9;
25+
const int SPI_CS_PIN_RECEIVE = 2;
26+
27+
mcp2518fd CAN_SEND(SPI_CS_PIN_SEND);
28+
mcp2518fd CAN_RECEIVE(SPI_CS_PIN_RECEIVE);
29+
30+
void setup() {
31+
SERIAL.begin(115200);
32+
while(!Serial); // wait for Serial
33+
CAN_SEND.setMode(0);
34+
CAN_RECEIVE.setMode(0);
35+
36+
if (CAN_SEND.begin((byte)CAN_500K_1M) != 0 || CAN_RECEIVE.begin((byte)CAN_500K_1M) != 0) {
37+
Serial.println("CAN-BUS initiliased error!");
38+
while(1);
39+
}
40+
byte send_mode = CAN_SEND.getMode();
41+
byte receive_mode = CAN_RECEIVE.getMode();
42+
SERIAL.print("CAN BUS Send Mode = "); SERIAL.println(send_mode);
43+
SERIAL.print("CAN BUS Receive Mode = "); SERIAL.println(receive_mode);
44+
SERIAL.println("CAN BUS Shield init ok!");
45+
}
46+
47+
unsigned char stmp[64] = {0};
48+
unsigned char len = 0;
49+
unsigned char buf[64];
50+
51+
void loop() {
52+
stmp[63] = stmp[63] + 1;
53+
if (stmp[63] == 100) {
54+
stmp[63] = 0;
55+
stmp[62] = stmp[62] + 1;
56+
57+
if (stmp[62] == 100) {
58+
stmp[62] = 0;
59+
stmp[61] = stmp[62] + 1;
60+
}
61+
}
62+
63+
CAN_SEND.sendMsgBuf(0x00, 0, 15, stmp);
64+
delay(100); // send data per 100ms
65+
SERIAL.println("CAN BUS sendMsgBuf ok!");
66+
67+
// ---------------------
68+
69+
if (CAN_MSGAVAIL == CAN_RECEIVE.checkReceive()) {
70+
// read data, len: data length, buf: data buf
71+
SERIAL.println("checkReceive");
72+
CAN_RECEIVE.readMsgBuf(&len, buf);
73+
// print the data
74+
for (int i = 0; i < len; i++) {
75+
SERIAL.print(buf[i]); SERIAL.print("");
76+
}
77+
SERIAL.println();
78+
}
79+
SERIAL.println("---LOOP END---");
80+
}
81+
82+
// END FILE

0 commit comments

Comments
 (0)