diff --git a/hal/targets/hal/TARGET_STM/TARGET_STM32F7/TARGET_NUCLEO_F746ZG/PeripheralNames.h b/hal/targets/hal/TARGET_STM/TARGET_STM32F7/TARGET_NUCLEO_F746ZG/PeripheralNames.h index 819b12e8fc..6a73f9ce76 100644 --- a/hal/targets/hal/TARGET_STM/TARGET_STM32F7/TARGET_NUCLEO_F746ZG/PeripheralNames.h +++ b/hal/targets/hal/TARGET_STM/TARGET_STM32F7/TARGET_NUCLEO_F746ZG/PeripheralNames.h @@ -92,6 +92,11 @@ typedef enum { PWM_14 = (int)TIM14_BASE } PWMName; +typedef enum { + CAN_1 = (int)CAN1_BASE, + CAN_2 = (int)CAN2_BASE +} CANName; + #ifdef __cplusplus } #endif diff --git a/hal/targets/hal/TARGET_STM/TARGET_STM32F7/TARGET_NUCLEO_F746ZG/PeripheralPins.c b/hal/targets/hal/TARGET_STM/TARGET_STM32F7/TARGET_NUCLEO_F746ZG/PeripheralPins.c index f128dd2320..224db0c5c7 100644 --- a/hal/targets/hal/TARGET_STM/TARGET_STM32F7/TARGET_NUCLEO_F746ZG/PeripheralPins.c +++ b/hal/targets/hal/TARGET_STM/TARGET_STM32F7/TARGET_NUCLEO_F746ZG/PeripheralPins.c @@ -326,3 +326,21 @@ const PinMap PinMap_SPI_SSEL[] = { {PF_6, SPI_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI5)}, {NC, NC, 0} }; + +const PinMap PinMap_CAN_RD[] = { + {PB_8 , CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, + {PB_12 , CAN_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN2)}, + {PD_0 , CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, + {PB_5 , CAN_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN2)}, + {PA_11, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, + {NC, NC, 0} +}; + +const PinMap PinMap_CAN_TD[] = { + {PB_9 , CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, + {PB_13 , CAN_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN2)}, + {PD_1 , CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, + {PB_6 , CAN_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN2)}, + {PA_12, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, + {NC, NC, 0} +}; diff --git a/hal/targets/hal/TARGET_STM/TARGET_STM32F7/TARGET_NUCLEO_F746ZG/device.h b/hal/targets/hal/TARGET_STM/TARGET_STM32F7/TARGET_NUCLEO_F746ZG/device.h index 852b02ea76..e7cdc17da4 100644 --- a/hal/targets/hal/TARGET_STM/TARGET_STM32F7/TARGET_NUCLEO_F746ZG/device.h +++ b/hal/targets/hal/TARGET_STM/TARGET_STM32F7/TARGET_NUCLEO_F746ZG/device.h @@ -41,6 +41,8 @@ +#define DEVICE_CAN 1 + //======================================= #define DEVICE_ID_LENGTH 24 diff --git a/hal/targets/hal/TARGET_STM/TARGET_STM32F7/TARGET_NUCLEO_F746ZG/objects.h b/hal/targets/hal/TARGET_STM/TARGET_STM32F7/TARGET_NUCLEO_F746ZG/objects.h index b5beed24ba..f71d96f84a 100644 --- a/hal/targets/hal/TARGET_STM/TARGET_STM32F7/TARGET_NUCLEO_F746ZG/objects.h +++ b/hal/targets/hal/TARGET_STM/TARGET_STM32F7/TARGET_NUCLEO_F746ZG/objects.h @@ -110,6 +110,11 @@ struct pwmout_s { uint8_t inverted; }; +struct can_s { + CANName can; + int index; +}; + #include "gpio_object.h" #ifdef __cplusplus diff --git a/libraries/tests/mbed/can/main.cpp b/libraries/tests/mbed/can/main.cpp index bcc9251c55..87e69f0e69 100644 --- a/libraries/tests/mbed/can/main.cpp +++ b/libraries/tests/mbed/can/main.cpp @@ -18,7 +18,8 @@ CAN can1(PD_0, PD_1); defined(TARGET_NUCLEO_F042K6) || defined(TARGET_NUCLEO_F334R8) || \ defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F303K8) || \ defined(TARGET_NUCLEO_F302R8) || defined(TARGET_NUCLEO_F446RE) || \ - defined(TARGET_DISCO_F429ZI) || defined(TARGET_NUCLEO_F103RB) + defined(TARGET_DISCO_F429ZI) || defined(TARGET_NUCLEO_F103RB) || \ + defined(TARGET_NUCLEO_F746ZG) CAN can1(PA_11, PA_12); #elif defined(TARGET_DISCO_F469NI) CAN can1(PB_8, PB_9); @@ -31,7 +32,7 @@ CAN can2(p34, p33); #elif defined (TARGET_LPC1768) CAN can2(p30, p29); #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_DISCO_F469NI) || \ - defined(TARGET_DISCO_F429ZI) + defined(TARGET_DISCO_F429ZI) || defined(TARGET_NUCLEO_F746ZG) CAN can2(PB_5, PB_6); #endif char counter = 0; diff --git a/libraries/tests/mbed/can_interrupt/main.cpp b/libraries/tests/mbed/can_interrupt/main.cpp index 0a61a7358e..c8226ceb5b 100644 --- a/libraries/tests/mbed/can_interrupt/main.cpp +++ b/libraries/tests/mbed/can_interrupt/main.cpp @@ -18,7 +18,8 @@ CAN can1(PD_0, PD_1); defined(TARGET_NUCLEO_F042K6) || defined(TARGET_NUCLEO_F334R8) || \ defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F303K8) || \ defined(TARGET_NUCLEO_F302R8) || defined(TARGET_NUCLEO_F446RE) || \ - defined(TARGET_DISCO_F429ZI) || defined(TARGET_NUCLEO_F103RB) + defined(TARGET_DISCO_F429ZI) || defined(TARGET_NUCLEO_F103RB) || \ + defined(TARGET_NUCLEO_F746ZG) CAN can1(PA_11, PA_12); #elif defined(TARGET_DISCO_F469NI) CAN can1(PB_8, PB_9); @@ -31,7 +32,7 @@ CAN can2(p34, p33); #elif defined (TARGET_LPC1768) CAN can2(p30, p29); #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_DISCO_F469NI) || \ - defined(TARGET_DISCO_F429ZI) + defined(TARGET_DISCO_F429ZI) || defined(TARGET_NUCLEO_F746ZG) CAN can2(PB_5, PB_6); #endif char counter = 0; diff --git a/libraries/tests/mbed/can_loopback/main.cpp b/libraries/tests/mbed/can_loopback/main.cpp index 2ce95ac286..c519e0b118 100644 --- a/libraries/tests/mbed/can_loopback/main.cpp +++ b/libraries/tests/mbed/can_loopback/main.cpp @@ -17,7 +17,8 @@ CAN can1(P5_9, P5_10); defined(TARGET_NUCLEO_F042K6) || defined(TARGET_NUCLEO_F334R8) || \ defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F303K8) || \ defined(TARGET_NUCLEO_F302R8) || defined(TARGET_NUCLEO_F446RE) || \ - defined(TARGET_DISCO_F429ZI) || defined(TARGET_NUCLEO_F103RB) + defined(TARGET_DISCO_F429ZI) || defined(TARGET_NUCLEO_F103RB) || \ + defined(TARGET_NUCLEO_F746ZG) CAN can1(PA_11, PA_12); #elif defined(TARGET_DISCO_F469NI) CAN can1(PB_8, PB_9); diff --git a/workspace_tools/tests.py b/workspace_tools/tests.py index aa72b85fed..e74a016ac7 100644 --- a/workspace_tools/tests.py +++ b/workspace_tools/tests.py @@ -102,6 +102,7 @@ Wiring: * DISCO_F469NI: (RX=PB_8, TX=PB_9) * DISCO_F4269ZI: (RX=PA_11, TX=PA_12) * NUCLEO_F103RB: (RX=PA_11, TX=PA_12) + * NUCLEO_F746ZG: (RX=PA_11, TX=PA_12) """ TESTS = [ @@ -310,7 +311,7 @@ TESTS = [ "mcu": ["LPC1549", "LPC1768","B96B_F446VE", "VK_RZ_A1H", "NUCLEO_F091RC", "NUCLEO_F072RB", "NUCLEO_F042K6", "NUCLEO_F334R8", "NUCLEO_F303RE", "NUCLEO_F303K8", "NUCLEO_F302R8", "NUCLEO_F446RE", - "DISCO_F469NI", "DISCO_F429ZI", "NUCLEO_F103RB"], + "DISCO_F469NI", "DISCO_F429ZI", "NUCLEO_F103RB", "NUCLEO_F746ZG"], }, { "id": "MBED_BLINKY", "description": "Blinky", @@ -584,7 +585,7 @@ TESTS = [ "mcu": ["LPC1768", "LPC4088", "LPC1549", "RZ_A1H", "B96B_F446VE", "NUCLEO_F091RC", "NUCLEO_F072RB", "NUCLEO_F042K6", "NUCLEO_F334R8", "NUCLEO_F303RE", "NUCLEO_F303K8", "NUCLEO_F302R8", "NUCLEO_F446RE", "DISCO_F469NI", - "DISCO_F429ZI", "NUCLEO_F103RB"] + "DISCO_F429ZI", "NUCLEO_F103RB", "NUCLEO_F746ZG"] }, { "id": "MBED_30", "description": "CAN network test using interrupts", @@ -593,7 +594,7 @@ TESTS = [ "mcu": ["LPC1768", "LPC4088", "LPC1549", "RZ_A1H", "B96B_F446VE", "NUCLEO_F091RC", "NUCLEO_F072RB", "NUCLEO_F042K6", "NUCLEO_F334R8", "NUCLEO_F303RE", "NUCLEO_F303K8", "NUCLEO_F302R8", "NUCLEO_F446RE", "DISCO_F469NI", - "DISCO_F429ZI", "NUCLEO_F103RB"] + "DISCO_F429ZI", "NUCLEO_F103RB", "NUCLEO_F746ZG"] }, { "id": "MBED_31", "description": "PWM LED test",