mirror of https://github.com/ARMmbed/mbed-os.git
[NUCLEO_F042K6] Added CAN support
Added CAN API support for NUCLEO_F042K6 target. "stm32f042x6.h" file was changed to avoid compilation errors. Change-Id: I9622a233775fc6834201a322740bf5026244d50epull/1714/head
parent
d140e9959a
commit
fad2190225
|
|
@ -672,7 +672,7 @@ typedef struct
|
||||||
#define IWDG ((IWDG_TypeDef *) IWDG_BASE)
|
#define IWDG ((IWDG_TypeDef *) IWDG_BASE)
|
||||||
#define USART2 ((USART_TypeDef *) USART2_BASE)
|
#define USART2 ((USART_TypeDef *) USART2_BASE)
|
||||||
#define I2C1 ((I2C_TypeDef *) I2C1_BASE)
|
#define I2C1 ((I2C_TypeDef *) I2C1_BASE)
|
||||||
#define CAN ((CAN_TypeDef *) CAN_BASE)
|
#define CAN1 ((CAN_TypeDef *) CAN_BASE)
|
||||||
#define CRS ((CRS_TypeDef *) CRS_BASE)
|
#define CRS ((CRS_TypeDef *) CRS_BASE)
|
||||||
#define PWR ((PWR_TypeDef *) PWR_BASE)
|
#define PWR ((PWR_TypeDef *) PWR_BASE)
|
||||||
#define CEC ((CEC_TypeDef *) CEC_BASE)
|
#define CEC ((CEC_TypeDef *) CEC_BASE)
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,10 @@ typedef enum {
|
||||||
PWM_17 = (int)TIM17_BASE
|
PWM_17 = (int)TIM17_BASE
|
||||||
} PWMName;
|
} PWMName;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
CAN_1 = (int)CAN_BASE
|
||||||
|
} CANName;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -146,3 +146,14 @@ const PinMap PinMap_SPI_SSEL[] = {
|
||||||
// {PA_15, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF0_SPI1)},
|
// {PA_15, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF0_SPI1)},
|
||||||
{NC, NC, 0}
|
{NC, NC, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const PinMap PinMap_CAN_RD[] = {
|
||||||
|
// {PB_8 , CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF4_CAN)},
|
||||||
|
{PA_11, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF4_CAN)},
|
||||||
|
{NC, NC, 0}
|
||||||
|
};
|
||||||
|
|
||||||
|
const PinMap PinMap_CAN_TD[] = {
|
||||||
|
{PA_12, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF4_CAN)},
|
||||||
|
{NC, NC, 0}
|
||||||
|
};
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,8 @@
|
||||||
|
|
||||||
#define DEVICE_SLEEP 1
|
#define DEVICE_SLEEP 1
|
||||||
|
|
||||||
|
#define DEVICE_CAN 1
|
||||||
|
|
||||||
//=======================================
|
//=======================================
|
||||||
|
|
||||||
#define DEVICE_SEMIHOST 0
|
#define DEVICE_SEMIHOST 0
|
||||||
|
|
|
||||||
|
|
@ -95,6 +95,11 @@ struct pwmout_s {
|
||||||
uint32_t pulse;
|
uint32_t pulse;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct can_s {
|
||||||
|
CANName can;
|
||||||
|
int index;
|
||||||
|
};
|
||||||
|
|
||||||
#include "gpio_object.h"
|
#include "gpio_object.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,8 @@ CAN can1(D2, D3);
|
||||||
#elif defined(TARGET_B96B_F446VE)
|
#elif defined(TARGET_B96B_F446VE)
|
||||||
// B96B_F446VE support only single CAN channel
|
// B96B_F446VE support only single CAN channel
|
||||||
CAN can1(PD_0, PD_1);
|
CAN can1(PD_0, PD_1);
|
||||||
#elif defined(TARGET_NUCLEO_F091RC) || defined(TARGET_NUCLEO_F072RB)
|
#elif defined(TARGET_NUCLEO_F091RC) || defined(TARGET_NUCLEO_F072RB) || \
|
||||||
|
defined(TARGET_NUCLEO_F042K6)
|
||||||
CAN can1(PA_11, PA_12);
|
CAN can1(PA_11, PA_12);
|
||||||
#else
|
#else
|
||||||
CAN can1(p9, p10);
|
CAN can1(p9, p10);
|
||||||
|
|
@ -51,7 +52,8 @@ int main() {
|
||||||
CANMessage msg;
|
CANMessage msg;
|
||||||
while(1) {
|
while(1) {
|
||||||
#if (!defined (TARGET_LPC1549) && !defined(TARGET_B96B_F446VE) && \
|
#if (!defined (TARGET_LPC1549) && !defined(TARGET_B96B_F446VE) && \
|
||||||
!defined(TARGET_NUCLEO_F091RC) && !defined(TARGET_NUCLEO_F072RB))
|
!defined(TARGET_NUCLEO_F091RC) && !defined(TARGET_NUCLEO_F072RB) && \
|
||||||
|
!defined(TARGET_NUCLEO_F042K6))
|
||||||
printf("loop()\n");
|
printf("loop()\n");
|
||||||
if(can2.read(msg)) {
|
if(can2.read(msg)) {
|
||||||
printmsg("Rx message:", &msg);
|
printmsg("Rx message:", &msg);
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,8 @@ CAN can1(D2, D3);
|
||||||
#elif defined(TARGET_B96B_F446VE)
|
#elif defined(TARGET_B96B_F446VE)
|
||||||
// B96B_F446VE support only single CAN channel
|
// B96B_F446VE support only single CAN channel
|
||||||
CAN can1(PD_0, PD_1);
|
CAN can1(PD_0, PD_1);
|
||||||
#elif defined(TARGET_NUCLEO_F091RC) || defined(TARGET_NUCLEO_F072RB)
|
#elif defined(TARGET_NUCLEO_F091RC) || defined(TARGET_NUCLEO_F072RB) || \
|
||||||
|
defined(TARGET_NUCLEO_F042K6)
|
||||||
CAN can1(PA_11, PA_12);
|
CAN can1(PA_11, PA_12);
|
||||||
#else
|
#else
|
||||||
CAN can1(p9, p10);
|
CAN can1(p9, p10);
|
||||||
|
|
@ -46,7 +47,8 @@ void send() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (!defined (TARGET_LPC1549) && !defined(TARGET_B96B_F446VE) && \
|
#if (!defined (TARGET_LPC1549) && !defined(TARGET_B96B_F446VE) && \
|
||||||
!defined(TARGET_NUCLEO_F091RC) && !defined(TARGET_NUCLEO_F072RB))
|
!defined(TARGET_NUCLEO_F091RC) && !defined(TARGET_NUCLEO_F072RB) && \
|
||||||
|
!defined(TARGET_NUCLEO_F042K6))
|
||||||
void read() {
|
void read() {
|
||||||
CANMessage msg;
|
CANMessage msg;
|
||||||
printf("rx()\n");
|
printf("rx()\n");
|
||||||
|
|
@ -61,7 +63,8 @@ int main() {
|
||||||
printf("main()\n");
|
printf("main()\n");
|
||||||
ticker.attach(&send, 1);
|
ticker.attach(&send, 1);
|
||||||
#if (!defined (TARGET_LPC1549) && !defined(TARGET_B96B_F446VE) && \
|
#if (!defined (TARGET_LPC1549) && !defined(TARGET_B96B_F446VE) && \
|
||||||
!defined(TARGET_NUCLEO_F091RC) && !defined(TARGET_NUCLEO_F072RB))
|
!defined(TARGET_NUCLEO_F091RC) && !defined(TARGET_NUCLEO_F072RB) && \
|
||||||
|
!defined(TARGET_NUCLEO_F042K6))
|
||||||
can2.attach(&read);
|
can2.attach(&read);
|
||||||
#endif
|
#endif
|
||||||
while(1) {
|
while(1) {
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,8 @@ CAN can1(p9, p10);
|
||||||
CAN can1(PD_0, PD_1);
|
CAN can1(PD_0, PD_1);
|
||||||
#elif defined(TARGET_VK_RZ_A1H)
|
#elif defined(TARGET_VK_RZ_A1H)
|
||||||
CAN can1(P5_9, P5_10);
|
CAN can1(P5_9, P5_10);
|
||||||
#elif defined(TARGET_NUCLEO_F091RC) || defined(TARGET_NUCLEO_F072RB)
|
#elif defined(TARGET_NUCLEO_F091RC) || defined(TARGET_NUCLEO_F072RB) || \
|
||||||
|
defined(TARGET_NUCLEO_F042K6)
|
||||||
CAN can1(PA_11, PA_12);
|
CAN can1(PA_11, PA_12);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -93,6 +93,7 @@ Wiring:
|
||||||
* VK_RZ_A1H:(RX=P5_9, TX=P5_10)
|
* VK_RZ_A1H:(RX=P5_9, TX=P5_10)
|
||||||
* NUCLEO_F091RC: (RX=PA_11, TX=PA_12)
|
* NUCLEO_F091RC: (RX=PA_11, TX=PA_12)
|
||||||
* NUCLEO_F072RB: (RX=PA_11, TX=PA_12)
|
* NUCLEO_F072RB: (RX=PA_11, TX=PA_12)
|
||||||
|
* NUCLEO_F042K6: (RX=PA_11, TX=PA_12)
|
||||||
|
|
||||||
"""
|
"""
|
||||||
TESTS = [
|
TESTS = [
|
||||||
|
|
@ -299,7 +300,7 @@ TESTS = [
|
||||||
"duration": 20,
|
"duration": 20,
|
||||||
"peripherals": ["can_transceiver"],
|
"peripherals": ["can_transceiver"],
|
||||||
"mcu": ["LPC1549", "LPC1768","B96B_F446VE", "VK_RZ_A1H",
|
"mcu": ["LPC1549", "LPC1768","B96B_F446VE", "VK_RZ_A1H",
|
||||||
"NUCLEO_F091RC", "NUCLEO_F072RB"],
|
"NUCLEO_F091RC", "NUCLEO_F072RB", "NUCLEO_F042K6"],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "MBED_BLINKY", "description": "Blinky",
|
"id": "MBED_BLINKY", "description": "Blinky",
|
||||||
|
|
@ -571,14 +572,14 @@ TESTS = [
|
||||||
"source_dir": join(TEST_DIR, "mbed", "can"),
|
"source_dir": join(TEST_DIR, "mbed", "can"),
|
||||||
"dependencies": [MBED_LIBRARIES],
|
"dependencies": [MBED_LIBRARIES],
|
||||||
"mcu": ["LPC1768", "LPC4088", "LPC1549", "RZ_A1H", "B96B_F446VE", "NUCLEO_F091RC",
|
"mcu": ["LPC1768", "LPC4088", "LPC1549", "RZ_A1H", "B96B_F446VE", "NUCLEO_F091RC",
|
||||||
"NUCLEO_F072RB"]
|
"NUCLEO_F072RB", "NUCLEO_F042K6"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "MBED_30", "description": "CAN network test using interrupts",
|
"id": "MBED_30", "description": "CAN network test using interrupts",
|
||||||
"source_dir": join(TEST_DIR, "mbed", "can_interrupt"),
|
"source_dir": join(TEST_DIR, "mbed", "can_interrupt"),
|
||||||
"dependencies": [MBED_LIBRARIES],
|
"dependencies": [MBED_LIBRARIES],
|
||||||
"mcu": ["LPC1768", "LPC4088", "LPC1549", "RZ_A1H", "B96B_F446VE", "NUCLEO_F091RC",
|
"mcu": ["LPC1768", "LPC4088", "LPC1549", "RZ_A1H", "B96B_F446VE", "NUCLEO_F091RC",
|
||||||
"NUCLEO_F072RB"]
|
"NUCLEO_F072RB", "NUCLEO_F042K6"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "MBED_31", "description": "PWM LED test",
|
"id": "MBED_31", "description": "PWM LED test",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue