From 7e8695a2c53e344998fea9fc71d57c9acda121c4 Mon Sep 17 00:00:00 2001 From: Russ Butler Date: Wed, 23 Jan 2019 21:53:06 -0600 Subject: [PATCH] Add HAL API for can pinmap Add the functions can_rd_pinmap and can_td_pinmap to all targets. --- hal/can_api.h | 19 +++++++++++++++++++ .../TARGET_GD32E10X/can_api.c | 10 ++++++++++ .../TARGET_GD32F30X/can_api.c | 10 ++++++++++ .../TARGET_GD32F4XX/can_api.c | 10 ++++++++++ targets/TARGET_NUVOTON/TARGET_M451/can_api.c | 10 ++++++++++ targets/TARGET_NUVOTON/TARGET_M480/can_api.c | 10 ++++++++++ .../TARGET_NUVOTON/TARGET_NUC472/can_api.c | 10 ++++++++++ .../TARGET_LPC11CXX/can_api.c | 10 ++++++++++ targets/TARGET_NXP/TARGET_LPC15XX/can_api.c | 10 ++++++++++ targets/TARGET_NXP/TARGET_LPC176X/can_api.c | 10 ++++++++++ .../TARGET_LPC408X/TARGET_LPC4088/can_api.c | 10 ++++++++++ .../TARGET_LPC4088_DM/can_api.c | 10 ++++++++++ .../TARGET_RENESAS/TARGET_RZ_A1XX/can_api.c | 12 +++++++++++- targets/TARGET_STM/can_api.c | 10 ++++++++++ 14 files changed, 150 insertions(+), 1 deletion(-) diff --git a/hal/can_api.h b/hal/can_api.h index 777dc6b443..675c7a1b7c 100644 --- a/hal/can_api.h +++ b/hal/can_api.h @@ -21,6 +21,7 @@ #define MBED_CAN_API_H #include "device.h" +#include "pinmap.h" #if DEVICE_CAN @@ -76,6 +77,24 @@ unsigned char can_rderror(can_t *obj); unsigned char can_tderror(can_t *obj); void can_monitor(can_t *obj, int silent); +/** Get the pins that support CAN RD + * + * Return a PinMap array of pins that support CAN RD. The + * array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *can_rd_pinmap(void); + +/** Get the pins that support CAN TD + * + * Return a PinMap array of pins that support CAN TD. The + * array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *can_td_pinmap(void); + #ifdef __cplusplus }; #endif diff --git a/targets/TARGET_GigaDevice/TARGET_GD32E10X/can_api.c b/targets/TARGET_GigaDevice/TARGET_GD32E10X/can_api.c index 2c79789307..df449bbad8 100644 --- a/targets/TARGET_GigaDevice/TARGET_GD32E10X/can_api.c +++ b/targets/TARGET_GigaDevice/TARGET_GD32E10X/can_api.c @@ -630,4 +630,14 @@ void can_monitor(can_t *obj, int silent) } } +const PinMap *can_rd_pinmap() +{ + return PinMap_CAN_TD; +} + +const PinMap *can_td_pinmap() +{ + return PinMap_CAN_RD; +} + #endif diff --git a/targets/TARGET_GigaDevice/TARGET_GD32F30X/can_api.c b/targets/TARGET_GigaDevice/TARGET_GD32F30X/can_api.c index b404a05ffd..b93a5cf1ce 100644 --- a/targets/TARGET_GigaDevice/TARGET_GD32F30X/can_api.c +++ b/targets/TARGET_GigaDevice/TARGET_GD32F30X/can_api.c @@ -629,4 +629,14 @@ int can_filter(can_t *obj, uint32_t id, uint32_t mask, CANFormat format, int32_t return handle; } +const PinMap *can_rd_pinmap() +{ + return PinMap_CAN_TD; +} + +const PinMap *can_td_pinmap() +{ + return PinMap_CAN_RD; +} + #endif diff --git a/targets/TARGET_GigaDevice/TARGET_GD32F4XX/can_api.c b/targets/TARGET_GigaDevice/TARGET_GD32F4XX/can_api.c index 4f3a508078..65a5ed54d4 100644 --- a/targets/TARGET_GigaDevice/TARGET_GD32F4XX/can_api.c +++ b/targets/TARGET_GigaDevice/TARGET_GD32F4XX/can_api.c @@ -628,4 +628,14 @@ int can_filter(can_t *obj, uint32_t id, uint32_t mask, CANFormat format, int32_t return handle; } +const PinMap *can_rd_pinmap() +{ + return PinMap_CAN_TD; +} + +const PinMap *can_td_pinmap() +{ + return PinMap_CAN_RD; +} + #endif diff --git a/targets/TARGET_NUVOTON/TARGET_M451/can_api.c b/targets/TARGET_NUVOTON/TARGET_M451/can_api.c index 0fd92d9a5a..b47767670d 100644 --- a/targets/TARGET_NUVOTON/TARGET_M451/can_api.c +++ b/targets/TARGET_NUVOTON/TARGET_M451/can_api.c @@ -308,5 +308,15 @@ void can_monitor(can_t *obj, int silent) { CAN_EnterTestMode((CAN_T *)NU_MODBASE(obj->can), CAN_TEST_SILENT_Msk); } + +const PinMap *can_rd_pinmap() +{ + return PinMap_CAN_TD; +} + +const PinMap *can_td_pinmap() +{ + return PinMap_CAN_RD; +} #endif // DEVICE_CAN diff --git a/targets/TARGET_NUVOTON/TARGET_M480/can_api.c b/targets/TARGET_NUVOTON/TARGET_M480/can_api.c index ee5fde7fad..81ad0b3438 100644 --- a/targets/TARGET_NUVOTON/TARGET_M480/can_api.c +++ b/targets/TARGET_NUVOTON/TARGET_M480/can_api.c @@ -352,4 +352,14 @@ void can_monitor(can_t *obj, int silent) CAN_EnterTestMode((CAN_T *)NU_MODBASE(obj->can), CAN_TEST_SILENT_Msk); } +const PinMap *can_rd_pinmap() +{ + return PinMap_CAN_TD; +} + +const PinMap *can_td_pinmap() +{ + return PinMap_CAN_RD; +} + #endif // DEVICE_CAN diff --git a/targets/TARGET_NUVOTON/TARGET_NUC472/can_api.c b/targets/TARGET_NUVOTON/TARGET_NUC472/can_api.c index e77948e8e3..c81300549c 100644 --- a/targets/TARGET_NUVOTON/TARGET_NUC472/can_api.c +++ b/targets/TARGET_NUVOTON/TARGET_NUC472/can_api.c @@ -356,5 +356,15 @@ void can_monitor(can_t *obj, int silent) { CAN_EnterTestMode((CAN_T *)NU_MODBASE(obj->can), CAN_TEST_SILENT_Msk); } + +const PinMap *can_rd_pinmap() +{ + return PinMap_CAN_TD; +} + +const PinMap *can_td_pinmap() +{ + return PinMap_CAN_RD; +} #endif // DEVICE_CAN diff --git a/targets/TARGET_NXP/TARGET_LPC11XX_11CXX/TARGET_LPC11CXX/can_api.c b/targets/TARGET_NXP/TARGET_LPC11XX_11CXX/TARGET_LPC11CXX/can_api.c index dfb0da85bd..1a1a84a738 100644 --- a/targets/TARGET_NXP/TARGET_LPC11XX_11CXX/TARGET_LPC11CXX/can_api.c +++ b/targets/TARGET_NXP/TARGET_LPC11XX_11CXX/TARGET_LPC11CXX/can_api.c @@ -461,3 +461,13 @@ void can_monitor(can_t *obj, int silent) { LPC_CAN->CNTL |= CANCNTL_INIT; } } + +const PinMap *can_rd_pinmap() +{ + return PinMap_CAN_TD; +} + +const PinMap *can_td_pinmap() +{ + return PinMap_CAN_RD; +} diff --git a/targets/TARGET_NXP/TARGET_LPC15XX/can_api.c b/targets/TARGET_NXP/TARGET_LPC15XX/can_api.c index d0f0ff307e..39032a0adb 100644 --- a/targets/TARGET_NXP/TARGET_LPC15XX/can_api.c +++ b/targets/TARGET_NXP/TARGET_LPC15XX/can_api.c @@ -626,3 +626,13 @@ void can_monitor(can_t *obj, int silent) { LPC_C_CAN0->CANCNTL |= (1UL << 0); } } + +const PinMap *can_rd_pinmap() +{ + return PinMap_CAN_TD; +} + +const PinMap *can_td_pinmap() +{ + return PinMap_CAN_RD; +} diff --git a/targets/TARGET_NXP/TARGET_LPC176X/can_api.c b/targets/TARGET_NXP/TARGET_LPC176X/can_api.c index f1301c24c0..754de27914 100644 --- a/targets/TARGET_NXP/TARGET_LPC176X/can_api.c +++ b/targets/TARGET_NXP/TARGET_LPC176X/can_api.c @@ -452,3 +452,13 @@ void can_monitor(can_t *obj, int silent) { can_enable(obj); } } + +const PinMap *can_rd_pinmap() +{ + return PinMap_CAN_TD; +} + +const PinMap *can_td_pinmap() +{ + return PinMap_CAN_RD; +} diff --git a/targets/TARGET_NXP/TARGET_LPC408X/TARGET_LPC4088/can_api.c b/targets/TARGET_NXP/TARGET_LPC408X/TARGET_LPC4088/can_api.c index aeda13e60a..dd0be650dc 100644 --- a/targets/TARGET_NXP/TARGET_LPC408X/TARGET_LPC4088/can_api.c +++ b/targets/TARGET_NXP/TARGET_LPC408X/TARGET_LPC4088/can_api.c @@ -393,3 +393,13 @@ void can_monitor(can_t *obj, int silent) { can_enable(obj); } } + +const PinMap *can_rd_pinmap() +{ + return PinMap_CAN_TD; +} + +const PinMap *can_td_pinmap() +{ + return PinMap_CAN_RD; +} diff --git a/targets/TARGET_NXP/TARGET_LPC408X/TARGET_LPC4088_DM/can_api.c b/targets/TARGET_NXP/TARGET_LPC408X/TARGET_LPC4088_DM/can_api.c index 03f8bb1977..f2a0c8b085 100644 --- a/targets/TARGET_NXP/TARGET_LPC408X/TARGET_LPC4088_DM/can_api.c +++ b/targets/TARGET_NXP/TARGET_LPC408X/TARGET_LPC4088_DM/can_api.c @@ -390,3 +390,13 @@ void can_monitor(can_t *obj, int silent) { can_enable(obj); } } + +const PinMap *can_rd_pinmap() +{ + return PinMap_CAN_TD; +} + +const PinMap *can_td_pinmap() +{ + return PinMap_CAN_RD; +} diff --git a/targets/TARGET_RENESAS/TARGET_RZ_A1XX/can_api.c b/targets/TARGET_RENESAS/TARGET_RZ_A1XX/can_api.c index b91e608f87..74992355a8 100644 --- a/targets/TARGET_RENESAS/TARGET_RZ_A1XX/can_api.c +++ b/targets/TARGET_RENESAS/TARGET_RZ_A1XX/can_api.c @@ -388,7 +388,7 @@ static void can_err_irq(uint32_t ch, CanIrqType type) { *dmy_erfl &= 0xFFFFFF7F; // Clear ALF break; case IRQ_BUS: - *dmy_erfl &= 0xFFFF00FF; // Clear ADERR、B0ERR、B1ERR、CERR、AERR、FERR、SERR + *dmy_erfl &= 0xFFFF00FF; // Clear ADERRソスAB0ERRソスAB1ERRソスACERRソスAAERRソスAFERRソスASERR *dmy_erfl &= 0xFFFFFFFE; // Clear BEF break; case IRQ_WAKEUP: @@ -1033,3 +1033,13 @@ static void can_set_channel_mode(uint32_t ch, int mode) { } } +const PinMap *can_rd_pinmap() +{ + return PinMap_CAN_TD; +} + +const PinMap *can_td_pinmap() +{ + return PinMap_CAN_RD; +} + diff --git a/targets/TARGET_STM/can_api.c b/targets/TARGET_STM/can_api.c index d5fa84cd7a..0595ae3a27 100644 --- a/targets/TARGET_STM/can_api.c +++ b/targets/TARGET_STM/can_api.c @@ -1205,4 +1205,14 @@ void can_irq_set(can_t *obj, CanIrqType type, uint32_t enable) #endif /* FDCAN1 */ +const PinMap *can_rd_pinmap() +{ + return PinMap_CAN_TD; +} + +const PinMap *can_td_pinmap() +{ + return PinMap_CAN_RD; +} + #endif // DEVICE_CAN