WORKS

Dependencies:   MAX44000 PWM_Tone_Library nexpaq_mdk

Fork of LED_Demo by Maxim nexpaq

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "test_env.h"
00003 
00004 #if !DEVICE_CAN
00005   #error [NOT_SUPPORTED] CAN not supported
00006 #endif
00007 
00008 #if defined(TARGET_LPC1549)
00009 CAN can1(D9, D8);
00010 #elif defined(TARGET_LPC1768) || defined(TARGET_LPC4088)
00011 CAN can1(p9, p10);
00012 #elif defined(TARGET_B96B_F446VE)
00013 CAN can1(PD_0, PD_1);
00014 #elif defined(TARGET_VK_RZ_A1H)
00015 CAN can1(P5_9, P5_10);
00016 #elif defined(TARGET_NUCLEO_F091RC) || defined(TARGET_NUCLEO_F072RB) || \
00017       defined(TARGET_NUCLEO_F042K6) || defined(TARGET_NUCLEO_F334R8) || \
00018       defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F303K8) || \
00019       defined(TARGET_NUCLEO_F302R8) || defined(TARGET_NUCLEO_F446RE) || \
00020       defined(TARGET_DISCO_F429ZI)  || \
00021       defined(TARGET_NUCLEO_F746ZG) || defined(TARGET_DISCO_L476VG)  || \
00022       defined(TARGET_NUCLEO_L476RG) || defined(TARGET_NUCLEO_L432KC)
00023 CAN can1(PA_11, PA_12);
00024       defined(TARGET_NUCLEO_F446ZE) || \
00025       defined(TARGET_NUCLEO_F103RB) || \
00026       defined(TARGET_NUCLEO_F207ZG) || \
00027       defined(TARGET_NUCLEO_F303ZE) || \
00028       defined(TARGET_DISCO_F769NI)
00029 CAN can1(PB_8, PB_9);
00030 #endif
00031 
00032 #define TEST_ITERATIONS     127
00033 
00034 int main() {
00035     MBED_HOSTTEST_TIMEOUT(20);
00036     MBED_HOSTTEST_SELECT(dev_null);
00037     MBED_HOSTTEST_DESCRIPTION(CAN Loopback);
00038     MBED_HOSTTEST_START("MBED_A27");
00039 
00040 #if !defined(TARGET_VK_RZ_A1H)
00041     can1.mode(CAN::Reset);
00042 #endif
00043 
00044     if (!can1.mode(CAN::LocalTest)) {
00045         printf("Mode change failed\n");
00046     }
00047 
00048     char success_count = 0;
00049     for (char i=0; i < TEST_ITERATIONS; i++) {
00050         unsigned int id = 1337;
00051         CANMessage tx_msg(id, &i, sizeof(i));
00052         bool sent = false;
00053         if (can1.write(tx_msg)) {
00054             printf("Sent %u: %d\n", id, i);
00055             sent = true;
00056         }
00057         wait_ms(50);
00058 
00059         bool read = false;
00060         CANMessage rx_msg;
00061         if (can1.read(rx_msg)) {
00062             printf("Read %u: %d\n", rx_msg.id, rx_msg.data[0]);
00063             read = (rx_msg.id == id) && (rx_msg.data[0] == i);
00064         }
00065 
00066         bool success = sent && read;
00067 
00068         if (success) {
00069             success_count++;
00070         }
00071     }
00072 
00073     MBED_HOSTTEST_RESULT(success_count == TEST_ITERATIONS);
00074 }