Skip to content

Commit f1c42bf

Browse files
committed
[NUCLEO_F302R8] Added CAN support
Added CAN API support for NUCLEO_F302R8 target. *stm32f302x8.h* file was changed to avoid compilation errors. Change-Id: Ia4ee8a90fe3f0ad6955dde21e78ea4a6c05e4fcd
1 parent 347a5e6 commit f1c42bf

File tree

9 files changed

+40
-10
lines changed

9 files changed

+40
-10
lines changed

hal/targets/cmsis/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F302R8/stm32f302x8.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -792,7 +792,7 @@ typedef struct
792792
#define I2C1 ((I2C_TypeDef *) I2C1_BASE)
793793
#define I2C2 ((I2C_TypeDef *) I2C2_BASE)
794794
#define I2C3 ((I2C_TypeDef *) I2C3_BASE)
795-
#define CAN ((CAN_TypeDef *) CAN_BASE)
795+
#define CAN1 ((CAN_TypeDef *) CAN_BASE)
796796
#define PWR ((PWR_TypeDef *) PWR_BASE)
797797
#define DAC ((DAC_TypeDef *) DAC_BASE)
798798
#define DAC1 ((DAC_TypeDef *) DAC1_BASE)

hal/targets/hal/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F302R8/PeripheralNames.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@ typedef enum {
7373
PWM_17 = (int)TIM17_BASE
7474
} PWMName;
7575

76+
typedef enum {
77+
CAN_1 = (int)CAN_BASE
78+
} CANName;
79+
7680
#ifdef __cplusplus
7781
}
7882
#endif

hal/targets/hal/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F302R8/PeripheralPins.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,3 +204,15 @@ const PinMap PinMap_SPI_SSEL[] = {
204204
{PF_0, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
205205
{NC, NC, 0}
206206
};
207+
208+
const PinMap PinMap_CAN_RD[] = {
209+
// {PB_8 , CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN)}, // Not available in 32 pins package
210+
{PA_11, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN)},
211+
{NC, NC, 0}
212+
};
213+
214+
const PinMap PinMap_CAN_TD[] = {
215+
// {PB_9 , CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN)}, // Not available in 32 pins package
216+
{PA_12, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN)},
217+
{NC, NC, 0}
218+
};

hal/targets/hal/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F302R8/device.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@
5454

5555
#define DEVICE_SLEEP 1
5656

57+
#define DEVICE_CAN 1
58+
5759
//=======================================
5860

5961
#define DEVICE_SEMIHOST 0

hal/targets/hal/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F302R8/objects.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,11 @@ struct pwmout_s {
106106
uint32_t inverted;
107107
};
108108

109+
struct can_s {
110+
CANName can;
111+
int index;
112+
};
113+
109114
#include "gpio_object.h"
110115

111116
#ifdef __cplusplus

