Can sample

Dependencies:   mbed-dev

Fork of CAN_Hello by Zoltan Hudak

Files at this revision

API Documentation at this revision

Comitter:
tknara
Date:
Fri Aug 11 05:59:03 2017 +0000
Parent:
1:6f8ffb2c2dd7
Commit message:
Can test program;

Changed in this revision

CANMsg.lib Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-STM32F103C8T6.lib Show diff for this revision Revisions of this file
mbed-dev.lib Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show diff for this revision Revisions of this file
diff -r 6f8ffb2c2dd7 -r 3dac3d4b0aeb CANMsg.lib
--- a/CANMsg.lib	Sat Mar 18 18:37:21 2017 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-https://developer.mbed.org/users/hudakz/code/CANMsg/#3d11ed680b6a
diff -r 6f8ffb2c2dd7 -r 3dac3d4b0aeb main.cpp
--- a/main.cpp	Sat Mar 18 18:37:21 2017 +0000
+++ b/main.cpp	Fri Aug 11 05:59:03 2017 +0000
@@ -1,129 +1,22 @@
-/*
- * An example showing how to use the mbed CAN API:
- *
- * Two affordable (less than $3 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.
- * Remember also that CAN bus (even a short one) must be terminated with 120 Ohm resitors at both ends.
- *
- * For more details see the wiki page <https://developer.mbed.org/users/hudakz/code/CAN_Hello/>
- *
- * NOTE: If you'd like to use an STM32F103C8T6 board uncomment line 23
- *
- * 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
- *
- * Once the binaries have been downloaded to the boards reset board #1.
- *
- */
-#define BOARD1                  1       // comment out this line when compiling for board #2
-
-//#define TARGET_STM32F103C8T6    1       // uncomment this line when using STM32F103C8T6 boards!
-
-#if defined(TARGET_STM32F103C8T6)
-#include "stm32f103c8t6.h"
-#define LED_PIN PC_13
-const int           OFF = 1;
-const int           ON = 0;
-#else
-#define LED_PIN LED1
-const int           OFF = 0;
-const int           ON = 1;
-#endif
-#if defined(BOARD1)
-const unsigned int  RX_ID = 0x100;
-const unsigned int  TX_ID = 0x101;
-#else
-const unsigned int  RX_ID = 0x101;
-const unsigned int  TX_ID = 0x100;
-#endif
 #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
-CANMsg              rxMsg;
-CANMsg              txMsg;
-DigitalOut          led(LED_PIN);
-Timer               timer;
-uint8_t             counter = 0;
-AnalogIn            analogIn(A0);
-float               voltage;
-
-/**
- * @brief   Prints CAN msg to PC's serial terminal
- * @note}
- * @param   CANMessage to print
- * @retval  none
- */
-void printMsg(CANMessage& msg) {
-    pc.printf("  ID      = 0x%.3x\r\n", msg.id);
-    pc.printf("  Type    = %d\r\n", msg.type);
-    pc.printf("  Format  = %d\r\n", msg.format);
-    pc.printf("  Length  = %d\r\n", msg.len);
-    pc.printf("  Data    =");
-    for(int i = 0; i < msg.len; i++)
-        pc.printf(" 0x%.2X", msg.data[i]);
-    pc.printf("\r\n");
+Ticker ticker;
+CAN can1(PA_11,PA_12);
+//CAN can2(PB_12,PB_13);
+Serial pc(USBTX,USBRX);
+char counter = 0;
+#define ID 7
+void send() {
+    printf("send()\n");
+    if(can1.write(CANMessage(ID, &counter, 1))) {
+        printf("Message sent: %d\n", counter);
+        counter++;
+    } 
 }
-
-/**
- * @brief   Main
- * @note
- * @param
- * @retval
- */
-int main(void)
-{
-#if defined(TARGET_STM32F103C8T6)
-    confSysClock();         //Configure system clock (72MHz HSE clock, 48MHz USB clock)
-#endif
-    pc.baud(9600);          // set Serial speed
-    can.frequency(1000000); // set bit rate to 1Mbps
-#if defined(BOARD1)
-    led = ON;               // turn the LED on
-    timer.start();          // start timer
-    pc.printf("CAN_Hello board #1\r\n");
-#else
-    led = OFF;      // turn LED off
-    pc.printf("CAN_Hello board #2\r\n");
-#endif
+ 
+int main() {
+    printf("main()\n");
+    ticker.attach(&send,0.001);
+    CANMessage msg;
     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
-                pc.printf("-------------------------------------\r\n");
-                pc.printf("CAN message sent\r\n");
-                printMsg(txMsg);
-                pc.printf("  counter = %d\r\n", counter);
-                pc.printf("  voltage = %e V\r\n", voltage);
-            }
-            else
-                pc.printf("Transmission error\r\n");
-        }
-
-        if(can.read(rxMsg)) {
-            led = ON;       // turn the LED on
-            pc.printf("-------------------------------------\r\n");
-            pc.printf("CAN message received\r\n");
-            printMsg(rxMsg);
-
-            // Filtering performed by software:
-            if(rxMsg.id == RX_ID) {
-                rxMsg >> counter >> voltage;    // extract data from the received CAN message
-                pc.printf("  counter = %d\r\n", counter);
-                pc.printf("  voltage = %e V\r\n", voltage);
-                timer.start();                  // transmission lag
-            }
-        }
     }
-}
+}
\ No newline at end of file
diff -r 6f8ffb2c2dd7 -r 3dac3d4b0aeb mbed-STM32F103C8T6.lib
--- a/mbed-STM32F103C8T6.lib	Sat Mar 18 18:37:21 2017 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-http://mbed.org/users/hudakz/code/mbed-STM32F103C8T6/#09d8c2eacb4d
diff -r 6f8ffb2c2dd7 -r 3dac3d4b0aeb mbed-dev.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-dev.lib	Fri Aug 11 05:59:03 2017 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/mbed_official/code/mbed-dev/#19eb464bc2be
diff -r 6f8ffb2c2dd7 -r 3dac3d4b0aeb mbed.bld
--- a/mbed.bld	Sat Mar 18 18:37:21 2017 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-https://mbed.org/users/mbed_official/code/mbed/builds/093f2bd7b9eb
\ No newline at end of file