Skip to content

Commit 10cce63

Browse files
committed
[NUCLEO_L476RG] Added CAN support
Added CAN API support for NUCLEO_L476RG target. "stm32l476xx.h" file was changed to avoid compilation errors. Change-Id: Ifadf7048f6c72c0311ec915e47ce2190460ede68
1 parent 155d38e commit 10cce63

File tree

9 files changed

+36
-10
lines changed

9 files changed

+36
-10
lines changed

hal/targets/cmsis/TARGET_STM/TARGET_STM32L4/TARGET_NUCLEO_L476RG/stm32l476xx.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1336,7 +1336,6 @@ typedef struct
13361336
#define I2C1 ((I2C_TypeDef *) I2C1_BASE)
13371337
#define I2C2 ((I2C_TypeDef *) I2C2_BASE)
13381338
#define I2C3 ((I2C_TypeDef *) I2C3_BASE)
1339-
#define CAN ((CAN_TypeDef *) CAN1_BASE)
13401339
#define CAN1 ((CAN_TypeDef *) CAN1_BASE)
13411340
#define LPTIM1 ((LPTIM_TypeDef *) LPTIM1_BASE)
13421341
#define PWR ((PWR_TypeDef *) PWR_BASE)

hal/targets/hal/TARGET_STM/TARGET_STM32L4/TARGET_NUCLEO_L476RG/PeripheralNames.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,10 @@ typedef enum {
8383
PWM_17 = (int)TIM17_BASE
8484
} PWMName;
8585

86+
typedef enum {
87+
CAN_1 = (int)CAN1_BASE
88+
} CANName;
89+
8690
#ifdef __cplusplus
8791
}
8892
#endif

hal/targets/hal/TARGET_STM/TARGET_STM32L4/TARGET_NUCLEO_L476RG/PeripheralPins.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,3 +244,15 @@ const PinMap PinMap_SPI_SSEL[] = {
244244
{PB_12, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
245245
{NC, NC, 0}
246246
};
247+
248+
const PinMap PinMap_CAN_RD[] = {
249+
{PB_8 , CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)},
250+
{PA_11, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)},
251+
{NC, NC, 0}
252+
};
253+
254+
const PinMap PinMap_CAN_TD[] = {
255+
{PB_9 , CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)},
256+
{PA_12, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)},
257+
{NC, NC, 0}
258+
};

hal/targets/hal/TARGET_STM/TARGET_STM32L4/TARGET_NUCLEO_L476RG/device.h

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

4242

4343

44+
#define DEVICE_CAN 1
45+
4446
//=======================================
4547

4648
#define DEVICE_ID_LENGTH 24

hal/targets/hal/TARGET_STM/TARGET_STM32L4/TARGET_NUCLEO_L476RG/objects.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,11 @@ struct pwmout_s {
110110
uint32_t inverted;
111111
};
112112

113+
struct can_s {
114+
CANName can;
115+
int index;
116+
};
117+
113118
#include "gpio_object.h"
114119

115120
#ifdef __cplusplus