libraries/tests/mbed/can/main.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ CAN can1(D2, D3);
1616
CAN can1(PD_0, PD_1);
1717
#elif defined(TARGET_NUCLEO_F091RC) || defined(TARGET_NUCLEO_F072RB) || \
1818
defined(TARGET_NUCLEO_F042K6) || defined(TARGET_NUCLEO_F334R8) || \
19-
defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F303K8)
19+
defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F303K8) || \
20+
defined(TARGET_NUCLEO_F302R8)
2021
CAN can1(PA_11, PA_12);
2122
#else
2223
CAN can1(p9, p10);
@@ -55,7 +56,8 @@ int main() {
5556
#if (!defined (TARGET_LPC1549) && !defined(TARGET_B96B_F446VE) && \
5657
!defined(TARGET_NUCLEO_F091RC) && !defined(TARGET_NUCLEO_F072RB) && \
5758
!defined(TARGET_NUCLEO_F042K6) && !defined(TARGET_NUCLEO_F334R8) && \
58-
!defined(TARGET_NUCLEO_F303RE) && !defined(TARGET_NUCLEO_F303K8))
59+
!defined(TARGET_NUCLEO_F303RE) && !defined(TARGET_NUCLEO_F303K8) && \
60+
!defined(TARGET_NUCLEO_F302R8))
5961
printf("loop()\n");
6062
if(can2.read(msg)) {
6163
printmsg("Rx message:", &msg);

libraries/tests/mbed/can_interrupt/main.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ CAN can1(D2, D3);
1616
CAN can1(PD_0, PD_1);
1717
#elif defined(TARGET_NUCLEO_F091RC) || defined(TARGET_NUCLEO_F072RB) || \
1818
defined(TARGET_NUCLEO_F042K6) || defined(TARGET_NUCLEO_F334R8) || \
19-
defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F303K8)
19+
defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F303K8) || \
20+
defined(TARGET_NUCLEO_F302R8)
2021
CAN can1(PA_11, PA_12);
2122
#else
2223
CAN can1(p9, p10);
@@ -50,7 +51,8 @@ void send() {
5051
#if (!defined (TARGET_LPC1549) && !defined(TARGET_B96B_F446VE) && \
5152
!defined(TARGET_NUCLEO_F091RC) && !defined(TARGET_NUCLEO_F072RB) && \
5253
!defined(TARGET_NUCLEO_F042K6) && !defined(TARGET_NUCLEO_F334R8) && \
53-
!defined(TARGET_NUCLEO_F303RE) && !defined(TARGET_NUCLEO_F303K8))
54+
!defined(TARGET_NUCLEO_F303RE) && !defined(TARGET_NUCLEO_F303K8) && \
55+
!defined(TARGET_NUCLEO_F302R8))
5456
void read() {
5557
CANMessage msg;
5658
printf("rx()\n");
@@ -67,7 +69,8 @@ int main() {
6769
#if (!defined (TARGET_LPC1549) && !defined(TARGET_B96B_F446VE) && \
6870
!defined(TARGET_NUCLEO_F091RC) && !defined(TARGET_NUCLEO_F072RB) && \
6971
!defined(TARGET_NUCLEO_F042K6) && !defined(TARGET_NUCLEO_F334R8) && \
70-
!defined(TARGET_NUCLEO_F303RE) && !defined(TARGET_NUCLEO_F303K8))
72+
!defined(TARGET_NUCLEO_F303RE) && !defined(TARGET_NUCLEO_F303K8) && \
73+
!defined(TARGET_NUCLEO_F302R8))
7174
can2.attach(&read);
7275
#endif
7376
while(1) {

libraries/tests/mbed/can_loopback/main.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ CAN can1(PD_0, PD_1);
1515
CAN can1(P5_9, P5_10);
1616
#elif defined(TARGET_NUCLEO_F091RC) || defined(TARGET_NUCLEO_F072RB) || \
1717
defined(TARGET_NUCLEO_F042K6) || defined(TARGET_NUCLEO_F334R8) || \
18-
defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F303K8)
18+
defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F303K8) || \
19+
defined(TARGET_NUCLEO_F302R8)
1920
CAN can1(PA_11, PA_12);
2021
#endif
2122

workspace_tools/tests.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@
9797
* NUCLEO_F334R8: (RX=PA_11, TX=PA_12)
9898
* NUCLEO_F303RE: (RX=PA_11, TX=PA_12)
9999
* NUCLEO_F303K8: (RX=PA_11, TX=PA_12)
100+
* NUCLEO_F302R8: (RX=PA_11, TX=PA_12)
100101
101102
"""
102103
TESTS = [
@@ -304,7 +305,7 @@
304305
"peripherals": ["can_transceiver"],
305306
"mcu": ["LPC1549", "LPC1768","B96B_F446VE", "VK_RZ_A1H",
306307
"NUCLEO_F091RC", "NUCLEO_F072RB", "NUCLEO_F042K6", "NUCLEO_F334R8",
307-
"NUCLEO_F303RE", "NUCLEO_F303K8"],
308+
"NUCLEO_F303RE", "NUCLEO_F303K8", "NUCLEO_F302R8"],
308309
},
309310
{
310311
"id": "MBED_BLINKY", "description": "Blinky",
@@ -577,15 +578,15 @@
577578
"dependencies": [MBED_LIBRARIES],
578579
"mcu": ["LPC1768", "LPC4088", "LPC1549", "RZ_A1H", "B96B_F446VE", "NUCLEO_F091RC",
579580
"NUCLEO_F072RB", "NUCLEO_F042K6", "NUCLEO_F334R8", "NUCLEO_F303RE",
580-
"NUCLEO_F303K8"]
581+
"NUCLEO_F303K8", "NUCLEO_F302R8"]
581582
},
582583
{
583584
"id": "MBED_30", "description": "CAN network test using interrupts",
584585
"source_dir": join(TEST_DIR, "mbed", "can_interrupt"),
585586
"dependencies": [MBED_LIBRARIES],
586587
"mcu": ["LPC1768", "LPC4088", "LPC1549", "RZ_A1H", "B96B_F446VE", "NUCLEO_F091RC",
587588
"NUCLEO_F072RB", "NUCLEO_F042K6", "NUCLEO_F334R8", "NUCLEO_F303RE",
588-
"NUCLEO_F303K8"]
589+
"NUCLEO_F303K8", "NUCLEO_F302R8"]
589590
},
590591
{
591592
"id": "MBED_31", "description": "PWM LED test",

0 commit comments

Comments
 (0)