diff --git a/features/unsupported/tests/mbed/can/main.cpp b/features/unsupported/tests/mbed/can/main.cpp index c8c182207c9..2140523a3a1 100644 --- a/features/unsupported/tests/mbed/can/main.cpp +++ b/features/unsupported/tests/mbed/can/main.cpp @@ -20,7 +20,7 @@ CAN can1(PD_0, PD_1); defined(TARGET_NUCLEO_F302R8) || defined(TARGET_NUCLEO_F446RE) || \ defined(TARGET_DISCO_F429ZI) || defined(TARGET_NUCLEO_F103RB) || \ defined(TARGET_NUCLEO_F746ZG) || defined(TARGET_NUCLEO_L476RG) || \ - defined(TARGET_NUCLEO_L432KC) + defined(TARGET_NUCLEO_L432KC) || defined(TARGET_DISCO_F303VC) CAN can1(PA_11, PA_12); #elif defined(TARGET_DISCO_F469NI) ||defined(TARGET_DISCO_F746NG) CAN can1(PB_8, PB_9); @@ -68,7 +68,7 @@ int main() { !defined(TARGET_NUCLEO_F303RE) && !defined(TARGET_NUCLEO_F303K8) && \ !defined(TARGET_NUCLEO_F302R8) && !defined(TARGET_NUCLEO_F103RB) && \ !defined(TARGET_DISCO_L476VG) && !defined(TARGET_NUCLEO_L476RG) && \ - !defined(TARGET_NUCLEO_L432KC)) + !defined(TARGET_NUCLEO_L432KC)) && !defined(TARGET_DISCO_F303VC) printf("loop()\n"); if(can2.read(msg)) { printmsg("Rx message:", &msg); diff --git a/features/unsupported/tests/mbed/can_interrupt/main.cpp b/features/unsupported/tests/mbed/can_interrupt/main.cpp index 8bd68a6eff0..7d40d095492 100644 --- a/features/unsupported/tests/mbed/can_interrupt/main.cpp +++ b/features/unsupported/tests/mbed/can_interrupt/main.cpp @@ -20,7 +20,7 @@ CAN can1(PD_0, PD_1); defined(TARGET_NUCLEO_F302R8) || defined(TARGET_NUCLEO_F446RE) || \ defined(TARGET_DISCO_F429ZI) || defined(TARGET_NUCLEO_F103RB) || \ defined(TARGET_NUCLEO_F746ZG) || defined(TARGET_NUCLEO_L476RG) || \ - defined(TARGET_NUCLEO_L432KC) + defined(TARGET_NUCLEO_L432KC) || defined(TARGET_DISCO_F303VC) CAN can1(PA_11, PA_12); #elif defined(TARGET_DISCO_F469NI) || defined(TARGET_DISCO_F746NG) CAN can1(PB_8, PB_9); @@ -63,7 +63,7 @@ void send() { !defined(TARGET_NUCLEO_F303RE) && !defined(TARGET_NUCLEO_F303K8) && \ !defined(TARGET_NUCLEO_F302R8) && !defined(TARGET_NUCLEO_F103RB) && \ !defined(TARGET_DISCO_L476VG) && !defined(TARGET_NUCLEO_L476RG) && \ - !defined(TARGET_NUCLEO_L432KC)) + !defined(TARGET_NUCLEO_L432KC) && !defined(TARGET_DISCO_F303VC)) void read() { CANMessage msg; printf("rx()\n"); @@ -83,7 +83,7 @@ int main() { !defined(TARGET_NUCLEO_F303RE) && !defined(TARGET_NUCLEO_F303K8) && \ !defined(TARGET_NUCLEO_F302R8) && !defined(TARGET_NUCLEO_F103RB) && \ !defined(TARGET_DISCO_L476VG) && !defined(TARGET_NUCLEO_L476RG) && \ - !defined(TARGET_NUCLEO_L432KC)) + !defined(TARGET_NUCLEO_L432KC) && !defined(TARGET_DISCO_F303VC)) can2.attach(&read); #endif while(1) { diff --git a/features/unsupported/tests/mbed/can_loopback/main.cpp b/features/unsupported/tests/mbed/can_loopback/main.cpp index be68d11880f..e388451f8a7 100644 --- a/features/unsupported/tests/mbed/can_loopback/main.cpp +++ b/features/unsupported/tests/mbed/can_loopback/main.cpp @@ -24,7 +24,8 @@ CAN can1(PA_11, PA_12); #elif defined(TARGET_DISCO_F469NI) || defined(TARGET_DISCO_F746NG) || \ defined(TARGET_NUCLEO_F446ZE) || defined(TARGET_NUCLEO_F103RB) || \ defined(TARGET_NUCLEO_F207ZG) || defined(TARGET_NUCLEO_F303ZE) || \ - defined(TARGET_DISCO_F769NI) || defined(TARGET_NUCLEO_F767ZI) + defined(TARGET_DISCO_F769NI) || defined(TARGET_NUCLEO_F767ZI) || \ + defined(TARGET_DISCO_F303VC) CAN can1(PB_8, PB_9); #endif diff --git a/targets/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F303VC/PeripheralNames.h b/targets/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F303VC/PeripheralNames.h index ba181386dbc..834ab70364b 100644 --- a/targets/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F303VC/PeripheralNames.h +++ b/targets/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F303VC/PeripheralNames.h @@ -81,6 +81,10 @@ typedef enum { PWM_17 = (int)TIM17_BASE } PWMName; +typedef enum { + CAN_1 = (int)CAN_BASE +} CANName; + #ifdef __cplusplus } #endif diff --git a/targets/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F303VC/PeripheralPins.c b/targets/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F303VC/PeripheralPins.c index bbd68937102..433b201ae1f 100644 --- a/targets/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F303VC/PeripheralPins.c +++ b/targets/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F303VC/PeripheralPins.c @@ -342,3 +342,17 @@ const PinMap PinMap_SPI_SSEL[] = { {PD_15, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI2)}, {NC, NC, 0} }; + +const PinMap PinMap_CAN_RD[] = { + //{PA_11, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN)}, //(pin used for usb) + {PB_8, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN)}, + {PD_0, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF7_CAN)}, + {NC, NC, 0} +}; + +const PinMap PinMap_CAN_TD[] = { + //{PA_12, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN)}, //(pin used for usb) + {PB_9, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN)}, + {PD_1, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF7_CAN)}, + {NC, NC, 0} +}; diff --git a/targets/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F303VC/device/stm32f303xc.h b/targets/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F303VC/device/stm32f303xc.h index 80a39493500..ae1cc35e36d 100644 --- a/targets/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F303VC/device/stm32f303xc.h +++ b/targets/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F303VC/device/stm32f303xc.h @@ -840,7 +840,7 @@ typedef struct #define UART5 ((USART_TypeDef *) UART5_BASE) #define I2C1 ((I2C_TypeDef *) I2C1_BASE) #define I2C2 ((I2C_TypeDef *) I2C2_BASE) -#define CAN ((CAN_TypeDef *) CAN_BASE) +#define CAN1 ((CAN_TypeDef *) CAN_BASE) #define PWR ((PWR_TypeDef *) PWR_BASE) #define DAC ((DAC_TypeDef *) DAC_BASE) #define DAC1 ((DAC_TypeDef *) DAC1_BASE) diff --git a/targets/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F303VC/objects.h b/targets/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F303VC/objects.h index a7c8b6efb02..ea013601d2a 100644 --- a/targets/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F303VC/objects.h +++ b/targets/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F303VC/objects.h @@ -66,6 +66,11 @@ struct dac_s { uint32_t channel; }; +struct can_s { + CANName can; + int index; +}; + #include "common_objects.h" #include "gpio_object.h" diff --git a/targets/targets.json b/targets/targets.json index e9913959723..d5fb5de328e 100644 --- a/targets/targets.json +++ b/targets/targets.json @@ -1125,7 +1125,7 @@ "extra_labels": ["STM", "STM32F3", "STM32F303", "STM32F303VC"], "macros": ["RTC_LSI=1", "TRANSACTION_QUEUE_SIZE_SPI=2"], "supported_toolchains": ["GCC_ARM"], - "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES"], + "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES"], "device_name": "STM32F303VC" }, "DISCO_F334C8": { diff --git a/tools/build_travis.py b/tools/build_travis.py index 06a4c9be7f7..02adbe27910 100644 --- a/tools/build_travis.py +++ b/tools/build_travis.py @@ -75,6 +75,7 @@ { "target": "ARCH_MAX", "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] }, { "target": "DISCO_F051R8", "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] }, + { "target": "DISCO_F303VC", "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] }, { "target": "DISCO_F334C8", "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] }, { "target": "DISCO_F401VC", "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] }, { "target": "DISCO_F407VG", "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb", "fat"] }, diff --git a/tools/tests.py b/tools/tests.py index 6e765ebc30c..ce49e4fd4c3 100644 --- a/tools/tests.py +++ b/tools/tests.py @@ -117,8 +117,9 @@ * NUCLEO_F746ZG: (RX=PA_11, TX=PA_12) * DISCO_F746NG: (RX=PB_8, TX=PB_9) * DISCO_L476VG: (RX=PA_11, TX=PA_12) - * NUCLEO_L476RG: (RX=PA_11, TX=PA_12) - * NUCLEO_L432KC: (RX=PA_11, TX=PA_12) + * NUCLEO_L476RG: (RX=PA_11, TX=PA_12) + * NUCLEO_L432KC: (RX=PA_11, TX=PA_12) + * DISCO_F303VC: (RX=PA_11, TX=PA_12) """ TESTS = [ @@ -323,7 +324,7 @@ "NUCLEO_F303RE", "NUCLEO_F303K8", "NUCLEO_F302R8", "NUCLEO_F446RE","NUCLEO_F446ZE", "DISCO_F469NI", "DISCO_F429ZI", "NUCLEO_F103RB", "NUCLEO_F746ZG", "DISCO_F746NG", "DISCO_L476VG", "NUCLEO_L476RG", "NUCLEO_L432KC", - "DISCO_F769NI", "NUCLEO_F767ZI"] + "DISCO_F769NI", "NUCLEO_F767ZI", "DISCO_F303VC"] }, { "id": "MBED_A28", "description": "CAN loopback test", @@ -335,9 +336,9 @@ "NUCLEO_F303RE", "NUCLEO_F303K8", "NUCLEO_F302R8", "NUCLEO_F303ZE", "NUCLEO_F446RE","NUCLEO_F446ZE", "DISCO_F469NI", "DISCO_F429ZI", "NUCLEO_F103RB", "NUCLEO_F746ZG", "DISCO_F746NG", "DISCO_L476VG", "NUCLEO_L476RG", "NUCLEO_L432KC", - "DISCO_F769NI", "NUCLEO_F767ZI"] + "DISCO_F769NI", "NUCLEO_F767ZI", "DISCO_F303VC"] }, - { + { "id": "MBED_A29", "description": "i2c_master_slave_asynch", "source_dir": join(TEST_DIR, "mbed", "i2c_master_slave_asynch"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB], @@ -605,7 +606,7 @@ "NUCLEO_F072RB", "NUCLEO_F042K6", "NUCLEO_F334R8", "NUCLEO_F303RE", "NUCLEO_F303K8", "NUCLEO_F302R8", "NUCLEO_F446RE","NUCLEO_F446ZE", "DISCO_F469NI", "NUCLEO_F207ZG", "DISCO_F429ZI", "NUCLEO_F103RB", "NUCLEO_F746ZG", "DISCO_F746NG", - "NUCLEO_L476RG", "NUCLEO_L432KC"] + "NUCLEO_L476RG", "NUCLEO_L432KC", "DISCO_F303VC"] }, { "id": "MBED_30", "description": "CAN network test using interrupts", @@ -615,7 +616,7 @@ "NUCLEO_F072RB", "NUCLEO_F042K6", "NUCLEO_F334R8", "NUCLEO_F303RE", "NUCLEO_F303K8", "NUCLEO_F302R8", "NUCLEO_F446RE", "NUCLEO_F446ZE", "DISCO_F469NI", "DISCO_F429ZI", "NUCLEO_F103RB", "NUCLEO_F746ZG", "DISCO_F746NG", - "NUCLEO_L476RG", "NUCLEO_L432KC"] + "NUCLEO_L476RG", "NUCLEO_L432KC", "DISCO_F303VC"] }, { "id": "MBED_31", "description": "PWM LED test",