Kinetis Bootloader  2.0.0
Common bootloader for Kinetis devices
board.h
1 /*
2  * Copyright (c) 2015, Freescale Semiconductor, Inc.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without modification,
6  * are permitted provided that the following conditions are met:
7  *
8  * o Redistributions of source code must retain the above copyright notice, this list
9  * of conditions and the following disclaimer.
10  *
11  * o Redistributions in binary form must reproduce the above copyright notice, this
12  * list of conditions and the following disclaimer in the documentation and/or
13  * other materials provided with the distribution.
14  *
15  * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
16  * contributors may be used to endorse or promote products derived from this
17  * software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
23  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
26  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30 
31 #ifndef _BOARD_H_
32 #define _BOARD_H_
33 
34 #include "gpio/fsl_gpio.h"
35 
36 /*******************************************************************************
37  * Definitions
38  ******************************************************************************/
39 
41 #define BOARD_NAME "TWR-K65F180M"
42 
44 #define BOARD_USE_UART
45 #define BOARD_DEBUG_UART_TYPE DEBUG_CONSOLE_DEVICE_TYPE_UART
46 #define BOARD_DEBUG_UART_BASEADDR (uint32_t) UART2
47 #define BOARD_DEBUG_UART_CLKSRC BUS_CLK
48 
49 #ifndef BOARD_DEBUG_UART_BAUDRATE
50 #define BOARD_DEBUG_UART_BAUDRATE 115200
51 #endif /* BOARD_DEBUG_UART_BAUDRATE */
52 
54 #define BOARD_CAN_BASEADDR CAN0
55 
57 #define BOARD_I2C_BASEADDR I2C0
58 
60 #define BOARD_FTM_BASEADDR FTM0
61 #define BOARD_FTM_CHANNEL 2
62 
64 #define BOARD_TPM_BASEADDR TPM2
65 #define BOARD_TPM_CHANNEL 0
66 
68 #define BOARD_ENET_BASEADDR ENET
69 
71 #define BOARD_FLEXBUS_BASEADDR FB
72 
73 #define BOARD_TSI_ELECTRODE_CNT 2
74 
76 #define BOARD_TSI_ELECTRODE_1 11
77 #define BOARD_TSI_ELECTRODE_2 12
78 
80 #define BOARD_SDHC_BASEADDR SDHC
81 #define BOARD_SDHC_CD_GPIO_IRQ_HANDLER PORTA_IRQHandler
82 
84 #define BOARD_CMP_BASEADDR CMP2
85 #define BOARD_CMP_CHANNEL 2
86 
88 #define BOARD_SAI_DEMO_I2C_BASEADDR I2C0
89 
91 #define BOARD_RTC_FUNC_BASEADDR RTC
92 
94 #define BOARD_SDCARD_CARD_DETECTION_GPIO_PORT GPIOD
95 #define SDCARD_CARD_DETECTION_GPIO_PIN 15
96 #define SDCARD_CARD_WRITE_PROTECTION_GPIO_PORT GPIOC
97 #define SDCARD_CARD_WRITE_PROTECTION_GPIO_PIN 13
98 #define SDCARD_SPI_HW_BASEADDR SPI1
99 #define SDCARD_CARD_INSERTED 0
100 
102 enum
103 {
104  kSwitch1,
105  kSwitch2,
106  kSwitch3,
107 };
108 #define BOARD_SW2_GPIO GPIOA
109 #define BOARD_SW2_PORT PORTA
110 #define BOARD_SW2_GPIO_PIN 4
111 #define BOARD_SW2_IRQ PORTA_IRQn
112 #define BOARD_SW2_IRQ_HANDLER PORTA_IRQHandler
113 #define BOARD_SW2_NAME "SW2"
114 #define BOARD_SW2_MASK (1u << BOARD_SW2_GPIO_PIN)
115 
116 #define BOARD_SW3_GPIO GPIOA
117 #define BOARD_SW3_PORT PORTA
118 #define BOARD_SW3_GPIO_PIN 10
119 #define BOARD_SW3_IRQ PORTA_IRQn
120 #define BOARD_SW3_IRQ_HANDLER PORTA_IRQHandler
121 #define BOARD_SW3_NAME "SW3"
122 #define BOARD_SW3_MASK (1u << BOARD_SW3_GPIO_PIN)
123 
124 #define BOARD_SW_IRQ_HANDLER PORTA_IRQHandler
125 
126 #define BOARD_LED_RED_GPIO_PORT GPIOB
127 #define BOARD_LED_RED_GPIO_PIN 5
128 #define BOARD_LED_RED_MASK (1u << BOARD_LED_RED_GPIO_PIN)
129 #define BOARD_LED_GREEN_GPIO_PORT GPIOA
130 #define BOARD_LED_GREEN_GPIO_PIN 28
131 #define BOARD_LED_GREEN_MASK (1u << BOARD_LED_GREEN_GPIO_PIN)
132 #define BOARD_LED_BLUE_GPIO_PORT GPIOA
133 #define BOARD_LED_BLUE_GPIO_PIN 29
134 #define BOARD_LED_BLUE_MASK (1u << BOARD_LED_BLUE_GPIO_PIN)
135 #define BOARD_LED_YELLOW_GPIO_PORT GPIOB
136 #define BOARD_LED_YELLOW_GPIO_PIN 4
137 #define BOARD_LED_YELLOW_MASK (1u << BOARD_LED_YELLOW_GPIO_PIN)
138 
139 #define LED_RED_ON GPIO_ClearPinsOutput(BOARD_LED_RED_GPIO_PORT, BOARD_LED_RED_MASK)
140 #define LED_RED_OFF GPIO_SetPinsOutput(BOARD_LED_RED_GPIO_PORT, BOARD_LED_RED_MASK)
141 #define LED_GREEN_ON GPIO_ClearPinsOutput(BOARD_LED_GREEN_GPIO_PORT, BOARD_LED_GREEN_MASK)
142 #define LED_GREEN_OFF GPIO_SetPinsOutput(BOARD_LED_GREEN_GPIO_PORT, BOARD_LED_GREEN_MASK)
143 #define LED_BLUE_ON GPIO_ClearPinsOutput(BOARD_LED_BLUE_GPIO_PORT, BOARD_LED_BLUE_MASK)
144 #define LED_BLUE_OFF GPIO_SetPinsOutput(BOARD_LED_BLUE_GPIO_PORT, BOARD_LED_BLUE_MASK)
145 #define LED_YELLOW_ON GPIO_ClearPinsOutput(BOARD_LED_YELLOW_GPIO_PORT, BOARD_LED_YELLOW_MASK)
146 #define LED_YELLOW_OFF GPIO_SetPinsOutput(BOARD_LED_YELLOW_GPIO_PORT, BOARD_LED_YELLOW_MASK)
147 
148 #define BOARD_ID_GPIO GPIOE
149 #define BOARD_ID_PORT PORTE
150 #define BOARD_ID_GPIO_PIN 10U
151 #define BOARD_ID_IRQ PORTE_IRQn
152 
153 #if defined(__cplusplus)
154 extern "C" {
155 #endif /* __cplusplus */
156 
157 /*******************************************************************************
158  * API
159  ******************************************************************************/
160 extern void BOARD_InitHardware(void);
161 void BOARD_InitSwitch(void);
162 void BOARD_InitLED(void);
163 bool BOARD_ReadSwitch(uint32_t switch_num);
164 
165 #if defined(__cplusplus)
166 }
167 #endif /* __cplusplus */
168 
169 #endif /* _BOARD_H_ */