Using CAN bus with (not just NUCLEO) mbed boards

Dependencies:   mbed CANMsg

Revision:
3:87a128bca8f5
Parent:
2:6546e4a2d593
Child:
4:09d564da0e24
--- a/main.cpp	Wed Oct 11 16:29:04 2017 +0000
+++ b/main.cpp	Thu Mar 29 18:57:18 2018 +0000
@@ -1,7 +1,7 @@
 /*
  * An example showing how to use the mbed CAN API:
  *
- * Two affordable (less than $3 on ebay) STM32F103C8T6 boards (20kB SRAM, 64kB Flash),
+ * Two affordable (about $2 on ebay) STM32F103C8T6 boards (20kB SRAM, 64kB Flash),
  * (see [https://developer.mbed.org/users/hudakz/code/STM32F103C8T6_Hello/] for more details)
  * 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.
@@ -13,9 +13,9 @@
  *
  * The same code is used for both mbed boards, but:
  *      For board #1 compile the example without any change.
- *      For board #2 comment out line 23 before compiling
+ *      For board #2 comment out line 21 before compiling
  *
- * Once the binaries have been downloaded to the boards reset board #1.
+ * Once the binaries have been downloaded to the boards reset both boards at the same time.
  *
  */
 #define BOARD1                  1       // comment out this line when compiling for board #2
@@ -42,8 +42,8 @@
 #include "mbed.h"
 #include "CANMsg.h"
 
-Serial              pc(PA_2, PA_3);
-CAN                 can(PA_11, PA_12);  // CAN Rx pin name, CAN Tx pin name
+Serial              pc(USBTX, USBRX);
+CAN                 can(p30, p29);  // CAN Rx pin name, CAN Tx pin name
 CANMsg              rxMsg;
 CANMsg              txMsg;
 DigitalOut          led(LED_PIN);
@@ -56,7 +56,7 @@
  * @brief   Prints CAN msg to PC's serial terminal
  * @note
  * @param   CANMessage to print
- * @retval  none
+ * @retval
  */
 void printMsg(CANMessage& msg) {
     pc.printf("  ID      = 0x%.3x\r\n", msg.id);
@@ -91,16 +91,16 @@
     pc.printf("CAN_Hello board #2\r\n");
 #endif
     while(1) {
-        if(timer.read_ms() >= 1000) {   // check for timeout
-            timer.stop();               // stop timer
-            timer.reset();              // reset timer
-            counter++;                  // increment counter
-            voltage = (analogIn * 3.3f) / 4096.0f;    // read the small drifting voltage from analog input
-            txMsg.clear();              // clear Tx message storage
-            txMsg.id = TX_ID;           // set ID
-            txMsg << counter << voltage;// append data (total data length must be <= 8 bytes!)
-            if(can.write(txMsg)) {      // transmit message
-                led = OFF;              // turn the LED off
+        if(timer.read_ms() >= 1000) {    // check for timeout
+            timer.stop();                // stop timer
+            timer.reset();               // reset timer
+            counter++;                   // increment counter
+            voltage = analogIn * 3.3f;   // read the small drifting voltage from analog input
+            txMsg.clear();               // clear Tx message storage
+            txMsg.id = TX_ID;            // set ID
+            txMsg << counter << voltage; // append data (total data length must not exceed 8 bytes!)
+            if(can.write(txMsg)) {       // transmit message
+                led = OFF;               // turn the LED off
                 pc.printf("-------------------------------------\r\n");
                 pc.printf("CAN message sent\r\n");
                 printMsg(txMsg);