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 USART2              ((USART_TypeDef *) USART2_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 PWR                 ((PWR_TypeDef *) PWR_BASE)
 | 
			
		||||
#define CEC                 ((CEC_TypeDef *) CEC_BASE)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -68,6 +68,10 @@ typedef enum {
 | 
			
		|||
    PWM_17 = (int)TIM17_BASE
 | 
			
		||||
} PWMName;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    CAN_1 = (int)CAN_BASE
 | 
			
		||||
} CANName;
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#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)},
 | 
			
		||||
    {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_CAN              1
 | 
			
		||||
 | 
			
		||||
//=======================================
 | 
			
		||||
 | 
			
		||||
#define DEVICE_SEMIHOST         0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -95,6 +95,11 @@ struct pwmout_s {
 | 
			
		|||
    uint32_t pulse;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct can_s {
 | 
			
		||||
    CANName can;
 | 
			
		||||
    int index;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#include "gpio_object.h"
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,8 @@ CAN can1(D2, D3);
 | 
			
		|||
#elif defined(TARGET_B96B_F446VE)
 | 
			
		||||
// B96B_F446VE support only single CAN channel
 | 
			
		||||
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);
 | 
			
		||||
#else
 | 
			
		||||
CAN can1(p9, p10);
 | 
			
		||||
| 
						 | 
				
			
			@ -51,7 +52,8 @@ int main() {
 | 
			
		|||
    CANMessage msg;
 | 
			
		||||
    while(1) {
 | 
			
		||||
#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");
 | 
			
		||||
        if(can2.read(msg)) {
 | 
			
		||||
            printmsg("Rx message:", &msg);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,8 @@ CAN can1(D2, D3);
 | 
			
		|||
#elif defined(TARGET_B96B_F446VE)
 | 
			
		||||
// B96B_F446VE support only single CAN channel
 | 
			
		||||
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);
 | 
			
		||||
#else
 | 
			
		||||
CAN can1(p9, p10);
 | 
			
		||||
| 
						 | 
				
			
			@ -46,7 +47,8 @@ void send() {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
#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() {
 | 
			
		||||
    CANMessage msg;
 | 
			
		||||
    printf("rx()\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -61,7 +63,8 @@ int main() {
 | 
			
		|||
    printf("main()\n");
 | 
			
		||||
    ticker.attach(&send, 1);
 | 
			
		||||
#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);
 | 
			
		||||
#endif
 | 
			
		||||
    while(1) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,7 +13,8 @@ CAN can1(p9, p10);
 | 
			
		|||
CAN can1(PD_0, PD_1);
 | 
			
		||||
#elif defined(TARGET_VK_RZ_A1H)
 | 
			
		||||
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);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -93,6 +93,7 @@ Wiring:
 | 
			
		|||
     * VK_RZ_A1H:(RX=P5_9, TX=P5_10)
 | 
			
		||||
     * NUCLEO_F091RC: (RX=PA_11, TX=PA_12)
 | 
			
		||||
     * NUCLEO_F072RB: (RX=PA_11, TX=PA_12)
 | 
			
		||||
     * NUCLEO_F042K6: (RX=PA_11, TX=PA_12)
 | 
			
		||||
 | 
			
		||||
"""
 | 
			
		||||
TESTS = [
 | 
			
		||||
| 
						 | 
				
			
			@ -299,7 +300,7 @@ TESTS = [
 | 
			
		|||
        "duration": 20,
 | 
			
		||||
        "peripherals": ["can_transceiver"],
 | 
			
		||||
        "mcu": ["LPC1549", "LPC1768","B96B_F446VE", "VK_RZ_A1H",
 | 
			
		||||
		"NUCLEO_F091RC", "NUCLEO_F072RB"],
 | 
			
		||||
		"NUCLEO_F091RC", "NUCLEO_F072RB", "NUCLEO_F042K6"],
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "id": "MBED_BLINKY", "description": "Blinky",
 | 
			
		||||
| 
						 | 
				
			
			@ -571,14 +572,14 @@ TESTS = [
 | 
			
		|||
        "source_dir": join(TEST_DIR, "mbed", "can"),
 | 
			
		||||
        "dependencies": [MBED_LIBRARIES],
 | 
			
		||||
        "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",
 | 
			
		||||
        "source_dir": join(TEST_DIR, "mbed", "can_interrupt"),
 | 
			
		||||
        "dependencies": [MBED_LIBRARIES],
 | 
			
		||||
        "mcu": ["LPC1768", "LPC4088", "LPC1549", "RZ_A1H", "B96B_F446VE", "NUCLEO_F091RC",
 | 
			
		||||
                "NUCLEO_F072RB"]
 | 
			
		||||
                "NUCLEO_F072RB", "NUCLEO_F042K6"]
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "id": "MBED_31", "description": "PWM LED test",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue