]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_ATSAM3S-EK2_Atmel_Studio/src/asf/sam/boards/sam3s_ek2/init.c
Add demo for SAM3S-EK2.
[freertos] / FreeRTOS / Demo / CORTEX_ATSAM3S-EK2_Atmel_Studio / src / asf / sam / boards / sam3s_ek2 / init.c
1 /**\r
2  * \file\r
3  *\r
4  * \brief SAM3S-EK2 board init.\r
5  *\r
6  * Copyright (c) 2011 - 2012 Atmel Corporation. All rights reserved.\r
7  *\r
8  * \asf_license_start\r
9  *\r
10  * \page License\r
11  *\r
12  * Redistribution and use in source and binary forms, with or without\r
13  * modification, are permitted provided that the following conditions are met:\r
14  *\r
15  * 1. Redistributions of source code must retain the above copyright notice,\r
16  *    this list of conditions and the following disclaimer.\r
17  *\r
18  * 2. Redistributions in binary form must reproduce the above copyright notice,\r
19  *    this list of conditions and the following disclaimer in the documentation\r
20  *    and/or other materials provided with the distribution.\r
21  *\r
22  * 3. The name of Atmel may not be used to endorse or promote products derived\r
23  *    from this software without specific prior written permission.\r
24  *\r
25  * 4. This software may only be redistributed and used in connection with an\r
26  *    Atmel microcontroller product.\r
27  *\r
28  * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
29  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
30  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
31  * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
32  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
33  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
34  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
35  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
36  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
37  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
38  * POSSIBILITY OF SUCH DAMAGE.\r
39  *\r
40  * \asf_license_stop\r
41  *\r
42  */\r
43 \r
44 #include "compiler.h"\r
45 #include "board.h"\r
46 #include "conf_board.h"\r
47 #include "gpio.h"\r
48 \r
49 void board_init(void)\r
50 {\r
51 #ifndef CONF_BOARD_KEEP_WATCHDOG_AT_INIT \r
52         /* Disable the watchdog */\r
53         WDT->WDT_MR = WDT_MR_WDDIS;\r
54 #endif\r
55 \r
56         /* Configure LED pins */\r
57         gpio_configure_pin(LED0_GPIO, LED0_FLAGS);\r
58         gpio_configure_pin(LED1_GPIO, LED1_FLAGS);\r
59         \r
60         /* Configure Push Button pins */\r
61         gpio_configure_pin(GPIO_PUSH_BUTTON_1, GPIO_PUSH_BUTTON_1_FLAGS);\r
62         gpio_configure_pin(GPIO_PUSH_BUTTON_2, GPIO_PUSH_BUTTON_2_FLAGS);\r
63         \r
64 #ifdef CONF_BOARD_UART_CONSOLE\r
65         /* Configure UART pins */\r
66         gpio_configure_group(PINS_UART_PIO, PINS_UART, PINS_UART_FLAGS);\r
67 #endif\r
68 \r
69         /* Configure ADC example pins */\r
70 #ifdef CONF_BOARD_ADC\r
71         /* TC TIOA configuration */\r
72         gpio_configure_pin(PIN_TC0_TIOA0,PIN_TC0_TIOA0_FLAGS);\r
73         \r
74         /* ADC Trigger configuration */\r
75         gpio_configure_pin(PINS_ADC_TRIG, PINS_ADC_TRIG_FLAG);\r
76 \r
77         /* PWMH0 configuration */\r
78         gpio_configure_pin(PIN_PWMC_PWMH0_TRIG, PIN_PWMC_PWMH0_TRIG_FLAG);\r
79 #endif\r
80 \r
81 #ifdef CONF_BOARD_PWM_LED0\r
82         /* Configure PWM LED0 pin */\r
83         gpio_configure_pin(PIN_PWM_LED0_GPIO, PIN_PWM_LED0_FLAGS);\r
84 #endif\r
85 \r
86 #ifdef CONF_BOARD_PWM_LED1\r
87         /* Configure PWM LED1 pin */\r
88         gpio_configure_pin(PIN_PWM_LED1_GPIO, PIN_PWM_LED1_FLAGS);\r
89 #endif\r
90 \r
91 #ifdef CONF_BOARD_PWM_LED2\r
92         /* Configure PWM LED2 pin */\r
93         gpio_configure_pin(PIN_PWM_LED2_GPIO, PIN_PWM_LED2_FLAGS);\r
94 #endif\r
95 \r
96         /* Configure SPI pins */\r
97 #ifdef CONF_BOARD_SPI\r
98         gpio_configure_pin(SPI_MISO_GPIO, SPI_MISO_FLAGS);\r
99         gpio_configure_pin(SPI_MOSI_GPIO, SPI_MOSI_FLAGS);\r
100         gpio_configure_pin(SPI_SPCK_GPIO, SPI_SPCK_FLAGS);\r
101         \r
102         /**\r
103          * For NPCS 1, 2, and 3, different PINs can be used to access the same NPCS line.\r
104          * Depending on the application requirements, the default PIN may not be available. \r
105          * Hence a different PIN should be selected using the CONF_BOARD_SPI_NPCS_GPIO and \r
106          * CONF_BOARD_SPI_NPCS_FLAGS macros.\r
107          */\r
108         \r
109         #ifdef CONF_BOARD_SPI_NPCS0\r
110                 gpio_configure_pin(SPI_NPCS0_GPIO, SPI_NPCS0_FLAGS);\r
111         #endif\r
112 \r
113         #ifdef CONF_BOARD_SPI_NPCS1\r
114                 #if defined(CONF_BOARD_SPI_NPCS1_GPIO) && defined(CONF_BOARD_SPI_NPCS1_FLAGS)\r
115                         gpio_configure_pin(CONF_BOARD_SPI_NPCS1_GPIO, CONF_BOARD_SPI_NPCS1_FLAGS);\r
116                 #else\r
117                         gpio_configure_pin(SPI_NPCS1_PA31_GPIO, SPI_NPCS1_PA31_FLAGS);\r
118                 #endif\r
119         #endif\r
120 \r
121         #ifdef CONF_BOARD_SPI_NPCS2\r
122                 #if defined(CONF_BOARD_SPI_NPCS2_GPIO) && defined(CONF_BOARD_SPI_NPCS2_FLAGS)\r
123                         gpio_configure_pin(CONF_BOARD_SPI_NPCS2_GPIO, CONF_BOARD_SPI_NPCS2_FLAGS);\r
124                 #else\r
125                         gpio_configure_pin(SPI_NPCS2_PA30_GPIO, SPI_NPCS2_PA30_FLAGS);\r
126                 #endif\r
127         #endif\r
128 \r
129         #ifdef CONF_BOARD_SPI_NPCS3\r
130                 #if defined(CONF_BOARD_SPI_NPCS3_GPIO) && defined(CONF_BOARD_SPI_NPCS3_FLAGS)\r
131                         gpio_configure_pin(CONF_BOARD_SPI_NPCS3_GPIO, CONF_BOARD_SPI_NPCS3_FLAGS);\r
132                 #else\r
133                         gpio_configure_pin(SPI_NPCS3_PA22_GPIO, SPI_NPCS3_PA22_FLAGS);\r
134                 #endif\r
135         #endif\r
136 #endif\r
137 \r
138 #ifdef CONF_BOARD_USART_RXD\r
139         /* Configure USART RXD pin */\r
140         gpio_configure_pin(PIN_USART1_RXD_IDX, PIN_USART1_RXD_FLAGS);\r
141 #endif\r
142 \r
143 #ifdef CONF_BOARD_USART_TXD\r
144         /* Configure USART TXD pin */\r
145         gpio_configure_pin(PIN_USART1_TXD_IDX, PIN_USART1_TXD_FLAGS);\r
146 #endif\r
147 \r
148 #ifdef CONF_BOARD_USART_CTS\r
149         /* Configure USART CTS pin */\r
150         gpio_configure_pin(PIN_USART1_CTS_IDX, PIN_USART1_CTS_FLAGS);\r
151 #endif\r
152 \r
153 #ifdef CONF_BOARD_USART_RTS\r
154         /* Configure USART RTS pin */\r
155         gpio_configure_pin(PIN_USART1_RTS_IDX, PIN_USART1_RTS_FLAGS);\r
156 #endif\r
157 \r
158 #ifdef CONF_BOARD_USART_SCK\r
159         /* Configure USART synchronous communication SCK pin */\r
160         gpio_configure_pin(PIN_USART1_SCK_IDX, PIN_USART1_SCK_FLAGS);\r
161 #endif\r
162 \r
163 #ifdef CONF_BOARD_ADM3312_EN\r
164         /* Configure ADM33312 enable pin */\r
165         gpio_configure_pin(PIN_USART1_EN_IDX, PIN_USART1_EN_FLAGS);\r
166         gpio_set_pin_low(PIN_USART1_EN_IDX);\r
167 #endif\r
168 \r
169 #ifdef CONF_BOARD_TFDU4300_SD\r
170         /* Configure IrDA transceiver shutdown pin */\r
171         gpio_configure_pin(PIN_IRDA_SD_IDX, PIN_IRDA_SD_FLAGS);\r
172         gpio_set_pin_low(PIN_IRDA_SD_IDX);\r
173 #endif\r
174 \r
175 #ifdef CONF_BOARD_ADM3485_RE\r
176         /* Configure RS485 transceiver RE pin */\r
177     gpio_configure_pin(PIN_RE_IDX, PIN_RE_FLAGS);\r
178         gpio_set_pin_low(PIN_RE_IDX);\r
179 #endif\r
180 \r
181 #ifdef CONF_BOARD_ILI9325\r
182         /* Configure LCD EBI pins */\r
183         gpio_configure_pin(PIN_EBI_DATA_BUS_D0, PIN_EBI_DATA_BUS_FLAGS);\r
184         gpio_configure_pin(PIN_EBI_DATA_BUS_D1, PIN_EBI_DATA_BUS_FLAGS);\r
185         gpio_configure_pin(PIN_EBI_DATA_BUS_D2, PIN_EBI_DATA_BUS_FLAGS);\r
186         gpio_configure_pin(PIN_EBI_DATA_BUS_D3, PIN_EBI_DATA_BUS_FLAGS);\r
187         gpio_configure_pin(PIN_EBI_DATA_BUS_D4, PIN_EBI_DATA_BUS_FLAGS);\r
188         gpio_configure_pin(PIN_EBI_DATA_BUS_D5, PIN_EBI_DATA_BUS_FLAGS);\r
189         gpio_configure_pin(PIN_EBI_DATA_BUS_D6, PIN_EBI_DATA_BUS_FLAGS);\r
190         gpio_configure_pin(PIN_EBI_DATA_BUS_D7, PIN_EBI_DATA_BUS_FLAGS);\r
191         gpio_configure_pin(PIN_EBI_NRD, PIN_EBI_NRD_FLAGS);\r
192         gpio_configure_pin(PIN_EBI_NWE, PIN_EBI_NWE_FLAGS);\r
193         gpio_configure_pin(PIN_EBI_NCS1, PIN_EBI_NCS1_FLAGS);\r
194         gpio_configure_pin(PIN_EBI_LCD_RS, PIN_EBI_LCD_RS_FLAGS);\r
195 #endif\r
196 \r
197 #ifdef CONF_BOARD_AAT3155\r
198         /* Configure Backlight control pin */\r
199         gpio_configure_pin(BOARD_BACKLIGHT, BOARD_BACKLIGHT_FLAG);\r
200 #endif\r
201 \r
202 #ifdef CONF_BOARD_ADS7843\r
203         /* Configure Touchscreen SPI pins */\r
204         gpio_configure_pin(PIN_TSC_IRQ_IDX,PIN_TSC_IRQ_FLAG);\r
205         gpio_configure_pin(SPI_MISO_GPIO, SPI_MISO_FLAGS);\r
206         gpio_configure_pin(SPI_MOSI_GPIO, SPI_MOSI_FLAGS);\r
207         gpio_configure_pin(SPI_SPCK_GPIO, SPI_SPCK_FLAGS);\r
208         gpio_configure_pin(SPI_NPCS0_GPIO, SPI_NPCS0_FLAGS);\r
209         gpio_configure_pin(PIN_TSC_BUSY_IDX, PIN_TSC_BUSY_FLAG);\r
210 #endif\r
211 \r
212 #ifdef CONF_BOARD_MMA7341L\r
213         /* Configure MMA7341L mode set control pin */\r
214         gpio_configure_pin(PIN_MMA7341L_MODE, PIN_MMA7341L_MODE_FLAG);\r
215         /* Configure MMA7341L x,y,z axis output voltage pin */\r
216         gpio_configure_pin(PIN_MMA7341L_X_AXIS, PIN_MMA7341L_X_AXIS_FLAG);\r
217         gpio_configure_pin(PIN_MMA7341L_Y_AXIS, PIN_MMA7341L_Y_AXIS_FLAG);\r
218         gpio_configure_pin(PIN_MMA7341L_Z_AXIS, PIN_MMA7341L_Z_AXIS_FLAG);\r
219 #endif\r
220 \r
221 #ifdef CONF_BOARD_ISO7816_RST\r
222         /* Configure ISO7816 card reset pin */\r
223         gpio_configure_pin(PIN_ISO7816_RST_IDX, PIN_ISO7816_RST_FLAG);\r
224 #endif\r
225 \r
226 #ifdef CONF_BOARD_ISO7816\r
227         /* Configure ISO7816 interface TXD & SCK pin */\r
228         gpio_configure_pin(PIN_USART1_TXD_IDX, PIN_USART1_TXD_FLAGS);\r
229         gpio_configure_pin(PIN_USART1_SCK_IDX, PIN_USART1_SCK_FLAGS);\r
230 #endif\r
231 \r
232 #ifdef CONF_BOARD_NAND\r
233         gpio_configure_pin(PIN_EBI_NANDOE, PIN_EBI_NANDOE_FLAGS);\r
234         gpio_configure_pin(PIN_EBI_NANDWE, PIN_EBI_NANDWE_FLAGS);\r
235         gpio_configure_pin(PIN_EBI_NANDCLE, PIN_EBI_NANDCLE_FLAGS);\r
236         gpio_configure_pin(PIN_EBI_NANDALE, PIN_EBI_NANDALE_FLAGS);\r
237         gpio_configure_pin(PIN_EBI_NANDIO_0, PIN_EBI_NANDIO_0_FLAGS);\r
238         gpio_configure_pin(PIN_EBI_NANDIO_1, PIN_EBI_NANDIO_1_FLAGS);\r
239         gpio_configure_pin(PIN_EBI_NANDIO_2, PIN_EBI_NANDIO_2_FLAGS);\r
240         gpio_configure_pin(PIN_EBI_NANDIO_3, PIN_EBI_NANDIO_3_FLAGS);\r
241         gpio_configure_pin(PIN_EBI_NANDIO_4, PIN_EBI_NANDIO_4_FLAGS);\r
242         gpio_configure_pin(PIN_EBI_NANDIO_5, PIN_EBI_NANDIO_5_FLAGS);\r
243         gpio_configure_pin(PIN_EBI_NANDIO_6, PIN_EBI_NANDIO_6_FLAGS);\r
244         gpio_configure_pin(PIN_EBI_NANDIO_7, PIN_EBI_NANDIO_7_FLAGS);\r
245         gpio_configure_pin(PIN_NF_CE_IDX, PIN_NF_CE_FLAGS);\r
246         gpio_configure_pin(PIN_NF_RB_IDX, PIN_NF_RB_FLAGS);\r
247 #endif\r
248 }\r