mirror of https://github.com/ARMmbed/mbed-os.git
[NUCLEO_L476RG] Added CAN support
Added CAN API support for NUCLEO_L476RG target. "stm32l476xx.h" file was changed to avoid compilation errors. Change-Id: Ifadf7048f6c72c0311ec915e47ce2190460ede68pull/1774/head
parent
155d38ef9e
commit
10cce638a2
|
@ -1336,7 +1336,6 @@ typedef struct
|
|||
#define I2C1 ((I2C_TypeDef *) I2C1_BASE)
|
||||
#define I2C2 ((I2C_TypeDef *) I2C2_BASE)
|
||||
#define I2C3 ((I2C_TypeDef *) I2C3_BASE)
|
||||
#define CAN ((CAN_TypeDef *) CAN1_BASE)
|
||||
#define CAN1 ((CAN_TypeDef *) CAN1_BASE)
|
||||
#define LPTIM1 ((LPTIM_TypeDef *) LPTIM1_BASE)
|
||||
#define PWR ((PWR_TypeDef *) PWR_BASE)
|
||||
|
|
|
@ -83,6 +83,10 @@ typedef enum {
|
|||
PWM_17 = (int)TIM17_BASE
|
||||
} PWMName;
|
||||
|
||||
typedef enum {
|
||||
CAN_1 = (int)CAN1_BASE
|
||||
} CANName;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -244,3 +244,15 @@ const PinMap PinMap_SPI_SSEL[] = {
|
|||
{PB_12, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
|
||||
{NC, NC, 0}
|
||||
};
|
||||
|
||||
const PinMap PinMap_CAN_RD[] = {
|
||||
{PB_8 , CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)},
|
||||
{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)},
|
||||
{PA_12, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)},
|
||||
{NC, NC, 0}
|
||||
};
|
||||
|
|
|
@ -41,6 +41,8 @@
|
|||
|
||||
|
||||
|
||||
#define DEVICE_CAN 1
|
||||
|
||||
//=======================================
|
||||
|
||||
#define DEVICE_ID_LENGTH 24
|
||||
|
|
|
@ -110,6 +110,11 @@ struct pwmout_s {
|
|||
uint32_t inverted;
|
||||
};
|
||||
|
||||
struct can_s {
|
||||
CANName can;
|
||||
int index;
|
||||
};
|
||||
|
||||
#include "gpio_object.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -19,7 +19,7 @@ CAN can1(PD_0, PD_1);
|
|||
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_NUCLEO_F746ZG)
|
||||
defined(TARGET_NUCLEO_F746ZG) || defined(TARGET_NUCLEO_L476RG)
|
||||
CAN can1(PA_11, PA_12);
|
||||
#elif defined(TARGET_DISCO_F469NI) ||defined(TARGET_DISCO_F746NG)
|
||||
CAN can1(PB_8, PB_9);
|
||||
|
@ -66,7 +66,7 @@ int main() {
|
|||
!defined(TARGET_NUCLEO_F042K6) && !defined(TARGET_NUCLEO_F334R8) && \
|
||||
!defined(TARGET_NUCLEO_F303RE) && !defined(TARGET_NUCLEO_F303K8) && \
|
||||
!defined(TARGET_NUCLEO_F302R8) && !defined(TARGET_NUCLEO_F103RB) && \
|
||||
!defined(TARGET_DISCO_L476VG))
|
||||
!defined(TARGET_DISCO_L476VG) && !defined(TARGET_NUCLEO_L476RG))
|
||||
printf("loop()\n");
|
||||
if(can2.read(msg)) {
|
||||
printmsg("Rx message:", &msg);
|
||||
|
|
|
@ -19,7 +19,7 @@ CAN can1(PD_0, PD_1);
|
|||
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_NUCLEO_F746ZG)
|
||||
defined(TARGET_NUCLEO_F746ZG) || defined(TARGET_NUCLEO_L476RG)
|
||||
CAN can1(PA_11, PA_12);
|
||||
#elif defined(TARGET_DISCO_F469NI) || defined(TARGET_DISCO_F746NG)
|
||||
CAN can1(PB_8, PB_9);
|
||||
|
@ -61,7 +61,7 @@ void send() {
|
|||
!defined(TARGET_NUCLEO_F042K6) && !defined(TARGET_NUCLEO_F334R8) && \
|
||||
!defined(TARGET_NUCLEO_F303RE) && !defined(TARGET_NUCLEO_F303K8) && \
|
||||
!defined(TARGET_NUCLEO_F302R8) && !defined(TARGET_NUCLEO_F103RB) && \
|
||||
!defined(TARGET_DISCO_L476VG))
|
||||
!defined(TARGET_DISCO_L476VG) && !defined(TARGET_NUCLEO_L476RG))
|
||||
void read() {
|
||||
CANMessage msg;
|
||||
printf("rx()\n");
|
||||
|
@ -80,7 +80,7 @@ int main() {
|
|||
!defined(TARGET_NUCLEO_F042K6) && !defined(TARGET_NUCLEO_F334R8) && \
|
||||
!defined(TARGET_NUCLEO_F303RE) && !defined(TARGET_NUCLEO_F303K8) && \
|
||||
!defined(TARGET_NUCLEO_F302R8) && !defined(TARGET_NUCLEO_F103RB) && \
|
||||
!defined(TARGET_DISCO_L476VG))
|
||||
!defined(TARGET_DISCO_L476VG) && !defined(TARGET_NUCLEO_L476RG))
|
||||
can2.attach(&read);
|
||||
#endif
|
||||
while(1) {
|
||||
|
|
|
@ -18,7 +18,8 @@ CAN can1(P5_9, P5_10);
|
|||
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_NUCLEO_F746ZG) || defined(TARGET_DISCO_L476VG)
|
||||
defined(TARGET_NUCLEO_F746ZG) || defined(TARGET_DISCO_L476VG) || \
|
||||
defined(TARGET_NUCLEO_L476RG)
|
||||
CAN can1(PA_11, PA_12);
|
||||
#elif defined(TARGET_DISCO_F469NI) || defined(TARGET_DISCO_F746NG)
|
||||
CAN can1(PB_8, PB_9);
|
||||
|
|
|
@ -105,6 +105,7 @@ Wiring:
|
|||
* 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)
|
||||
|
||||
"""
|
||||
TESTS = [
|
||||
|
@ -314,7 +315,7 @@ TESTS = [
|
|||
"NUCLEO_F091RC", "NUCLEO_F072RB", "NUCLEO_F042K6", "NUCLEO_F334R8",
|
||||
"NUCLEO_F303RE", "NUCLEO_F303K8", "NUCLEO_F302R8", "NUCLEO_F446RE",
|
||||
"DISCO_F469NI", "DISCO_F429ZI", "NUCLEO_F103RB", "NUCLEO_F746ZG",
|
||||
"DISCO_F746NG", "DISCO_L476VG"]
|
||||
"DISCO_F746NG", "DISCO_L476VG", "NUCLEO_L476RG"]
|
||||
},
|
||||
{
|
||||
"id": "MBED_BLINKY", "description": "Blinky",
|
||||
|
@ -588,7 +589,8 @@ 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", "NUCLEO_F746ZG", "DISCO_F746NG"]
|
||||
"DISCO_F429ZI", "NUCLEO_F103RB", "NUCLEO_F746ZG", "DISCO_F746NG",
|
||||
"NUCLEO_L476RG"]
|
||||
},
|
||||
{
|
||||
"id": "MBED_30", "description": "CAN network test using interrupts",
|
||||
|
@ -597,7 +599,8 @@ 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", "NUCLEO_F746ZG", "DISCO_F746NG"]
|
||||
"DISCO_F429ZI", "NUCLEO_F103RB", "NUCLEO_F746ZG", "DISCO_F746NG",
|
||||
"NUCLEO_L476RG"]
|
||||
},
|
||||
{
|
||||
"id": "MBED_31", "description": "PWM LED test",
|
||||
|
|
Loading…
Reference in New Issue