mirror of https://github.com/ARMmbed/mbed-os.git
Add support for the K64F Hexiwear board
Signed-off-by: Mahadevan Mahesh <Mahesh.Mahadevan@nxp.com>pull/1700/head
parent
6ff2badf1f
commit
06698f4ffa
|
|
@ -90,7 +90,13 @@
|
||||||
#define Heap_Size 0x0400
|
#define Heap_Size 0x0400
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
LR_m_text m_text_start m_text_size { ; load region size_region
|
LR_m_text m_interrupts_start m_text_size+m_interrupts_size+m_flash_config_size { ; load region size_region
|
||||||
|
VECTOR_ROM m_interrupts_start m_interrupts_size { ; load address = execution address
|
||||||
|
* (RESET,+FIRST)
|
||||||
|
}
|
||||||
|
ER_m_flash_config m_flash_config_start m_flash_config_size { ; load address = execution address
|
||||||
|
* (FlashConfig)
|
||||||
|
}
|
||||||
ER_m_text m_text_start m_text_size { ; load address = execution address
|
ER_m_text m_text_start m_text_size { ; load address = execution address
|
||||||
* (InRoot$$Sections)
|
* (InRoot$$Sections)
|
||||||
.ANY (+RO)
|
.ANY (+RO)
|
||||||
|
|
@ -103,28 +109,6 @@ LR_m_text m_text_start m_text_size { ; load region size_region
|
||||||
}
|
}
|
||||||
RW_IRAM1 ((ImageLimit(RW_m_data_2) == m_data_2_start) ? ImageLimit(RW_m_data) : +0) EMPTY Heap_Size { ; Heap region growing up
|
RW_IRAM1 ((ImageLimit(RW_m_data_2) == m_data_2_start) ? ImageLimit(RW_m_data) : +0) EMPTY Heap_Size { ; Heap region growing up
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
LR_m_interrupts m_interrupts_start m_interrupts_size {
|
|
||||||
#if (!defined(__ram_vector_table__))
|
|
||||||
VECTOR_RAM m_interrupts_start EMPTY 0 {
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
VECTOR_ROM m_interrupts_start m_interrupts_size { ; load address = execution address
|
|
||||||
* (RESET,+FIRST)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
LR_m_flash_config m_flash_config_start m_flash_config_size {
|
|
||||||
ER_m_flash_config m_flash_config_start m_flash_config_size { ; load address = execution address
|
|
||||||
* (FlashConfig)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#if (defined(__ram_vector_table__))
|
|
||||||
LR_m_interrupts_ram m_interrupts_ram_start m_interrupts_ram_size {
|
|
||||||
VECTOR_RAM m_interrupts_ram_start EMPTY m_interrupts_ram_size {
|
VECTOR_RAM m_interrupts_ram_start EMPTY m_interrupts_ram_size {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,135 @@
|
||||||
|
/* mbed Microcontroller Library
|
||||||
|
* Copyright (c) 2006-2013 ARM Limited
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
#ifndef MBED_PERIPHERALNAMES_H
|
||||||
|
#define MBED_PERIPHERALNAMES_H
|
||||||
|
|
||||||
|
#include "cmsis.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
OSC32KCLK = 0,
|
||||||
|
} RTCName;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
UART_0 = 0,
|
||||||
|
UART_2 = 2,
|
||||||
|
UART_3 = 3,
|
||||||
|
UART_4 = 4,
|
||||||
|
} UARTName;
|
||||||
|
|
||||||
|
#define STDIO_UART_TX USBTX
|
||||||
|
#define STDIO_UART_RX USBRX
|
||||||
|
#define STDIO_UART UART_0
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
I2C_0 = 0,
|
||||||
|
I2C_1 = 1,
|
||||||
|
} I2CName;
|
||||||
|
|
||||||
|
#define TPM_SHIFT 8
|
||||||
|
typedef enum {
|
||||||
|
PWM_1 = (0 << TPM_SHIFT) | (0), // FTM0 CH0
|
||||||
|
PWM_2 = (0 << TPM_SHIFT) | (1), // FTM0 CH1
|
||||||
|
PWM_3 = (0 << TPM_SHIFT) | (2), // FTM0 CH2
|
||||||
|
PWM_4 = (0 << TPM_SHIFT) | (3), // FTM0 CH3
|
||||||
|
PWM_5 = (0 << TPM_SHIFT) | (4), // FTM0 CH4
|
||||||
|
PWM_6 = (0 << TPM_SHIFT) | (5), // FTM0 CH5
|
||||||
|
PWM_7 = (0 << TPM_SHIFT) | (6), // FTM0 CH6
|
||||||
|
PWM_8 = (0 << TPM_SHIFT) | (7), // FTM0 CH7
|
||||||
|
PWM_9 = (1 << TPM_SHIFT) | (0), // FTM1 CH0
|
||||||
|
PWM_10 = (1 << TPM_SHIFT) | (1), // FTM1 CH1
|
||||||
|
PWM_11 = (1 << TPM_SHIFT) | (2), // FTM1 CH2
|
||||||
|
PWM_12 = (1 << TPM_SHIFT) | (3), // FTM1 CH3
|
||||||
|
PWM_13 = (1 << TPM_SHIFT) | (4), // FTM1 CH4
|
||||||
|
PWM_14 = (1 << TPM_SHIFT) | (5), // FTM1 CH5
|
||||||
|
PWM_15 = (1 << TPM_SHIFT) | (6), // FTM1 CH6
|
||||||
|
PWM_16 = (1 << TPM_SHIFT) | (7), // FTM1 CH7
|
||||||
|
PWM_17 = (2 << TPM_SHIFT) | (0), // FTM2 CH0
|
||||||
|
PWM_18 = (2 << TPM_SHIFT) | (1), // FTM2 CH1
|
||||||
|
PWM_19 = (2 << TPM_SHIFT) | (2), // FTM2 CH2
|
||||||
|
PWM_20 = (2 << TPM_SHIFT) | (3), // FTM2 CH3
|
||||||
|
PWM_21 = (2 << TPM_SHIFT) | (4), // FTM2 CH4
|
||||||
|
PWM_22 = (2 << TPM_SHIFT) | (5), // FTM2 CH5
|
||||||
|
PWM_23 = (2 << TPM_SHIFT) | (6), // FTM2 CH6
|
||||||
|
PWM_24 = (2 << TPM_SHIFT) | (7), // FTM2 CH7
|
||||||
|
PWM_25 = (3 << TPM_SHIFT) | (0), // FTM3 CH0
|
||||||
|
PWM_26 = (3 << TPM_SHIFT) | (1), // FTM3 CH1
|
||||||
|
PWM_27 = (3 << TPM_SHIFT) | (2), // FTM3 CH2
|
||||||
|
PWM_28 = (3 << TPM_SHIFT) | (3), // FTM3 CH3
|
||||||
|
PWM_29 = (3 << TPM_SHIFT) | (4), // FTM3 CH4
|
||||||
|
PWM_30 = (3 << TPM_SHIFT) | (5), // FTM3 CH5
|
||||||
|
PWM_31 = (3 << TPM_SHIFT) | (6), // FTM3 CH6
|
||||||
|
PWM_32 = (3 << TPM_SHIFT) | (7), // FTM3 CH7
|
||||||
|
} PWMName;
|
||||||
|
|
||||||
|
#define ADC_INSTANCE_SHIFT 8
|
||||||
|
#define ADC_B_CHANNEL_SHIFT 5
|
||||||
|
typedef enum {
|
||||||
|
ADC0_SE4b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 4,
|
||||||
|
ADC0_SE5b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 5,
|
||||||
|
ADC0_SE6b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 6,
|
||||||
|
ADC0_SE7b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 7,
|
||||||
|
ADC0_SE8 = (0 << ADC_INSTANCE_SHIFT) | 8,
|
||||||
|
ADC0_SE9 = (0 << ADC_INSTANCE_SHIFT) | 9,
|
||||||
|
ADC0_SE12 = (0 << ADC_INSTANCE_SHIFT) | 12,
|
||||||
|
ADC0_SE13 = (0 << ADC_INSTANCE_SHIFT) | 13,
|
||||||
|
ADC0_SE14 = (0 << ADC_INSTANCE_SHIFT) | 14,
|
||||||
|
ADC0_SE15 = (0 << ADC_INSTANCE_SHIFT) | 15,
|
||||||
|
ADC0_SE16 = (0 << ADC_INSTANCE_SHIFT) | 16,
|
||||||
|
ADC0_SE17 = (0 << ADC_INSTANCE_SHIFT) | 17,
|
||||||
|
ADC0_SE18 = (0 << ADC_INSTANCE_SHIFT) | 18,
|
||||||
|
ADC0_SE21 = (0 << ADC_INSTANCE_SHIFT) | 21,
|
||||||
|
ADC0_SE22 = (0 << ADC_INSTANCE_SHIFT) | 22,
|
||||||
|
ADC0_SE23 = (0 << ADC_INSTANCE_SHIFT) | 23,
|
||||||
|
ADC1_SE4a = (1 << ADC_INSTANCE_SHIFT) | 4,
|
||||||
|
ADC1_SE5a = (1 << ADC_INSTANCE_SHIFT) | 5,
|
||||||
|
ADC1_SE6a = (1 << ADC_INSTANCE_SHIFT) | 6,
|
||||||
|
ADC1_SE7a = (1 << ADC_INSTANCE_SHIFT) | 7,
|
||||||
|
ADC1_SE4b = (1 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 4,
|
||||||
|
ADC1_SE5b = (1 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 5,
|
||||||
|
ADC1_SE6b = (1 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 6,
|
||||||
|
ADC1_SE7b = (1 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 7,
|
||||||
|
ADC1_SE8 = (1 << ADC_INSTANCE_SHIFT) | 8,
|
||||||
|
ADC1_SE9 = (1 << ADC_INSTANCE_SHIFT) | 9,
|
||||||
|
ADC1_SE12 = (1 << ADC_INSTANCE_SHIFT) | 12,
|
||||||
|
ADC1_SE13 = (1 << ADC_INSTANCE_SHIFT) | 13,
|
||||||
|
ADC1_SE14 = (1 << ADC_INSTANCE_SHIFT) | 14,
|
||||||
|
ADC1_SE15 = (1 << ADC_INSTANCE_SHIFT) | 15,
|
||||||
|
ADC1_SE16 = (1 << ADC_INSTANCE_SHIFT) | 16,
|
||||||
|
ADC1_SE17 = (1 << ADC_INSTANCE_SHIFT) | 17,
|
||||||
|
ADC1_SE18 = (1 << ADC_INSTANCE_SHIFT) | 18,
|
||||||
|
ADC1_SE23 = (1 << ADC_INSTANCE_SHIFT) | 23,
|
||||||
|
} ADCName;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
DAC_0 = 0
|
||||||
|
} DACName;
|
||||||
|
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
SPI_0 = 0,
|
||||||
|
SPI_1 = 1,
|
||||||
|
SPI_2 = 2,
|
||||||
|
} SPIName;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -0,0 +1,165 @@
|
||||||
|
/* mbed Microcontroller Library
|
||||||
|
* Copyright (c) 2006-2013 ARM Limited
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "PeripheralPins.h"
|
||||||
|
|
||||||
|
/************RTC***************/
|
||||||
|
const PinMap PinMap_RTC[] = {
|
||||||
|
{NC, OSC32KCLK, 0},
|
||||||
|
};
|
||||||
|
|
||||||
|
/************ADC***************/
|
||||||
|
const PinMap PinMap_ADC[] = {
|
||||||
|
{PTA17, ADC1_SE17, 0},
|
||||||
|
{PTB0 , ADC0_SE8 , 0},
|
||||||
|
{PTB1 , ADC0_SE9 , 0},
|
||||||
|
{PTB2 , ADC0_SE12, 0},
|
||||||
|
{PTB3 , ADC0_SE13, 0},
|
||||||
|
{PTB6 , ADC1_SE12, 0},
|
||||||
|
{PTB7 , ADC1_SE13, 0},
|
||||||
|
{PTB10, ADC1_SE14, 0},
|
||||||
|
{PTB11, ADC1_SE15, 0},
|
||||||
|
{PTC0 , ADC0_SE14, 0},
|
||||||
|
{PTC1 , ADC0_SE15, 0},
|
||||||
|
{PTC2, ADC0_SE4b, 0},
|
||||||
|
{PTC8, ADC1_SE4b, 0},
|
||||||
|
{PTC9, ADC1_SE5b, 0},
|
||||||
|
{PTC10, ADC1_SE6b, 0},
|
||||||
|
{PTC11, ADC1_SE7b, 0},
|
||||||
|
{PTD1, ADC0_SE5b, 0},
|
||||||
|
{PTD5, ADC0_SE6b, 0},
|
||||||
|
{PTD6, ADC0_SE7b, 0},
|
||||||
|
{PTE0, ADC1_SE4a, 0},
|
||||||
|
{PTE1, ADC1_SE5a, 0},
|
||||||
|
{PTE2, ADC1_SE6a, 0},
|
||||||
|
{PTE3, ADC1_SE7a, 0},
|
||||||
|
//{PTE24, ADC0_SE17, 0}, //I2C pull up
|
||||||
|
//{PTE25, ADC0_SE18, 0}, //I2C pull up
|
||||||
|
{NC , NC , 0}
|
||||||
|
};
|
||||||
|
|
||||||
|
/************DAC***************/
|
||||||
|
const PinMap PinMap_DAC[] = {
|
||||||
|
{DAC0_OUT, DAC_0, 0},
|
||||||
|
{NC , NC , 0}
|
||||||
|
};
|
||||||
|
|
||||||
|
/************I2C***************/
|
||||||
|
const PinMap PinMap_I2C_SDA[] = {
|
||||||
|
{PTD9 , I2C_0, 2},
|
||||||
|
{PTC11, I2C_1, 2},
|
||||||
|
{NC , NC , 0}
|
||||||
|
};
|
||||||
|
|
||||||
|
const PinMap PinMap_I2C_SCL[] = {
|
||||||
|
{PTD8 , I2C_0, 2},
|
||||||
|
{PTC10, I2C_1, 2},
|
||||||
|
{NC , NC , 0}
|
||||||
|
};
|
||||||
|
|
||||||
|
/************UART***************/
|
||||||
|
const PinMap PinMap_UART_TX[] = {
|
||||||
|
{PTB17, UART_0, 3},
|
||||||
|
{PTC17, UART_3, 3},
|
||||||
|
{PTD3 , UART_2, 3},
|
||||||
|
{PTE24, UART_4, 3},
|
||||||
|
{NC , NC , 0}
|
||||||
|
};
|
||||||
|
|
||||||
|
const PinMap PinMap_UART_RX[] = {
|
||||||
|
{PTB16, UART_0, 3},
|
||||||
|
{PTE25, UART_4, 3},
|
||||||
|
{PTC16, UART_3, 3},
|
||||||
|
{PTD2 , UART_2, 3},
|
||||||
|
{NC , NC , 0}
|
||||||
|
};
|
||||||
|
|
||||||
|
/************SPI***************/
|
||||||
|
const PinMap PinMap_SPI_SCLK[] = {
|
||||||
|
{PTB21, SPI_2, 2},
|
||||||
|
{PTC5 , SPI_0, 2},
|
||||||
|
{PTD5 , SPI_1, 7},
|
||||||
|
{NC , NC , 0}
|
||||||
|
};
|
||||||
|
|
||||||
|
const PinMap PinMap_SPI_MOSI[] = {
|
||||||
|
{PTB22, SPI_2, 2},
|
||||||
|
{PTC6 , SPI_0, 2},
|
||||||
|
{PTD6 , SPI_1, 7},
|
||||||
|
{NC , NC , 0}
|
||||||
|
};
|
||||||
|
|
||||||
|
const PinMap PinMap_SPI_MISO[] = {
|
||||||
|
{PTB23, SPI_2, 2},
|
||||||
|
{PTC7 , SPI_0, 2},
|
||||||
|
{PTD7 , SPI_1, 7},
|
||||||
|
{NC , NC , 0}
|
||||||
|
};
|
||||||
|
|
||||||
|
const PinMap PinMap_SPI_SSEL[] = {
|
||||||
|
{PTB20, SPI_2, 2},
|
||||||
|
{PTC4 , SPI_0, 2},
|
||||||
|
{PTD4 , SPI_1, 7},
|
||||||
|
{NC , NC , 0}
|
||||||
|
};
|
||||||
|
|
||||||
|
/************PWM***************/
|
||||||
|
const PinMap PinMap_PWM[] = {
|
||||||
|
{PTA0 , PWM_6 , 3},
|
||||||
|
{PTA1 , PWM_7 , 3},
|
||||||
|
{PTA2 , PWM_8 , 3},
|
||||||
|
{PTA3 , PWM_1 , 3},
|
||||||
|
{PTA4 , PWM_2 , 3},
|
||||||
|
{PTA5 , PWM_3 , 3},
|
||||||
|
{PTA6 , PWM_4 , 3},
|
||||||
|
{PTA7 , PWM_5 , 3},
|
||||||
|
{PTA8 , PWM_9 , 3},
|
||||||
|
{PTA9 , PWM_10, 3},
|
||||||
|
{PTA10, PWM_17, 3},
|
||||||
|
{PTA11, PWM_18, 3},
|
||||||
|
{PTA12, PWM_9 , 3},
|
||||||
|
{PTA13, PWM_10, 3},
|
||||||
|
|
||||||
|
{PTB0 , PWM_9 , 3},
|
||||||
|
{PTB1 , PWM_10, 3},
|
||||||
|
{PTB18, PWM_17, 3},
|
||||||
|
{PTB19, PWM_18, 3},
|
||||||
|
|
||||||
|
{PTC1 , PWM_1 , 4},
|
||||||
|
{PTC2 , PWM_2 , 4},
|
||||||
|
{PTC3 , PWM_3 , 4},
|
||||||
|
{PTC4 , PWM_4 , 4},
|
||||||
|
{PTC5 , PWM_3 , 7},
|
||||||
|
{PTC8 , PWM_29, 3},
|
||||||
|
{PTC9 , PWM_30, 3},
|
||||||
|
{PTC10, PWM_31, 3},
|
||||||
|
{PTC11, PWM_32, 3},
|
||||||
|
|
||||||
|
{PTD0 , PWM_25, 4},
|
||||||
|
{PTD1 , PWM_26, 4},
|
||||||
|
{PTD2 , PWM_27, 4},
|
||||||
|
{PTD3 , PWM_28, 4},
|
||||||
|
{PTD4 , PWM_5 , 4},
|
||||||
|
{PTD5 , PWM_6 , 4},
|
||||||
|
{PTD6 , PWM_7 , 4},
|
||||||
|
{PTD4 , PWM_5 , 4},
|
||||||
|
{PTD7 , PWM_8 , 4},
|
||||||
|
|
||||||
|
{PTE5 , PWM_25, 6},
|
||||||
|
{PTE6 , PWM_26, 6},
|
||||||
|
|
||||||
|
{NC , NC , 0}
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,229 @@
|
||||||
|
/* mbed Microcontroller Library
|
||||||
|
* Copyright (c) 2006-2013 ARM Limited
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
#ifndef MBED_PINNAMES_H
|
||||||
|
#define MBED_PINNAMES_H
|
||||||
|
|
||||||
|
#include "cmsis.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
PIN_INPUT,
|
||||||
|
PIN_OUTPUT
|
||||||
|
} PinDirection;
|
||||||
|
|
||||||
|
#define GPIO_PORT_SHIFT 12
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
PTA0 = (0 << GPIO_PORT_SHIFT | 0 ),
|
||||||
|
PTA1 = (0 << GPIO_PORT_SHIFT | 1 ),
|
||||||
|
PTA2 = (0 << GPIO_PORT_SHIFT | 2 ),
|
||||||
|
PTA3 = (0 << GPIO_PORT_SHIFT | 3 ),
|
||||||
|
PTA4 = (0 << GPIO_PORT_SHIFT | 4 ),
|
||||||
|
PTA5 = (0 << GPIO_PORT_SHIFT | 5 ),
|
||||||
|
PTA6 = (0 << GPIO_PORT_SHIFT | 6 ),
|
||||||
|
PTA7 = (0 << GPIO_PORT_SHIFT | 7 ),
|
||||||
|
PTA8 = (0 << GPIO_PORT_SHIFT | 8 ),
|
||||||
|
PTA9 = (0 << GPIO_PORT_SHIFT | 9 ),
|
||||||
|
PTA10 = (0 << GPIO_PORT_SHIFT | 10),
|
||||||
|
PTA11 = (0 << GPIO_PORT_SHIFT | 11),
|
||||||
|
PTA12 = (0 << GPIO_PORT_SHIFT | 12),
|
||||||
|
PTA13 = (0 << GPIO_PORT_SHIFT | 13),
|
||||||
|
PTA14 = (0 << GPIO_PORT_SHIFT | 14),
|
||||||
|
PTA15 = (0 << GPIO_PORT_SHIFT | 15),
|
||||||
|
PTA16 = (0 << GPIO_PORT_SHIFT | 16),
|
||||||
|
PTA17 = (0 << GPIO_PORT_SHIFT | 17),
|
||||||
|
PTA18 = (0 << GPIO_PORT_SHIFT | 18),
|
||||||
|
PTA19 = (0 << GPIO_PORT_SHIFT | 19),
|
||||||
|
PTA20 = (0 << GPIO_PORT_SHIFT | 20),
|
||||||
|
PTA21 = (0 << GPIO_PORT_SHIFT | 21),
|
||||||
|
PTA22 = (0 << GPIO_PORT_SHIFT | 22),
|
||||||
|
PTA23 = (0 << GPIO_PORT_SHIFT | 23),
|
||||||
|
PTA24 = (0 << GPIO_PORT_SHIFT | 24),
|
||||||
|
PTA25 = (0 << GPIO_PORT_SHIFT | 25),
|
||||||
|
PTA26 = (0 << GPIO_PORT_SHIFT | 26),
|
||||||
|
PTA27 = (0 << GPIO_PORT_SHIFT | 27),
|
||||||
|
PTA28 = (0 << GPIO_PORT_SHIFT | 28),
|
||||||
|
PTA29 = (0 << GPIO_PORT_SHIFT | 29),
|
||||||
|
PTA30 = (0 << GPIO_PORT_SHIFT | 30),
|
||||||
|
PTA31 = (0 << GPIO_PORT_SHIFT | 31),
|
||||||
|
PTB0 = (1 << GPIO_PORT_SHIFT | 0 ),
|
||||||
|
PTB1 = (1 << GPIO_PORT_SHIFT | 1 ),
|
||||||
|
PTB2 = (1 << GPIO_PORT_SHIFT | 2 ),
|
||||||
|
PTB3 = (1 << GPIO_PORT_SHIFT | 3 ),
|
||||||
|
PTB4 = (1 << GPIO_PORT_SHIFT | 4 ),
|
||||||
|
PTB5 = (1 << GPIO_PORT_SHIFT | 5 ),
|
||||||
|
PTB6 = (1 << GPIO_PORT_SHIFT | 6 ),
|
||||||
|
PTB7 = (1 << GPIO_PORT_SHIFT | 7 ),
|
||||||
|
PTB8 = (1 << GPIO_PORT_SHIFT | 8 ),
|
||||||
|
PTB9 = (1 << GPIO_PORT_SHIFT | 9 ),
|
||||||
|
PTB10 = (1 << GPIO_PORT_SHIFT | 10),
|
||||||
|
PTB11 = (1 << GPIO_PORT_SHIFT | 11),
|
||||||
|
PTB12 = (1 << GPIO_PORT_SHIFT | 12),
|
||||||
|
PTB13 = (1 << GPIO_PORT_SHIFT | 13),
|
||||||
|
PTB14 = (1 << GPIO_PORT_SHIFT | 14),
|
||||||
|
PTB15 = (1 << GPIO_PORT_SHIFT | 15),
|
||||||
|
PTB16 = (1 << GPIO_PORT_SHIFT | 16),
|
||||||
|
PTB17 = (1 << GPIO_PORT_SHIFT | 17),
|
||||||
|
PTB18 = (1 << GPIO_PORT_SHIFT | 18),
|
||||||
|
PTB19 = (1 << GPIO_PORT_SHIFT | 19),
|
||||||
|
PTB20 = (1 << GPIO_PORT_SHIFT | 20),
|
||||||
|
PTB21 = (1 << GPIO_PORT_SHIFT | 21),
|
||||||
|
PTB22 = (1 << GPIO_PORT_SHIFT | 22),
|
||||||
|
PTB23 = (1 << GPIO_PORT_SHIFT | 23),
|
||||||
|
PTB24 = (1 << GPIO_PORT_SHIFT | 24),
|
||||||
|
PTB25 = (1 << GPIO_PORT_SHIFT | 25),
|
||||||
|
PTB26 = (1 << GPIO_PORT_SHIFT | 26),
|
||||||
|
PTB27 = (1 << GPIO_PORT_SHIFT | 27),
|
||||||
|
PTB28 = (1 << GPIO_PORT_SHIFT | 28),
|
||||||
|
PTB29 = (1 << GPIO_PORT_SHIFT | 29),
|
||||||
|
PTB30 = (1 << GPIO_PORT_SHIFT | 30),
|
||||||
|
PTB31 = (1 << GPIO_PORT_SHIFT | 31),
|
||||||
|
PTC0 = (2 << GPIO_PORT_SHIFT | 0 ),
|
||||||
|
PTC1 = (2 << GPIO_PORT_SHIFT | 1 ),
|
||||||
|
PTC2 = (2 << GPIO_PORT_SHIFT | 2 ),
|
||||||
|
PTC3 = (2 << GPIO_PORT_SHIFT | 3 ),
|
||||||
|
PTC4 = (2 << GPIO_PORT_SHIFT | 4 ),
|
||||||
|
PTC5 = (2 << GPIO_PORT_SHIFT | 5 ),
|
||||||
|
PTC6 = (2 << GPIO_PORT_SHIFT | 6 ),
|
||||||
|
PTC7 = (2 << GPIO_PORT_SHIFT | 7 ),
|
||||||
|
PTC8 = (2 << GPIO_PORT_SHIFT | 8 ),
|
||||||
|
PTC9 = (2 << GPIO_PORT_SHIFT | 9 ),
|
||||||
|
PTC10 = (2 << GPIO_PORT_SHIFT | 10),
|
||||||
|
PTC11 = (2 << GPIO_PORT_SHIFT | 11),
|
||||||
|
PTC12 = (2 << GPIO_PORT_SHIFT | 12),
|
||||||
|
PTC13 = (2 << GPIO_PORT_SHIFT | 13),
|
||||||
|
PTC14 = (2 << GPIO_PORT_SHIFT | 14),
|
||||||
|
PTC15 = (2 << GPIO_PORT_SHIFT | 15),
|
||||||
|
PTC16 = (2 << GPIO_PORT_SHIFT | 16),
|
||||||
|
PTC17 = (2 << GPIO_PORT_SHIFT | 17),
|
||||||
|
PTC18 = (2 << GPIO_PORT_SHIFT | 18),
|
||||||
|
PTC19 = (2 << GPIO_PORT_SHIFT | 19),
|
||||||
|
PTC20 = (2 << GPIO_PORT_SHIFT | 20),
|
||||||
|
PTC21 = (2 << GPIO_PORT_SHIFT | 21),
|
||||||
|
PTC22 = (2 << GPIO_PORT_SHIFT | 22),
|
||||||
|
PTC23 = (2 << GPIO_PORT_SHIFT | 23),
|
||||||
|
PTC24 = (2 << GPIO_PORT_SHIFT | 24),
|
||||||
|
PTC25 = (2 << GPIO_PORT_SHIFT | 25),
|
||||||
|
PTC26 = (2 << GPIO_PORT_SHIFT | 26),
|
||||||
|
PTC27 = (2 << GPIO_PORT_SHIFT | 27),
|
||||||
|
PTC28 = (2 << GPIO_PORT_SHIFT | 28),
|
||||||
|
PTC29 = (2 << GPIO_PORT_SHIFT | 29),
|
||||||
|
PTC30 = (2 << GPIO_PORT_SHIFT | 30),
|
||||||
|
PTC31 = (2 << GPIO_PORT_SHIFT | 31),
|
||||||
|
PTD0 = (3 << GPIO_PORT_SHIFT | 0 ),
|
||||||
|
PTD1 = (3 << GPIO_PORT_SHIFT | 1 ),
|
||||||
|
PTD2 = (3 << GPIO_PORT_SHIFT | 2 ),
|
||||||
|
PTD3 = (3 << GPIO_PORT_SHIFT | 3 ),
|
||||||
|
PTD4 = (3 << GPIO_PORT_SHIFT | 4 ),
|
||||||
|
PTD5 = (3 << GPIO_PORT_SHIFT | 5 ),
|
||||||
|
PTD6 = (3 << GPIO_PORT_SHIFT | 6 ),
|
||||||
|
PTD7 = (3 << GPIO_PORT_SHIFT | 7 ),
|
||||||
|
PTD8 = (3 << GPIO_PORT_SHIFT | 8 ),
|
||||||
|
PTD9 = (3 << GPIO_PORT_SHIFT | 9 ),
|
||||||
|
PTD10 = (3 << GPIO_PORT_SHIFT | 10),
|
||||||
|
PTD11 = (3 << GPIO_PORT_SHIFT | 11),
|
||||||
|
PTD12 = (3 << GPIO_PORT_SHIFT | 12),
|
||||||
|
PTD13 = (3 << GPIO_PORT_SHIFT | 13),
|
||||||
|
PTD14 = (3 << GPIO_PORT_SHIFT | 14),
|
||||||
|
PTD15 = (3 << GPIO_PORT_SHIFT | 15),
|
||||||
|
PTD16 = (3 << GPIO_PORT_SHIFT | 16),
|
||||||
|
PTD17 = (3 << GPIO_PORT_SHIFT | 17),
|
||||||
|
PTD18 = (3 << GPIO_PORT_SHIFT | 18),
|
||||||
|
PTD19 = (3 << GPIO_PORT_SHIFT | 19),
|
||||||
|
PTD20 = (3 << GPIO_PORT_SHIFT | 20),
|
||||||
|
PTD21 = (3 << GPIO_PORT_SHIFT | 21),
|
||||||
|
PTD22 = (3 << GPIO_PORT_SHIFT | 22),
|
||||||
|
PTD23 = (3 << GPIO_PORT_SHIFT | 23),
|
||||||
|
PTD24 = (3 << GPIO_PORT_SHIFT | 24),
|
||||||
|
PTD25 = (3 << GPIO_PORT_SHIFT | 25),
|
||||||
|
PTD26 = (3 << GPIO_PORT_SHIFT | 26),
|
||||||
|
PTD27 = (3 << GPIO_PORT_SHIFT | 27),
|
||||||
|
PTD28 = (3 << GPIO_PORT_SHIFT | 28),
|
||||||
|
PTD29 = (3 << GPIO_PORT_SHIFT | 29),
|
||||||
|
PTD30 = (3 << GPIO_PORT_SHIFT | 30),
|
||||||
|
PTD31 = (3 << GPIO_PORT_SHIFT | 31),
|
||||||
|
PTE0 = (4 << GPIO_PORT_SHIFT | 0 ),
|
||||||
|
PTE1 = (4 << GPIO_PORT_SHIFT | 1 ),
|
||||||
|
PTE2 = (4 << GPIO_PORT_SHIFT | 2 ),
|
||||||
|
PTE3 = (4 << GPIO_PORT_SHIFT | 3 ),
|
||||||
|
PTE4 = (4 << GPIO_PORT_SHIFT | 4 ),
|
||||||
|
PTE5 = (4 << GPIO_PORT_SHIFT | 5 ),
|
||||||
|
PTE6 = (4 << GPIO_PORT_SHIFT | 6 ),
|
||||||
|
PTE7 = (4 << GPIO_PORT_SHIFT | 7 ),
|
||||||
|
PTE8 = (4 << GPIO_PORT_SHIFT | 8 ),
|
||||||
|
PTE9 = (4 << GPIO_PORT_SHIFT | 9 ),
|
||||||
|
PTE10 = (4 << GPIO_PORT_SHIFT | 10),
|
||||||
|
PTE11 = (4 << GPIO_PORT_SHIFT | 11),
|
||||||
|
PTE12 = (4 << GPIO_PORT_SHIFT | 12),
|
||||||
|
PTE13 = (4 << GPIO_PORT_SHIFT | 13),
|
||||||
|
PTE14 = (4 << GPIO_PORT_SHIFT | 14),
|
||||||
|
PTE15 = (4 << GPIO_PORT_SHIFT | 15),
|
||||||
|
PTE16 = (4 << GPIO_PORT_SHIFT | 16),
|
||||||
|
PTE17 = (4 << GPIO_PORT_SHIFT | 17),
|
||||||
|
PTE18 = (4 << GPIO_PORT_SHIFT | 18),
|
||||||
|
PTE19 = (4 << GPIO_PORT_SHIFT | 19),
|
||||||
|
PTE20 = (4 << GPIO_PORT_SHIFT | 20),
|
||||||
|
PTE21 = (4 << GPIO_PORT_SHIFT | 21),
|
||||||
|
PTE22 = (4 << GPIO_PORT_SHIFT | 22),
|
||||||
|
PTE23 = (4 << GPIO_PORT_SHIFT | 23),
|
||||||
|
PTE24 = (4 << GPIO_PORT_SHIFT | 24),
|
||||||
|
PTE25 = (4 << GPIO_PORT_SHIFT | 25),
|
||||||
|
PTE26 = (4 << GPIO_PORT_SHIFT | 26),
|
||||||
|
PTE27 = (4 << GPIO_PORT_SHIFT | 27),
|
||||||
|
PTE28 = (4 << GPIO_PORT_SHIFT | 28),
|
||||||
|
PTE29 = (4 << GPIO_PORT_SHIFT | 29),
|
||||||
|
PTE30 = (4 << GPIO_PORT_SHIFT | 30),
|
||||||
|
PTE31 = (4 << GPIO_PORT_SHIFT | 31),
|
||||||
|
|
||||||
|
LED_RED = PTC8,
|
||||||
|
LED_GREEN = PTD0,
|
||||||
|
LED_BLUE = PTC9,
|
||||||
|
|
||||||
|
// mbed original LED naming
|
||||||
|
LED1 = LED_RED,
|
||||||
|
LED2 = LED_GREEN,
|
||||||
|
LED3 = LED_BLUE,
|
||||||
|
LED4 = LED_RED,
|
||||||
|
|
||||||
|
// USB Pins
|
||||||
|
USBTX = PTB17,
|
||||||
|
USBRX = PTB16,
|
||||||
|
|
||||||
|
I2C_SCL = PTC10,
|
||||||
|
I2C_SDA = PTC11,
|
||||||
|
|
||||||
|
DAC0_OUT = 0xFEFE, /* DAC does not have Pin Name in RM */
|
||||||
|
|
||||||
|
// Not connected
|
||||||
|
NC = (int)0xFFFFFFFF
|
||||||
|
} PinName;
|
||||||
|
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
PullNone = 0,
|
||||||
|
PullDown = 1,
|
||||||
|
PullUp = 2,
|
||||||
|
PullDefault = PullUp
|
||||||
|
} PinMode;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -0,0 +1,58 @@
|
||||||
|
/* mbed Microcontroller Library
|
||||||
|
* Copyright (c) 2006-2013 ARM Limited
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
#ifndef MBED_DEVICE_H
|
||||||
|
#define MBED_DEVICE_H
|
||||||
|
|
||||||
|
#define DEVICE_PORTIN 1
|
||||||
|
#define DEVICE_PORTOUT 1
|
||||||
|
#define DEVICE_PORTINOUT 1
|
||||||
|
|
||||||
|
#define DEVICE_INTERRUPTIN 1
|
||||||
|
|
||||||
|
#define DEVICE_ANALOGIN 1
|
||||||
|
#define DEVICE_ANALOGOUT 1
|
||||||
|
|
||||||
|
#define DEVICE_SERIAL 1
|
||||||
|
|
||||||
|
#define DEVICE_I2C 1
|
||||||
|
#define DEVICE_I2CSLAVE 1
|
||||||
|
|
||||||
|
#define DEVICE_SPI 1
|
||||||
|
#define DEVICE_SPISLAVE 1
|
||||||
|
|
||||||
|
#define DEVICE_CAN 0
|
||||||
|
|
||||||
|
#define DEVICE_RTC 1
|
||||||
|
|
||||||
|
#define DEVICE_ETHERNET 0
|
||||||
|
|
||||||
|
#define DEVICE_PWMOUT 1
|
||||||
|
|
||||||
|
#define DEVICE_SEMIHOST 0
|
||||||
|
#define DEVICE_LOCALFILESYSTEM 0
|
||||||
|
#define DEVICE_ID_LENGTH 24
|
||||||
|
|
||||||
|
#define DEVICE_SLEEP 1
|
||||||
|
|
||||||
|
#define DEVICE_DEBUG_AWARENESS 0
|
||||||
|
|
||||||
|
#define DEVICE_STDIO_MESSAGES 1
|
||||||
|
|
||||||
|
#define DEVICE_ERROR_RED 1
|
||||||
|
|
||||||
|
#include "objects.h"
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -0,0 +1,196 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2015, Freescale Semiconductor, Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
* are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* o Redistributions of source code must retain the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* o Redistributions in binary form must reproduce the above copyright notice, this
|
||||||
|
* list of conditions and the following disclaimer in the documentation and/or
|
||||||
|
* other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* o Neither the name of Freescale Semiconductor, Inc. nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived from this
|
||||||
|
* software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "fsl_common.h"
|
||||||
|
#include "fsl_smc.h"
|
||||||
|
#include "fsl_clock_config.h"
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Definitions
|
||||||
|
******************************************************************************/
|
||||||
|
/*! @brief Clock configuration structure. */
|
||||||
|
typedef struct _clock_config
|
||||||
|
{
|
||||||
|
mcg_config_t mcgConfig; /*!< MCG configuration. */
|
||||||
|
sim_clock_config_t simConfig; /*!< SIM configuration. */
|
||||||
|
osc_config_t oscConfig; /*!< OSC configuration. */
|
||||||
|
uint32_t coreClock; /*!< core clock frequency. */
|
||||||
|
} clock_config_t;
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Variables
|
||||||
|
******************************************************************************/
|
||||||
|
/* System clock frequency. */
|
||||||
|
extern uint32_t SystemCoreClock;
|
||||||
|
|
||||||
|
/* Configuration for enter VLPR mode. Core clock = 4MHz. */
|
||||||
|
const clock_config_t g_defaultClockConfigVlpr = {
|
||||||
|
.mcgConfig =
|
||||||
|
{
|
||||||
|
.mcgMode = kMCG_ModeBLPI, /* Work in BLPI mode. */
|
||||||
|
.irclkEnableMode = kMCG_IrclkEnable, /* MCGIRCLK enable. */
|
||||||
|
.ircs = kMCG_IrcFast, /* Select IRC4M. */
|
||||||
|
.fcrdiv = 0U, /* FCRDIV is 0. */
|
||||||
|
|
||||||
|
.frdiv = 0U,
|
||||||
|
.drs = kMCG_DrsLow, /* Low frequency range. */
|
||||||
|
.dmx32 = kMCG_Dmx32Default, /* DCO has a default range of 25%. */
|
||||||
|
.oscsel = kMCG_OscselOsc, /* Select OSC. */
|
||||||
|
|
||||||
|
.pll0Config =
|
||||||
|
{
|
||||||
|
.enableMode = 0U, /* Don't eanble PLL. */
|
||||||
|
.prdiv = 0U,
|
||||||
|
.vdiv = 0U,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.simConfig =
|
||||||
|
{
|
||||||
|
.pllFllSel = 3U, /* PLLFLLSEL select IRC48MCLK. */
|
||||||
|
.er32kSrc = 2U, /* ERCLK32K selection, use RTC. */
|
||||||
|
.clkdiv1 = 0x00040000U, /* SIM_CLKDIV1. */
|
||||||
|
},
|
||||||
|
.oscConfig = {.freq = BOARD_XTAL0_CLK_HZ,
|
||||||
|
.capLoad = 0,
|
||||||
|
.workMode = kOSC_ModeOscLowPower,
|
||||||
|
.oscerConfig =
|
||||||
|
{
|
||||||
|
.enableMode = kOSC_ErClkEnable,
|
||||||
|
#if (defined(FSL_FEATURE_OSC_HAS_EXT_REF_CLOCK_DIVIDER) && FSL_FEATURE_OSC_HAS_EXT_REF_CLOCK_DIVIDER)
|
||||||
|
.erclkDiv = 0U,
|
||||||
|
#endif
|
||||||
|
}},
|
||||||
|
.coreClock = 4000000U, /* Core clock frequency */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Configuration for enter RUN mode. Core clock = 120MHz. */
|
||||||
|
const clock_config_t g_defaultClockConfigRun = {
|
||||||
|
.mcgConfig =
|
||||||
|
{
|
||||||
|
.mcgMode = kMCG_ModePEE, /* Work in PEE mode. */
|
||||||
|
.irclkEnableMode = kMCG_IrclkEnable, /* MCGIRCLK enable. */
|
||||||
|
.ircs = kMCG_IrcSlow, /* Select IRC32k. */
|
||||||
|
.fcrdiv = 0U, /* FCRDIV is 0. */
|
||||||
|
|
||||||
|
.frdiv = 7U,
|
||||||
|
.drs = kMCG_DrsLow, /* Low frequency range. */
|
||||||
|
.dmx32 = kMCG_Dmx32Default, /* DCO has a default range of 25%. */
|
||||||
|
.oscsel = kMCG_OscselOsc, /* Select OSC. */
|
||||||
|
|
||||||
|
.pll0Config =
|
||||||
|
{
|
||||||
|
.enableMode = 0U, .prdiv = 0x13U, .vdiv = 0x18U,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.simConfig =
|
||||||
|
{
|
||||||
|
.pllFllSel = 1U, /* PLLFLLSEL select PLL. */
|
||||||
|
.er32kSrc = 2U, /* ERCLK32K selection, use RTC. */
|
||||||
|
.clkdiv1 = 0x01140000U, /* SIM_CLKDIV1. */
|
||||||
|
},
|
||||||
|
.oscConfig = {.freq = BOARD_XTAL0_CLK_HZ,
|
||||||
|
.capLoad = 0,
|
||||||
|
.workMode = kOSC_ModeOscLowPower,
|
||||||
|
.oscerConfig =
|
||||||
|
{
|
||||||
|
.enableMode = kOSC_ErClkEnable,
|
||||||
|
#if (defined(FSL_FEATURE_OSC_HAS_EXT_REF_CLOCK_DIVIDER) && FSL_FEATURE_OSC_HAS_EXT_REF_CLOCK_DIVIDER)
|
||||||
|
.erclkDiv = 0U,
|
||||||
|
#endif
|
||||||
|
}},
|
||||||
|
.coreClock = 120000000U, /* Core clock frequency */
|
||||||
|
};
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Code
|
||||||
|
******************************************************************************/
|
||||||
|
/*
|
||||||
|
* How to setup clock using clock driver functions:
|
||||||
|
*
|
||||||
|
* 1. CLOCK_SetSimSafeDivs, to make sure core clock, bus clock, flexbus clock
|
||||||
|
* and flash clock are in allowed range during clock mode switch.
|
||||||
|
*
|
||||||
|
* 2. Call CLOCK_Osc0Init to setup OSC clock, if it is used in target mode.
|
||||||
|
*
|
||||||
|
* 3. Set MCG configuration, MCG includes three parts: FLL clock, PLL clock and
|
||||||
|
* internal reference clock(MCGIRCLK). Follow the steps to setup:
|
||||||
|
*
|
||||||
|
* 1). Call CLOCK_BootToXxxMode to set MCG to target mode.
|
||||||
|
*
|
||||||
|
* 2). If target mode is FBI/BLPI/PBI mode, the MCGIRCLK has been configured
|
||||||
|
* correctly. For other modes, need to call CLOCK_SetInternalRefClkConfig
|
||||||
|
* explicitly to setup MCGIRCLK.
|
||||||
|
*
|
||||||
|
* 3). Don't need to configure FLL explicitly, because if target mode is FLL
|
||||||
|
* mode, then FLL has been configured by the function CLOCK_BootToXxxMode,
|
||||||
|
* if the target mode is not FLL mode, the FLL is disabled.
|
||||||
|
*
|
||||||
|
* 4). If target mode is PEE/PBE/PEI/PBI mode, then the related PLL has been
|
||||||
|
* setup by CLOCK_BootToXxxMode. In FBE/FBI/FEE/FBE mode, the PLL could
|
||||||
|
* be enabled independently, call CLOCK_EnablePll0 explicitly in this case.
|
||||||
|
*
|
||||||
|
* 4. Call CLOCK_SetSimConfig to set the clock configuration in SIM.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void BOARD_BootClockVLPR(void)
|
||||||
|
{
|
||||||
|
CLOCK_SetSimSafeDivs();
|
||||||
|
|
||||||
|
CLOCK_BootToBlpiMode(g_defaultClockConfigVlpr.mcgConfig.fcrdiv, g_defaultClockConfigVlpr.mcgConfig.ircs,
|
||||||
|
g_defaultClockConfigVlpr.mcgConfig.irclkEnableMode);
|
||||||
|
|
||||||
|
CLOCK_SetSimConfig(&g_defaultClockConfigVlpr.simConfig);
|
||||||
|
|
||||||
|
SystemCoreClock = g_defaultClockConfigVlpr.coreClock;
|
||||||
|
|
||||||
|
SMC_SetPowerModeProtection(SMC, kSMC_AllowPowerModeAll);
|
||||||
|
SMC_SetPowerModeVlpr(SMC, false);
|
||||||
|
while (SMC_GetPowerModeState(SMC) != kSMC_PowerStateVlpr)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BOARD_BootClockRUN(void)
|
||||||
|
{
|
||||||
|
CLOCK_SetSimSafeDivs();
|
||||||
|
|
||||||
|
CLOCK_InitOsc0(&g_defaultClockConfigRun.oscConfig);
|
||||||
|
CLOCK_SetXtal0Freq(BOARD_XTAL0_CLK_HZ);
|
||||||
|
|
||||||
|
CLOCK_BootToPeeMode(g_defaultClockConfigRun.mcgConfig.oscsel, kMCG_PllClkSelPll0,
|
||||||
|
&g_defaultClockConfigRun.mcgConfig.pll0Config);
|
||||||
|
|
||||||
|
CLOCK_SetInternalRefClkConfig(g_defaultClockConfigRun.mcgConfig.irclkEnableMode,
|
||||||
|
g_defaultClockConfigRun.mcgConfig.ircs, g_defaultClockConfigRun.mcgConfig.fcrdiv);
|
||||||
|
|
||||||
|
CLOCK_SetSimConfig(&g_defaultClockConfigRun.simConfig);
|
||||||
|
|
||||||
|
SystemCoreClock = g_defaultClockConfigRun.coreClock;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2015, Freescale Semiconductor, Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
* are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* o Redistributions of source code must retain the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* o Redistributions in binary form must reproduce the above copyright notice, this
|
||||||
|
* list of conditions and the following disclaimer in the documentation and/or
|
||||||
|
* other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* o Neither the name of Freescale Semiconductor, Inc. nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived from this
|
||||||
|
* software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
#ifndef _CLOCK_CONFIG_H_
|
||||||
|
#define _CLOCK_CONFIG_H_
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* DEFINITION
|
||||||
|
******************************************************************************/
|
||||||
|
#define BOARD_XTAL0_CLK_HZ 12000000U
|
||||||
|
#define BOARD_XTAL32K_CLK_HZ 32768U
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* API
|
||||||
|
******************************************************************************/
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
extern "C" {
|
||||||
|
#endif /* __cplusplus*/
|
||||||
|
|
||||||
|
void BOARD_BootClockVLPR(void);
|
||||||
|
void BOARD_BootClockRUN(void);
|
||||||
|
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
}
|
||||||
|
#endif /* __cplusplus*/
|
||||||
|
|
||||||
|
#endif /* _CLOCK_CONFIG_H_ */
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
/* mbed Microcontroller Library
|
||||||
|
* Copyright (c) 2006-2013 ARM Limited
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
#include "gpio_api.h"
|
||||||
|
|
||||||
|
#include "fsl_clock_config.h"
|
||||||
|
|
||||||
|
// called before main
|
||||||
|
void mbed_sdk_init()
|
||||||
|
{
|
||||||
|
BOARD_BootClockRUN();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Enable the RTC oscillator if available on the board
|
||||||
|
void rtc_setup_oscillator(RTC_Type *base)
|
||||||
|
{
|
||||||
|
/* Enable the RTC oscillator */
|
||||||
|
RTC->CR |= RTC_CR_OSCE_MASK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -28,6 +28,7 @@
|
||||||
#include "fsl_uart.h"
|
#include "fsl_uart.h"
|
||||||
#include "peripheral_clock_defines.h"
|
#include "peripheral_clock_defines.h"
|
||||||
#include "PeripheralPins.h"
|
#include "PeripheralPins.h"
|
||||||
|
#include "fsl_clock_config.h"
|
||||||
|
|
||||||
static uint32_t serial_irq_ids[FSL_FEATURE_SOC_UART_COUNT] = {0};
|
static uint32_t serial_irq_ids[FSL_FEATURE_SOC_UART_COUNT] = {0};
|
||||||
static uart_irq_handler irq_handler;
|
static uart_irq_handler irq_handler;
|
||||||
|
|
@ -46,6 +47,10 @@ void serial_init(serial_t *obj, PinName tx, PinName rx) {
|
||||||
obj->index = pinmap_merge(uart_tx, uart_rx);
|
obj->index = pinmap_merge(uart_tx, uart_rx);
|
||||||
MBED_ASSERT((int)obj->index != NC);
|
MBED_ASSERT((int)obj->index != NC);
|
||||||
|
|
||||||
|
// Need to initialize the clocks here as ticker init gets called before mbed_sdk_init
|
||||||
|
if (SystemCoreClock == DEFAULT_SYSTEM_CLOCK)
|
||||||
|
BOARD_BootClockRUN();
|
||||||
|
|
||||||
uart_config_t config;
|
uart_config_t config;
|
||||||
|
|
||||||
UART_GetDefaultConfig(&config);
|
UART_GetDefaultConfig(&config);
|
||||||
|
|
|
||||||
|
|
@ -609,6 +609,20 @@ class MTS_GAMBIT(Target):
|
||||||
"target":"mts-gambit",
|
"target":"mts-gambit",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class HEXIWEAR(Target):
|
||||||
|
def __init__(self):
|
||||||
|
Target.__init__(self)
|
||||||
|
self.core = "Cortex-M4F"
|
||||||
|
self.extra_labels = ['NXP', 'KPSDK2_MCUS', 'K64F']
|
||||||
|
self.supported_toolchains = ["ARM", "GCC_ARM", "IAR"]
|
||||||
|
self.macros = ["CPU_MK64FN1M0VMD12", "FSL_RTOS_MBED", "TARGET_K64F"]
|
||||||
|
self.is_disk_virtual = True
|
||||||
|
self.default_toolchain = "ARM"
|
||||||
|
self.detect_code = ["0240"]
|
||||||
|
self.progen = {
|
||||||
|
"target":"hexiwear-k64f",
|
||||||
|
}
|
||||||
|
|
||||||
### Freescale ###
|
### Freescale ###
|
||||||
|
|
||||||
class KL05Z(Target):
|
class KL05Z(Target):
|
||||||
|
|
@ -2158,8 +2172,9 @@ TARGETS = [
|
||||||
LPC4337(),
|
LPC4337(),
|
||||||
LPC11U37H_401(),
|
LPC11U37H_401(),
|
||||||
K22F(),
|
K22F(),
|
||||||
K64F(),
|
K64F(), # FRDM K64F
|
||||||
MTS_GAMBIT(), # FRDM K64F
|
MTS_GAMBIT(),
|
||||||
|
HEXIWEAR(),
|
||||||
|
|
||||||
### Freescale ###
|
### Freescale ###
|
||||||
KL05Z(),
|
KL05Z(),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue