NUMAKER CAN sample

Files at this revision

API Documentation at this revision

Comitter:
ccli8
Date:
Wed Apr 17 17:47:56 2024 +0800
Parent:
10:33d27c970411
Commit message:
Support loopback mode

To enable loopback mode, both TX and RX are required to enable.

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 33d27c970411 -r 36d172d475fa main.cpp
--- a/main.cpp	Wed Apr 17 17:41:40 2024 +0800
+++ b/main.cpp	Wed Apr 17 17:47:56 2024 +0800
@@ -9,6 +9,11 @@
 
 #define CAN_TX_MODE_TEST            0
 #define CAN_RX_MODE_TEST            1
+#define CAN_LOOPBACK_MODE_TEST      0
+#if CAN_LOOPBACK_MODE_TEST && (!CAN_TX_MODE_TEST || !CAN_RX_MODE_TEST)
+#error "Either TX or RX not enabled for loopback mode"
+#endif
+
 /* WARNING: Don't enable interrupt mode on receive side. It is not supported on Nuvoton targets. */
 #define CAN_RX_IRQ_EN               0
 #define LED_ALL_OFF                 led1=led2=led3=1
@@ -105,7 +110,14 @@
     canObj.filter(CAN_DEV_ID, 0, CANStandard, MSG_NUM_INDEX);
     
 #endif
-    
+
+#if CAN_LOOPBACK_MODE_TEST
+    if (!canObj.mode(CAN::SilentTest)) {
+        printf("CAN: Configure to SilentTest mode failed\n\n");
+        return EXIT_FAILURE;
+    }
+#endif
+
     while (true)
     {