Skip to content

Commit 957573e

Browse files
committed
K64F - pins addition to mbed HAL, uart - 4 instances, fix i2c instance which was not stored
1 parent 2347a6d commit 957573e

File tree

5 files changed

+120
-26
lines changed

5 files changed

+120
-26
lines changed

libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/PeripheralNames.h

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ typedef enum {
3030
UART_0 = 0,
3131
UART_1 = 1,
3232
UART_2 = 2,
33+
UART_3 = 3,
34+
UART_4 = 4,
3335
} UARTName;
3436

3537
#define STDIO_UART_TX USBTX
@@ -38,6 +40,8 @@ typedef enum {
3840

3941
typedef enum {
4042
I2C_0 = 0,
43+
I2C_1 = 1,
44+
I2C_2 = 2,
4145
} I2CName;
4246

4347
#define TPM_SHIFT 8
@@ -81,6 +85,9 @@ typedef enum {
8185
ADC0_SE13 = (0 << ADC_INSTANCE_SHIFT) | 13,
8286
ADC0_SE14 = (0 << ADC_INSTANCE_SHIFT) | 14,
8387
ADC0_SE15 = (0 << ADC_INSTANCE_SHIFT) | 15,
88+
ADC0_SE16 = (0 << ADC_INSTANCE_SHIFT) | 16,
89+
ADC0_SE17 = (0 << ADC_INSTANCE_SHIFT) | 17,
90+
ADC0_SE18 = (0 << ADC_INSTANCE_SHIFT) | 18,
8491
ADC1_SE4b = (1 << ADC_INSTANCE_SHIFT) | 4,
8592
ADC1_SE5b = (1 << ADC_INSTANCE_SHIFT) | 5,
8693
ADC1_SE6b = (1 << ADC_INSTANCE_SHIFT) | 6,
@@ -90,7 +97,10 @@ typedef enum {
9097
ADC1_SE12 = (1 << ADC_INSTANCE_SHIFT) | 12,
9198
ADC1_SE13 = (1 << ADC_INSTANCE_SHIFT) | 13,
9299
ADC1_SE14 = (1 << ADC_INSTANCE_SHIFT) | 14,
93-
ADC1_SE15 = (1 << ADC_INSTANCE_SHIFT) | 15
100+
ADC1_SE15 = (1 << ADC_INSTANCE_SHIFT) | 15,
101+
ADC1_SE16 = (1 << ADC_INSTANCE_SHIFT) | 16,
102+
ADC1_SE17 = (1 << ADC_INSTANCE_SHIFT) | 17,
103+
ADC1_SE18 = (1 << ADC_INSTANCE_SHIFT) | 18,
94104
} ADCName;
95105

96106
typedef enum {
@@ -100,6 +110,8 @@ typedef enum {
100110

101111
typedef enum {
102112
SPI_0 = 0,
113+
SPI_1 = 1,
114+
SPI_2 = 2,
103115
} SPIName;
104116

105117
#ifdef __cplusplus

libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/analogin_api.c

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,26 @@
2525
#define MAX_FADC 6000000
2626

2727
static const PinMap PinMap_ADC[] = {
28-
{PTC0, ADC0_SE14, 0},
29-
{NC, NC, 0}
28+
{PTC2, ADC0_SE4b, 0},
29+
{PTC8, ADC1_SE4b, 0},
30+
{PTC9, ADC0_SE5b, 0},
31+
{PTD1, ADC0_SE5b, 0},
32+
{PTC10, ADC0_SE6b, 0},
33+
{PTD5, ADC0_SE6b, 0},
34+
{PTC11, ADC0_SE7b, 0},
35+
{PTD7, ADC0_SE7b, 0},
36+
{PTB0 , ADC0_SE8 , 0},
37+
{PTB1 , ADC0_SE9 , 0},
38+
{PTB2 , ADC0_SE12, 0},
39+
{PTB3 , ADC0_SE13, 0},
40+
{PTC0 , ADC0_SE14, 0},
41+
{PTB10, ADC1_SE14, 0},
42+
{PTB11, ADC1_SE15, 0},
43+
{PTC1 , ADC0_SE15, 0},
44+
{PTE24, ADC0_SE17, 0},
45+
{PTA17, ADC1_SE17, 0},
46+
{PTE25, ADC0_SE18, 0},
47+
{NC , NC , 0}
3048
};
3149

3250
void analogin_init(analogin_t *obj, PinName pin) {

libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/i2c_api.c

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,24 @@
2323

2424
static const PinMap PinMap_I2C_SDA[] = {
2525
{PTE25, I2C_0, 5},
26+
{PTB1 , I2C_0, 2},
27+
{PTB3 , I2C_0, 2},
28+
{PTC11, I2C_1, 2},
29+
{PTA13, I2C_2, 5},
30+
{PTD3 , I2C_0, 7},
31+
{PTE0 , I2C_1, 6},
2632
{NC , NC , 0}
2733
};
2834

2935
static const PinMap PinMap_I2C_SCL[] = {
3036
{PTE24, I2C_0, 5},
37+
{PTB0 , I2C_0, 2},
38+
{PTB2 , I2C_0, 2},
39+
{PTC10, I2C_1, 2},
40+
{PTA12, I2C_2, 5},
41+
{PTA14, I2C_2, 5},
42+
{PTD2 , I2C_0, 7},
43+
{PTE1 , I2C_1, 6},
3144
{NC , NC , 0}
3245
};
3346

@@ -36,13 +49,13 @@ static uint8_t first_read;
3649
void i2c_init(i2c_t *obj, PinName sda, PinName scl) {
3750
uint32_t i2c_sda = pinmap_peripheral(sda, PinMap_I2C_SDA);
3851
uint32_t i2c_scl = pinmap_peripheral(scl, PinMap_I2C_SCL);
39-
uint32_t i2c_instance = pinmap_merge(i2c_sda, i2c_scl);
40-
if ((int)i2c_instance == NC) {
52+
obj->instance = pinmap_merge(i2c_sda, i2c_scl);
53+
if ((int)obj->instance == NC) {
4154
error("I2C pin mapping failed");
4255
}
4356

44-
clock_manager_set_gate(kClockModuleI2C, i2c_instance, true);
45-
i2c_hal_enable(i2c_instance);
57+
clock_manager_set_gate(kClockModuleI2C, obj->instance, true);
58+
i2c_hal_enable(obj->instance);
4659
i2c_frequency(obj, 100000);
4760

4861
pinmap_pinout(sda, PinMap_I2C_SDA);

libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/serial_api.c

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,20 +29,39 @@
2929

3030
/* TODO:
3131
putchar/getchar 9 and 10 bits support
32-
5 UARTS implementation
3332
*/
3433

3534
static const PinMap PinMap_UART_TX[] = {
3635
{PTB17, UART_0, 3},
36+
{PTC17, UART_3, 3},
37+
{PTD7 , UART_0, 3},
38+
{PTD3 , UART_2, 3},
39+
{PTC4 , UART_1, 3},
40+
{PTC15, UART_4, 3},
41+
{PTB11, UART_3, 3},
42+
{PTA14, UART_0, 3},
43+
{PTE24, UART_4, 3},
44+
{PTE4 , UART_3, 3},
45+
{PTE0, UART_1, 3},
3746
{NC , NC , 0}
3847
};
3948

4049
static const PinMap PinMap_UART_RX[] = {
4150
{PTB16, UART_0, 3},
51+
{PTE1 , UART_1, 3},
52+
{PTE5 , UART_3, 3},
53+
{PTE25, UART_4, 3},
54+
{PTA15, UART_0, 3},
55+
{PTC16, UART_3, 3},
56+
{PTB10, UART_3, 3},
57+
{PTC3 , UART_1, 3},
58+
{PTC14, UART_4, 3},
59+
{PTD2 , UART_2, 3},
60+
{PTC6 , UART_0, 3},
4261
{NC , NC , 0}
4362
};
4463

45-
#define UART_NUM 3
64+
#define UART_NUM 4
4665

4766
static uint32_t serial_irq_ids[UART_NUM] = {0};
4867
static uart_irq_handler irq_handler;
@@ -65,17 +84,11 @@ static uint32_t serial_get_clock(uint32_t uart_instance)
6584
void serial_init(serial_t *obj, PinName tx, PinName rx) {
6685
uint32_t uart_tx = pinmap_peripheral(tx, PinMap_UART_TX);
6786
uint32_t uart_rx = pinmap_peripheral(rx, PinMap_UART_RX);
68-
uint32_t uart_instance = (UARTName)pinmap_merge(uart_tx, uart_rx);
69-
if ((int)uart_instance == NC) {
87+
obj->index = (UARTName)pinmap_merge(uart_tx, uart_rx);
88+
if ((int)obj->index == NC) {
7089
error("Serial pinout mapping failed");
7190
}
7291

73-
switch (uart_instance) {
74-
case UART_0: obj->index = 0; break;
75-
case UART_1: obj->index = 1; break;
76-
case UART_2: obj->index = 2; break;
77-
}
78-
7992
uart_config_t uart_config;
8093
uart_config.baudRate = 9600;
8194
uart_config.bitCountPerChar = kUart8BitsPerChar;
@@ -95,7 +108,7 @@ void serial_init(serial_t *obj, PinName tx, PinName rx) {
95108
pin_mode(tx, PullUp);
96109
pin_mode(rx, PullUp);
97110

98-
if (uart_instance == STDIO_UART) {
111+
if (obj->index == STDIO_UART) {
99112
stdio_uart_inited = 1;
100113
memcpy(&stdio_uart, obj, sizeof(serial_t));
101114
}
@@ -141,6 +154,14 @@ void uart2_irq() {
141154
uart_irq(uart_hal_is_transmit_data_register_empty(2), uart_hal_is_receive_data_register_full(2), 2);
142155
}
143156

157+
void uart3_irq() {
158+
uart_irq(uart_hal_is_transmit_data_register_empty(3), uart_hal_is_receive_data_register_full(3), 3);
159+
}
160+
161+
void uart4_irq() {
162+
uart_irq(uart_hal_is_transmit_data_register_empty(4), uart_hal_is_receive_data_register_full(4), 4);
163+
}
164+
144165
void serial_irq_handler(serial_t *obj, uart_irq_handler handler, uint32_t id) {
145166
irq_handler = handler;
146167
serial_irq_ids[obj->index] = id;
@@ -154,6 +175,8 @@ void serial_irq_set(serial_t *obj, SerialIrq irq, uint32_t enable) {
154175
case 0: irq_n=UART0_RX_TX_IRQn; vector = (uint32_t)&uart0_irq; break;
155176
case 1: irq_n=UART1_RX_TX_IRQn; vector = (uint32_t)&uart1_irq; break;
156177
case 2: irq_n=UART2_RX_TX_IRQn; vector = (uint32_t)&uart2_irq; break;
178+
case 3: irq_n=UART3_RX_TX_IRQn; vector = (uint32_t)&uart3_irq; break;
179+
case 4: irq_n=UART4_RX_TX_IRQn; vector = (uint32_t)&uart4_irq; break;
157180
}
158181

159182
if (enable) {

libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/spi_api.c

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,23 +24,51 @@
2424
#include "fsl_dspi_hal.h"
2525

2626
static const PinMap PinMap_SPI_SCLK[] = {
27-
{PTD1, SPI_0, 2},
28-
{NC , NC , 0}
27+
{PTD1 , SPI_0, 2},
28+
{PTE2 , SPI_1, 2},
29+
{PTA15, SPI_0, 2},
30+
{PTB11, SPI_1, 2},
31+
{PTB21, SPI_2, 2},
32+
{PTC5 , SPI_0, 2},
33+
{PTD5 , SPI_1, 7},
34+
{NC , NC , 0}
2935
};
3036

3137
static const PinMap PinMap_SPI_MOSI[] = {
32-
{PTD2, SPI_0, 2},
33-
{NC , NC , 0}
38+
{PTD2 , SPI_0, 2},
39+
{PTE1 , SPI_1, 2},
40+
{PTE3 , SPI_1, 7},
41+
{PTA16, SPI_0, 2},
42+
{PTB16, SPI_1, 2},
43+
{PTB22, SPI_2, 2},
44+
{PTC6 , SPI_0, 2},
45+
{PTD2 , SPI_0, 2},
46+
{PTD6 , SPI_0, 7},
47+
{NC , NC , 0}
3448
};
3549

3650
static const PinMap PinMap_SPI_MISO[] = {
37-
{PTD3, SPI_0, 2},
38-
{NC , NC , 0}
51+
{PTD3 , SPI_0, 2},
52+
{PTE1 , SPI_1, 7},
53+
{PTE3 , SPI_1, 2},
54+
{PTA17, SPI_0, 2},
55+
{PTB17, SPI_1, 2},
56+
{PTB23, SPI_2, 2},
57+
{PTC7 , SPI_0, 2},
58+
{PTD3 , SPI_0, 2},
59+
{PTD7 , SPI_1, 7},
60+
{NC , NC , 0}
3961
};
4062

4163
static const PinMap PinMap_SPI_SSEL[] = {
42-
{PTD0, SPI_0, 2},
43-
{NC , NC , 0}
64+
{PTD0 , SPI_0, 2},
65+
{PTE4 , SPI_1, 2},
66+
{PTA14, SPI_0, 2},
67+
{PTB10, SPI_1, 2},
68+
{PTB20, SPI_2, 2},
69+
{PTC4 , SPI_0, 2},
70+
{PTD4 , SPI_1, 7},
71+
{NC , NC , 0}
4472
};
4573

4674
static void spi_set_delays(uint32_t instance) {

0 commit comments

Comments
 (0)