libraries/tests/mbed/can/main.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ CAN can1(PD_0, PD_1);
1919
defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F303K8) || \
2020
defined(TARGET_NUCLEO_F302R8) || defined(TARGET_NUCLEO_F446RE) || \
2121
defined(TARGET_DISCO_F429ZI) || defined(TARGET_NUCLEO_F103RB) || \
22-
defined(TARGET_NUCLEO_F746ZG)
22+
defined(TARGET_NUCLEO_F746ZG) || defined(TARGET_NUCLEO_L476RG)
2323
CAN can1(PA_11, PA_12);
2424
#elif defined(TARGET_DISCO_F469NI) ||defined(TARGET_DISCO_F746NG)
2525
CAN can1(PB_8, PB_9);
@@ -66,7 +66,7 @@ int main() {
6666
!defined(TARGET_NUCLEO_F042K6) && !defined(TARGET_NUCLEO_F334R8) && \
6767
!defined(TARGET_NUCLEO_F303RE) && !defined(TARGET_NUCLEO_F303K8) && \
6868
!defined(TARGET_NUCLEO_F302R8) && !defined(TARGET_NUCLEO_F103RB) && \
69-
!defined(TARGET_DISCO_L476VG))
69+
!defined(TARGET_DISCO_L476VG) && !defined(TARGET_NUCLEO_L476RG))
7070
printf("loop()\n");
7171
if(can2.read(msg)) {
7272
printmsg("Rx message:", &msg);

libraries/tests/mbed/can_interrupt/main.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ CAN can1(PD_0, PD_1);
1919
defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F303K8) || \
2020
defined(TARGET_NUCLEO_F302R8) || defined(TARGET_NUCLEO_F446RE) || \
2121
defined(TARGET_DISCO_F429ZI) || defined(TARGET_NUCLEO_F103RB) || \
22-
defined(TARGET_NUCLEO_F746ZG)
22+
defined(TARGET_NUCLEO_F746ZG) || defined(TARGET_NUCLEO_L476RG)
2323
CAN can1(PA_11, PA_12);
2424
#elif defined(TARGET_DISCO_F469NI) || defined(TARGET_DISCO_F746NG)
2525
CAN can1(PB_8, PB_9);
@@ -61,7 +61,7 @@ void send() {
6161
!defined(TARGET_NUCLEO_F042K6) && !defined(TARGET_NUCLEO_F334R8) && \
6262
!defined(TARGET_NUCLEO_F303RE) && !defined(TARGET_NUCLEO_F303K8) && \
6363
!defined(TARGET_NUCLEO_F302R8) && !defined(TARGET_NUCLEO_F103RB) && \
64-
!defined(TARGET_DISCO_L476VG))
64+
!defined(TARGET_DISCO_L476VG) && !defined(TARGET_NUCLEO_L476RG))
6565
void read() {
6666
CANMessage msg;
6767
printf("rx()\n");
@@ -80,7 +80,7 @@ int main() {
8080
!defined(TARGET_NUCLEO_F042K6) && !defined(TARGET_NUCLEO_F334R8) && \
8181
!defined(TARGET_NUCLEO_F303RE) && !defined(TARGET_NUCLEO_F303K8) && \
8282
!defined(TARGET_NUCLEO_F302R8) && !defined(TARGET_NUCLEO_F103RB) && \
83-
!defined(TARGET_DISCO_L476VG))
83+
!defined(TARGET_DISCO_L476VG) && !defined(TARGET_NUCLEO_L476RG))
8484
can2.attach(&read);
8585
#endif
8686
while(1) {

libraries/tests/mbed/can_loopback/main.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ CAN can1(P5_9, P5_10);
1818
defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F303K8) || \
1919
defined(TARGET_NUCLEO_F302R8) || defined(TARGET_NUCLEO_F446RE) || \
2020
defined(TARGET_DISCO_F429ZI) || defined(TARGET_NUCLEO_F103RB) || \
21-
defined(TARGET_NUCLEO_F746ZG) || defined(TARGET_DISCO_L476VG)
21+
defined(TARGET_NUCLEO_F746ZG) || defined(TARGET_DISCO_L476VG) || \
22+
defined(TARGET_NUCLEO_L476RG)
2223
CAN can1(PA_11, PA_12);
2324
#elif defined(TARGET_DISCO_F469NI) || defined(TARGET_DISCO_F746NG)
2425
CAN can1(PB_8, PB_9);

workspace_tools/tests.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@
105105
* NUCLEO_F746ZG: (RX=PA_11, TX=PA_12)
106106
* DISCO_F746NG: (RX=PB_8, TX=PB_9)
107107
* DISCO_L476VG: (RX=PA_11, TX=PA_12)
108+
* NUCLEO_L476RG: (RX=PA_11, TX=PA_12)
108109
109110
"""
110111
TESTS = [
@@ -314,7 +315,7 @@
314315
"NUCLEO_F091RC", "NUCLEO_F072RB", "NUCLEO_F042K6", "NUCLEO_F334R8",
315316
"NUCLEO_F303RE", "NUCLEO_F303K8", "NUCLEO_F302R8", "NUCLEO_F446RE",
316317
"DISCO_F469NI", "DISCO_F429ZI", "NUCLEO_F103RB", "NUCLEO_F746ZG",
317-
"DISCO_F746NG", "DISCO_L476VG"]
318+
"DISCO_F746NG", "DISCO_L476VG", "NUCLEO_L476RG"]
318319
},
319320
{
320321
"id": "MBED_BLINKY", "description": "Blinky",
@@ -588,7 +589,8 @@
588589
"mcu": ["LPC1768", "LPC4088", "LPC1549", "RZ_A1H", "B96B_F446VE", "NUCLEO_F091RC",
589590
"NUCLEO_F072RB", "NUCLEO_F042K6", "NUCLEO_F334R8", "NUCLEO_F303RE",
590591
"NUCLEO_F303K8", "NUCLEO_F302R8", "NUCLEO_F446RE", "DISCO_F469NI",
591-
"DISCO_F429ZI", "NUCLEO_F103RB", "NUCLEO_F746ZG", "DISCO_F746NG"]
592+
"DISCO_F429ZI", "NUCLEO_F103RB", "NUCLEO_F746ZG", "DISCO_F746NG",
593+
"NUCLEO_L476RG"]
592594
},
593595
{
594596
"id": "MBED_30", "description": "CAN network test using interrupts",
@@ -597,7 +599,8 @@
597599
"mcu": ["LPC1768", "LPC4088", "LPC1549", "RZ_A1H", "B96B_F446VE", "NUCLEO_F091RC",
598600
"NUCLEO_F072RB", "NUCLEO_F042K6", "NUCLEO_F334R8", "NUCLEO_F303RE",
599601
"NUCLEO_F303K8", "NUCLEO_F302R8", "NUCLEO_F446RE", "DISCO_F469NI",
600-
"DISCO_F429ZI", "NUCLEO_F103RB", "NUCLEO_F746ZG", "DISCO_F746NG"]
602+
"DISCO_F429ZI", "NUCLEO_F103RB", "NUCLEO_F746ZG", "DISCO_F746NG",
603+
"NUCLEO_L476RG"]
601604
},
602605
{
603606
"id": "MBED_31", "description": "PWM LED test",

0 commit comments

Comments
 (0)