This tests the CAN interface between two LISA C027 MBED Boards. By connecting the two boards, pins 1,2,3 respectively on the CAN interface, and loading and executing this code on BOTH boards, CAN messages will be received, and printed, on the PC-USB console interface of both devices.

Dependencies:   C027-REVB UbloxUSBModem mbed

Fork of C027_ModemTransparentUSBCDC_revb by Stephen Dickey

Committer:
dixter1
Date:
Sat Dec 14 00:24:59 2013 +0000
Revision:
2:c4ad86683060
Parent:
1:15b5edb4a91f
Child:
3:048ec5c2dc14
First revision working, messages going between two LISA C027 boards across the CAN interface.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dixter1 0:92ab4f4846f8 1 #include "mbed.h"
dixter1 0:92ab4f4846f8 2 #include "C027.h"
dixter1 0:92ab4f4846f8 3
dixter1 2:c4ad86683060 4 Ticker ticker;
dixter1 2:c4ad86683060 5 DigitalOut led1(LED);
dixter1 2:c4ad86683060 6 DigitalOut led2(LED1);
dixter1 2:c4ad86683060 7 CAN can1(CANRD, CANTD);
dixter1 2:c4ad86683060 8 Serial pc(USBTX, USBRX);
dixter1 0:92ab4f4846f8 9
dixter1 2:c4ad86683060 10 char counter = 0;
dixter1 0:92ab4f4846f8 11
dixter1 2:c4ad86683060 12 void send() {
dixter1 2:c4ad86683060 13 if(can1.write(CANMessage(1337, &counter, 1))) {
dixter1 2:c4ad86683060 14 pc.printf("Message sent: %d\r\n", counter);
dixter1 2:c4ad86683060 15 counter++;
dixter1 0:92ab4f4846f8 16 }
dixter1 2:c4ad86683060 17 led1 = !led1;
dixter1 2:c4ad86683060 18 }
dixter1 2:c4ad86683060 19
dixter1 2:c4ad86683060 20 int main() {
dixter1 2:c4ad86683060 21
dixter1 2:c4ad86683060 22 DigitalOut can_standby(CANS);
dixter1 2:c4ad86683060 23
dixter1 2:c4ad86683060 24 // enable the CAN interface
dixter1 2:c4ad86683060 25 // take it out of standby
dixter1 2:c4ad86683060 26 can_standby = 0;
dixter1 2:c4ad86683060 27
dixter1 0:92ab4f4846f8 28 pc.baud(MDMBAUD);
dixter1 0:92ab4f4846f8 29
dixter1 2:c4ad86683060 30 pc.printf( "Starting CAN Testing\r\n");
dixter1 2:c4ad86683060 31
dixter1 2:c4ad86683060 32 CANMessage msg;
dixter1 2:c4ad86683060 33 while(1) {
dixter1 2:c4ad86683060 34
dixter1 2:c4ad86683060 35 if(can1.read(msg)) {
dixter1 2:c4ad86683060 36 pc.printf("Message received: %d\r\n", msg.data[0]);
dixter1 2:c4ad86683060 37 led2 = !led2;
dixter1 0:92ab4f4846f8 38 }
dixter1 0:92ab4f4846f8 39
dixter1 2:c4ad86683060 40 wait(0.2);
dixter1 2:c4ad86683060 41
dixter1 2:c4ad86683060 42 send();
dixter1 0:92ab4f4846f8 43 }
dixter1 0:92ab4f4846f8 44 }
dixter1 2:c4ad86683060 45
dixter1 2:c4ad86683060 46