TLMoto

Dependencies:   CANnucleo CANnucleo_Hello mbed

Fork of CANnucleo_Hello by Zoltan Hudak

Revision:
15:6449443e2207
Parent:
14:e12ebd1260b1
Child:
16:a86f339d1c25
--- a/main.cpp	Wed Jul 27 10:25:42 2016 +0000
+++ b/main.cpp	Fri Jul 29 10:24:45 2016 +0000
@@ -1,8 +1,7 @@
 /*
  * An example of using CAN bus with NUCLEO boards:
  *
- * Two affordable (less than $4 on ebay) STM32F103C8T6 boards (20kB SRAM, 64kB Flash), 
- * compatible with the NUCLEO-F103RB platform (20kB SRAM, 128kB Flash), 
+ * Two affordable (less than $3 on ebay) STM32F103C8T6 boards compatible with the NUCLEO-F103RB platform
  * are connected to the same CAN bus via transceivers (MCP2551 or TJA1040, or etc.). 
  * CAN transceivers are not part of NUCLEO boards, therefore must be added by you. 
  * Remember also that CAN bus (even a short one) must be terminated with 120 Ohm resitors at both ends.
@@ -19,6 +18,7 @@
  *
  */ 
 
+
 #include "mbed.h"
 
 //#define TARGET_STM32F103C8T6  1     // comment out this line when using official NUCLEO boards!                                    
@@ -44,7 +44,7 @@
 
 DigitalOut      led(LED_PIN);
 Timer           timer;
-CAN             can(PA_11, PA_12);  // CAN Rx pin name, CAN Tx pin name
+CAN             can(PA_11, PA_12);  // CAN RD pin name, CAN TD pin name
 CANMessage      rxMsg;
 char            counter = 0;
 
@@ -56,20 +56,22 @@
     led = OFF;      // turn LED off
 #endif
 
+    can.frequency(1000000);                                 // set bit rate to 1Mbps
+    
     while(1) {
-        if(timer.read_ms() >= 200) {                        // check for timeout
+        if(timer.read_ms() >= 1000) {                       // check for timeout
             timer.stop();                                   // stop timer
             timer.reset();                                  // reset timer
             counter++;                                      // increment counter
             led = OFF;                                      // turn LED off
             if(can.write(CANMessage(TX_ID, &counter, 1)))   // transmit message
-                printf("CAN message sent\r\n"); 
+                printf("CAN message sent\r\n\r\n"); 
             else
-                printf("Transmission error\r\n");
+                printf("Transmission error\r\n\r\n");
         }
-        if(can.read(rxMsg)) {
-            printf("CAN message received:\r\n");
-            printf("  ID     = %#x\r\n", rxMsg.id);
+        if(can.read(rxMsg)) {                               // check for new message
+            printf("CAN message received:\r\n");            // print message details
+            printf("  ID     = 0x%.3x\r\n", rxMsg.id);
             printf("  Type   = %d\r\n", rxMsg.type);
             printf("  Format = %d\r\n", rxMsg.format);
             printf("  Length = %d\r\n", rxMsg.len);
@@ -80,8 +82,8 @@
            
             if(rxMsg.id == RX_ID) {             
                 counter = rxMsg.data[0];                    // set counter
-                printf("counter = %d\r\n", counter);        // print counter
-                led = ON;                                   // set LED
+                printf("counter = %d\r\n\r\n", counter);    // print counter
+                led = ON;                                   // turn LED on
                 timer.start();                              // transmission lag
             }
         }