]> git.sur5r.net Git - freertos/blob - Demo/CORTEX_M4_ATSAM4S_Atmel_Studio/src/asf/sam/boards/sam4s_ek/sam4s_ek.h
Start to re-arrange files to include FreeRTOS+ in main download.
[freertos] / Demo / CORTEX_M4_ATSAM4S_Atmel_Studio / src / asf / sam / boards / sam4s_ek / sam4s_ek.h
1 /**\r
2  * \file\r
3  *\r
4  * \brief SAM4S-EK Board Definition.\r
5  *\r
6  * Copyright (c) 2011 - 2012 Atmel Corporation. All rights reserved.\r
7  *\r
8  * \asf_license_start\r
9  *\r
10  * Redistribution and use in source and binary forms, with or without\r
11  * modification, are permitted provided that the following conditions are met:\r
12  *\r
13  * 1. Redistributions of source code must retain the above copyright notice,\r
14  *    this list of conditions and the following disclaimer.\r
15  *\r
16  * 2. Redistributions in binary form must reproduce the above copyright notice,\r
17  *    this list of conditions and the following disclaimer in the documentation\r
18  *    and/or other materials provided with the distribution.\r
19  *\r
20  * 3. The name of Atmel may not be used to endorse or promote products derived\r
21  *    from this software without specific prior written permission.\r
22  *\r
23  * 4. This software may only be redistributed and used in connection with an\r
24  *    Atmel microcontroller product.\r
25  *\r
26  * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
27  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
28  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
29  * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
30  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
31  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
32  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
33  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
34  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
35  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
36  * POSSIBILITY OF SUCH DAMAGE.\r
37  *\r
38  * \asf_license_stop\r
39  *\r
40  */\r
41 \r
42 #ifndef _SAM4S_EK_H_\r
43 #define _SAM4S_EK_H_\r
44 \r
45 #include "compiler.h"\r
46 #include "system_sam4s.h"\r
47 #include "exceptions.h"\r
48 \r
49 /*\r
50 #define BOARD_REV_A\r
51 */\r
52 #define BOARD_REV_B\r
53 \r
54 /*----------------------------------------------------------------------------*/\r
55 /**\r
56  *  \page sam4s_ek_opfreq "SAM4S-EK - Operating frequencies"\r
57  *  This page lists several definition related to the board operating frequency\r
58  *\r
59  *  \section Definitions\r
60  *  - \ref BOARD_FREQ_*\r
61  *  - \ref BOARD_MCK\r
62  */\r
63 \r
64 /** Board oscillator settings */\r
65 #define BOARD_FREQ_SLCK_XTAL            (32768U)\r
66 #define BOARD_FREQ_SLCK_BYPASS          (32768U)\r
67 #define BOARD_FREQ_MAINCK_XTAL          (12000000U)\r
68 #define BOARD_FREQ_MAINCK_BYPASS        (12000000U)\r
69 \r
70 /** Master clock frequency */\r
71 #define BOARD_MCK                                       CHIP_FREQ_CPU_MAX\r
72 \r
73 /*----------------------------------------------------------------------------*/\r
74 /**\r
75  * \page sam4s_ek_board_info "SAM4S-EK - Board informations"\r
76  * This page lists several definition related to the board description.\r
77  *\r
78  * \section Definitions\r
79  * - \ref BOARD_NAME\r
80  */\r
81 \r
82 /** Name of the board */\r
83 #define BOARD_NAME "SAM4S-EK"\r
84 /** Board definition */\r
85 #define sam4sek\r
86 /** Family definition (already defined) */\r
87 #define sam4s\r
88 /** Core definition */\r
89 #define cortexm3\r
90 \r
91 /*----------------------------------------------------------------------------*/\r
92 /**\r
93  * \page sam4s_ek_piodef "SAM4S-EK - PIO definitions"\r
94  * This pages lists all the pio definitions. The constants\r
95  * are named using the following convention: PIN_* for a constant which defines\r
96  * a single Pin instance (but may include several PIOs sharing the same\r
97  * controller), and PINS_* for a list of Pin instances.\r
98  *\r
99  * ADC\r
100  * - \ref PIN_ADC0_AD0\r
101  * - \ref PIN_ADC0_AD1\r
102  * - \ref PIN_ADC0_AD2\r
103  * - \ref PIN_ADC0_AD3\r
104  * - \ref PIN_ADC0_AD4\r
105  * - \ref PIN_ADC0_AD5\r
106  * - \ref PIN_ADC0_AD6\r
107  * - \ref PIN_ADC0_AD7\r
108  * - \ref PINS_ADC\r
109  *\r
110  * UART\r
111  * - \ref PINS_UART\r
112  *\r
113  * EBI\r
114  * - \ref PIN_EBI_DATA_BUS\r
115  * - \ref PIN_EBI_NRD\r
116  * - \ref PIN_EBI_NWE\r
117  * - \ref PIN_EBI_NCS0\r
118  * - \ref PIN_EBI_PSRAM_ADDR_BUS\r
119  * - \ref PIN_EBI_PSRAM_NBS\r
120  * - \ref PIN_EBI_A1\r
121  * - \ref PIN_EBI_NCS1\r
122  * - \ref PIN_EBI_LCD_RS\r
123  *\r
124  * LEDs\r
125  * - \ref PIN_LED_0\r
126  * - \ref PIN_LED_1\r
127  * - \ref PIN_LED_2\r
128  * - \ref PINS_LEDS\r
129  *\r
130  * MCI\r
131  * - \ref PINS_MCI\r
132  *\r
133  * Push buttons\r
134  * - \ref PIN_PUSHBUTTON_1\r
135  * - \ref PIN_PUSHBUTTON_2\r
136  * - \ref PINS_PUSHBUTTONS\r
137  * - \ref PUSHBUTTON_BP1\r
138  * - \ref PUSHBUTTON_BP2\r
139  *\r
140  * PWMC\r
141  * - \ref PIN_PWMC_PWMH0\r
142  * - \ref PIN_PWMC_PWML0\r
143  * - \ref PIN_PWMC_PWMH1\r
144  * - \ref PIN_PWMC_PWML1\r
145  * - \ref PIN_PWMC_PWMH2\r
146  * - \ref PIN_PWMC_PWML2\r
147  * - \ref PIN_PWMC_PWMH3\r
148  * - \ref PIN_PWMC_PWML3\r
149  * - \ref PIN_PWM_LED0\r
150  * - \ref PIN_PWM_LED1\r
151  * - \ref PIN_PWM_LED2\r
152  * - \ref CHANNEL_PWM_LED0\r
153  * - \ref CHANNEL_PWM_LED1\r
154  * - \ref CHANNEL_PWM_LED2\r
155  *\r
156  * SPI\r
157  * - \ref PIN_SPI_MISO\r
158  * - \ref PIN_SPI_MOSI\r
159  * - \ref PIN_SPI_SPCK\r
160  * - \ref PINS_SPI\r
161  * - \ref PIN_SPI_NPCS0_PA11\r
162  *\r
163  * SSC\r
164  * - \ref PIN_SSC_TD\r
165  * - \ref PIN_SSC_TK\r
166  * - \ref PIN_SSC_TF\r
167  * - \ref PINS_SSC_CODEC\r
168  *\r
169  * PCK0\r
170  * - \ref PIN_PCK0\r
171  *\r
172  * PIO PARALLEL CAPTURE\r
173  * - \ref PIN_PIODCEN1\r
174  * - \ref PIN_PIODCEN2\r
175  *\r
176  * TWI\r
177  * - \ref TWI_V3XX\r
178  * - \ref PIN_TWI_TWD0\r
179  * - \ref PIN_TWI_TWCK0\r
180  * - \ref PINS_TWI0\r
181  * - \ref PIN_TWI_TWD1\r
182  * - \ref PIN_TWI_TWCK1\r
183  * - \ref PINS_TWI1\r
184  *\r
185  * USART0\r
186  * - \ref PIN_USART0_RXD\r
187  * - \ref PIN_USART0_TXD\r
188  * - \ref PIN_USART0_CTS\r
189  * - \ref PIN_USART0_RTS\r
190  * - \ref PIN_USART0_SCK\r
191  *\r
192  * USB\r
193  * - \ref PIN_USB_VBUS\r
194  *\r
195  * NandFlash\r
196  * - \ref PIN_EBI_NANDOE\r
197  * - \ref PIN_EBI_NANDWE\r
198  * - \ref PIN_EBI_NANDCLE\r
199  * - \ref PIN_EBI_NANDALE\r
200  * - \ref PIN_EBI_NANDIO\r
201  * - \ref BOARD_NF_CE_PIN\r
202  * - \ref BOARD_NF_RB_PIN\r
203  * - \ref PINS_NANDFLASH\r
204  *\r
205  * QTouch\r
206  * PIO definitions for Slider\r
207  * \ref SLIDER_IOMASK_SNS\r
208  * \ref SLIDER_IOMASK_SNSK\r
209  * \ref PINS_SLIDER_SNS\r
210  * \ref PINS_SLIDER_SNSK\r
211  *\r
212  * PIO definitions for keys\r
213  * \ref KEY_IOMASK_SNS\r
214  * \ref KEY_IOMASK_SNSK\r
215  * \ref PINS_KEY_SNS\r
216  * \ref PINS_KEY_SNSK\r
217  *\r
218  * PIOS for QTouch\r
219  * \ref PINS_QTOUCH\r
220  */\r
221 \r
222 /** ADC_AD0 pin definition. */\r
223 #define PIN_ADC0_AD0 {1 << 21, PIOA, ID_PIOA, PIO_INPUT, PIO_DEFAULT}\r
224 /** ADC_AD1 pin definition. */\r
225 #define PIN_ADC0_AD1 {1 << 30, PIOA, ID_PIOA, PIO_INPUT, PIO_DEFAULT}\r
226 /** ADC_AD2 pin definition. */\r
227 #define PIN_ADC0_AD2 {1 << 3, PIOB, ID_PIOB, PIO_INPUT, PIO_DEFAULT}\r
228 /** ADC_AD3 pin definition. */\r
229 #define PIN_ADC0_AD3 {1 << 4, PIOB, ID_PIOB, PIO_INPUT, PIO_DEFAULT}\r
230 /** ADC_AD4 pin definition. */\r
231 #define PIN_ADC0_AD4 {1 << 15, PIOC, ID_PIOC, PIO_INPUT, PIO_DEFAULT}\r
232 /** ADC_AD5 pin definition. */\r
233 #define PIN_ADC0_AD5 {1 << 16, PIOC, ID_PIOC, PIO_INPUT, PIO_DEFAULT}\r
234 /** ADC_AD6 pin definition. */\r
235 #define PIN_ADC0_AD6 {1 << 17, PIOC, ID_PIOC, PIO_INPUT, PIO_DEFAULT}\r
236 /** ADC_AD7 pin definition. */\r
237 #define PIN_ADC0_AD7 {1 << 18, PIOC, ID_PIOC, PIO_INPUT, PIO_DEFAULT}\r
238 \r
239 /** Pins ADC */\r
240 #define PINS_ADC PIN_ADC0_AD0, PIN_ADC0_AD1, PIN_ADC0_AD2, PIN_ADC0_AD3, PIN_ADC0_AD4, PIN_ADC0_AD5, PIN_ADC0_AD6, PIN_ADC0_AD7\r
241 #define PINS_ADC_TRIG  PIO_PA8_IDX\r
242 #define PINS_ADC_TRIG_FLAG  (PIO_PERIPH_B | PIO_DEFAULT)\r
243 \r
244 /** Startup time max, return from Idle mode (in Âµs) */\r
245 #define ADC_STARTUP_TIME_MAX       15\r
246 /** Track and hold Acquisition Time min (in ns) */\r
247 #define ADC_TRACK_HOLD_TIME_MIN  1200\r
248 /** ADC clock frequence */\r
249 #define BOARD_ADC_FREQ     (6000000)\r
250 \r
251 /** UART pins (UTXD0 and URXD0) definitions, PA9,10. */\r
252 #define PINS_UART               (PIO_PA9A_URXD0 | PIO_PA10A_UTXD0)\r
253 #define PINS_UART_FLAGS (PIO_PERIPH_A | PIO_DEFAULT)\r
254 \r
255 #define PINS_UART_MASK PIO_PA9A_URXD0|PIO_PA10A_UTXD0\r
256 #define PINS_UART_PIO PIOA\r
257 #define PINS_UART_ID ID_PIOA\r
258 #define PINS_UART_TYPE PIO_PERIPH_A\r
259 #define PINS_UART_ATTR PIO_DEFAULT\r
260 \r
261 /** EBI Data Bus pins */\r
262 #define PIN_EBI_DATA_BUS_D0        PIO_PC0_IDX\r
263 #define PIN_EBI_DATA_BUS_D1        PIO_PC1_IDX\r
264 #define PIN_EBI_DATA_BUS_D2        PIO_PC2_IDX\r
265 #define PIN_EBI_DATA_BUS_D3        PIO_PC3_IDX\r
266 #define PIN_EBI_DATA_BUS_D4        PIO_PC4_IDX\r
267 #define PIN_EBI_DATA_BUS_D5        PIO_PC5_IDX\r
268 #define PIN_EBI_DATA_BUS_D6        PIO_PC6_IDX\r
269 #define PIN_EBI_DATA_BUS_D7        PIO_PC7_IDX\r
270 #define PIN_EBI_DATA_BUS_FLAGS           PIO_PERIPH_A | PIO_PULLUP\r
271 #define PIN_EBI_DATA_BUS_MASK  0xFF\r
272 #define PIN_EBI_DATA_BUS_PIO  PIOC\r
273 #define PIN_EBI_DATA_BUS_ID  ID_PIOC\r
274 #define PIN_EBI_DATA_BUS_TYPE PIO_PERIPH_A\r
275 #define PIN_EBI_DATA_BUS_ATTR PIO_PULLUP\r
276 /** EBI NRD pin */\r
277 #define PIN_EBI_NRD                 PIO_PC11_IDX\r
278 #define PIN_EBI_NRD_FLAGS       PIO_PERIPH_A | PIO_PULLUP\r
279 #define PIN_EBI_NRD_MASK  1 << 11\r
280 #define PIN_EBI_NRD_PIO  PIOC\r
281 #define PIN_EBI_NRD_ID  ID_PIOC\r
282 #define PIN_EBI_NRD_TYPE PIO_PERIPH_A\r
283 #define PIN_EBI_NRD_ATTR PIO_PULLUP\r
284 /** EBI NWE pin */\r
285 #define PIN_EBI_NWE                  PIO_PC8_IDX\r
286 #define PIN_EBI_NWE_FLAGS       PIO_PERIPH_A | PIO_PULLUP\r
287 #define PIN_EBI_NWE_MASK  1 << 8\r
288 #define PIN_EBI_NWE_PIO  PIOC\r
289 #define PIN_EBI_NWE_ID  ID_PIOC\r
290 #define PIN_EBI_NWE_TYPE PIO_PERIPH_A\r
291 #define PIN_EBI_NWE_ATTR PIO_PULLUP\r
292 /** EBI NCS0 pin */\r
293 #define PIN_EBI_NCS0                PIO_PC14_IDX\r
294 #define PIN_EBI_NCS0_FLAGS     PIO_PERIPH_A | PIO_PULLUP\r
295 #define PIN_EBI_NCS0_MASK  1 << 14\r
296 #define PIN_EBI_NCS0_PIO  PIOC\r
297 #define PIN_EBI_NCS0_ID  ID_PIOC\r
298 #define PIN_EBI_NCS0_TYPE PIO_PERIPH_A\r
299 #define PIN_EBI_NCS0_ATTR PIO_PULLUP\r
300 /** EBI address bus pins  */\r
301 #define PIN_EBI_ADDR_BUS_A0     PIO_PC18_IDX\r
302 #define PIN_EBI_ADDR_BUS_A1     PIO_PC19_IDX\r
303 #define PIN_EBI_ADDR_BUS_A2     PIO_PC20_IDX\r
304 #define PIN_EBI_ADDR_BUS_A3     PIO_PC21_IDX\r
305 #define PIN_EBI_ADDR_BUS_A4     PIO_PC22_IDX\r
306 #define PIN_EBI_ADDR_BUS_A5     PIO_PC23_IDX\r
307 #define PIN_EBI_ADDR_BUS_A6     PIO_PC24_IDX\r
308 #define PIN_EBI_ADDR_BUS_A7     PIO_PC25_IDX\r
309 #define PIN_EBI_ADDR_BUS_A8     PIO_PC26_IDX\r
310 #define PIN_EBI_ADDR_BUS_A9     PIO_PC27_IDX\r
311 #define PIN_EBI_ADDR_BUS_A10   PIO_PC28_IDX\r
312 #define PIN_EBI_ADDR_BUS_A11   PIO_PC29_IDX\r
313 #define PIN_EBI_ADDR_BUS_A12   PIO_PC30_IDX\r
314 #define PIN_EBI_ADDR_BUS_A13   PIO_PC31_IDX\r
315 #define PIN_EBI_ADDR_BUS_FLAG1  PIO_PERIPH_A | PIO_PULLUP\r
316 #define PIN_EBI_ADDR_BUS_A14   PIO_PA18_IDX\r
317 #define PIN_EBI_ADDR_BUS_A15   PIO_PA19_IDX\r
318 #define PIN_EBI_ADDR_BUS_A16   PIO_PA20_IDX\r
319 #define PIN_EBI_ADDR_BUS_A17   PIO_PA0_IDX\r
320 #define PIN_EBI_ADDR_BUS_A18   PIO_PA1_IDX\r
321 #define PIN_EBI_ADDR_BUS_A19   PIO_PA23_IDX\r
322 #define PIN_EBI_ADDR_BUS_A20   PIO_PA24_IDX\r
323 #define PIN_EBI_ADDR_BUS_FLAG2  PIO_PERIPH_C | PIO_PULLUP\r
324 /** EBI pin for LCD CS */\r
325 #define PIN_EBI_NCS1                 PIO_PC15_IDX\r
326 #define PIN_EBI_NCS1_FLAGS      PIO_PERIPH_A | PIO_PULLUP\r
327 #define PIN_EBI_NCS1_MASK  1 << 15\r
328 #define PIN_EBI_NCS1_PIO  PIOC\r
329 #define PIN_EBI_NCS1_ID  ID_PIOC\r
330 #define PIN_EBI_NCS1_TYPE PIO_PERIPH_A\r
331 #define PIN_EBI_NCS1_ATTR PIO_PULLUP\r
332 /** EBI pin for LCD RS */\r
333 #define PIN_EBI_LCD_RS                PIO_PC19_IDX\r
334 #define PIN_EBI_LCD_RS_FLAGS     PIO_PERIPH_A | PIO_PULLUP\r
335 #define PIN_EBI_LCD_RS_MASK  1 << 19\r
336 #define PIN_EBI_LCD_RS_PIO  PIOC\r
337 #define PIN_EBI_LCD_RS_ID  ID_PIOC\r
338 #define PIN_EBI_LCD_RS_TYPE PIO_PERIPH_A\r
339 #define PIN_EBI_LCD_RS_ATTR PIO_PULLUP\r
340 \r
341 #define LED_BLUE      0\r
342 #define LED_GREEN     1\r
343 #define LED_RED       2\r
344 \r
345 #ifdef BOARD_REV_A\r
346 /** LED #0 pin definition (BLUE). */\r
347 #define PIN_LED_0   {PIO_PC20, PIOC, ID_PIOC, PIO_OUTPUT_1, PIO_DEFAULT}\r
348 #define PIN_LED_0_MASK PIO_PC20\r
349 #define PIN_LED_0_PIO PIOC\r
350 #define PIN_LED_0_ID ID_PIOC\r
351 #define PIN_LED_0_TYPE PIO_OUTPUT_1\r
352 #define PIN_LED_0_ATTR PIO_DEFAULT\r
353 \r
354 #define LED0_GPIO               (PIO_PC20_IDX)\r
355 #define LED0_FLAGS (PIO_OUTPUT_1 | PIO_DEFAULT)\r
356 \r
357 /** LED #1 pin definition (GREEN). */\r
358 #define PIN_LED_1   {PIO_PC21, PIOC, ID_PIOC, PIO_OUTPUT_1, PIO_DEFAULT}\r
359 \r
360 #define LED1_GPIO               (PIO_PC21_IDX)\r
361 #define LED1_FLAGS (PIO_OUTPUT_1 | PIO_DEFAULT)\r
362 \r
363 /** LED #2 pin definition (RED). */\r
364 #define PIN_LED_2   {PIO_PC22, PIOC, ID_PIOC, PIO_OUTPUT_1, PIO_DEFAULT}\r
365 #endif\r
366 \r
367 #ifdef BOARD_REV_B\r
368 /** LED #0 pin definition (BLUE). */\r
369 #define PIN_LED_0   {PIO_PA19, PIOA, ID_PIOA, PIO_OUTPUT_1, PIO_DEFAULT}\r
370 #define PIN_LED_0_MASK PIO_PA19\r
371 #define PIN_LED_0_PIO PIOA\r
372 #define PIN_LED_0_ID ID_PIOA\r
373 #define PIN_LED_0_TYPE PIO_OUTPUT_1\r
374 #define PIN_LED_0_ATTR PIO_DEFAULT\r
375 \r
376 #define LED0_GPIO               (PIO_PA19_IDX)\r
377 #define LED0_FLAGS (PIO_OUTPUT_1 | PIO_DEFAULT)\r
378 \r
379 /** LED #1 pin definition (GREEN). */\r
380 #define PIN_LED_1   {PIO_PA20, PIOA, ID_PIOA, PIO_OUTPUT_1, PIO_DEFAULT}\r
381 #define PIN_LED_1_MASK PIO_PA20\r
382 #define PIN_LED_1_PIO PIOA\r
383 #define PIN_LED_1_ID ID_PIOA\r
384 #define PIN_LED_1_TYPE PIO_OUTPUT_1\r
385 #define PIN_LED_1_ATTR PIO_DEFAULT\r
386 \r
387 #define LED1_GPIO               (PIO_PA20_IDX)\r
388 #define LED1_FLAGS (PIO_OUTPUT_1 | PIO_DEFAULT)\r
389 \r
390 /** LED #2 pin definition (RED). */\r
391 #define PIN_LED_2   {PIO_PC20, PIOC, ID_PIOC, PIO_OUTPUT_1, PIO_DEFAULT}\r
392 \r
393 #endif\r
394 \r
395 /** List of all LEDs definitions. */\r
396 #define PINS_LEDS   PIN_LED_0, PIN_LED_1, PIN_LED_2\r
397 \r
398 /** MCI pins definition. */\r
399 #define PINS_MCI   {0x3fUL << 26, PIOA, ID_PIOA, PIO_PERIPH_C, PIO_PULLUP}\r
400 /** MCI pin Card Detect. */\r
401 #ifdef BOARD_REV_A\r
402 #define PIN_MCI_CD {PIO_PA15, PIOA, ID_PIOA, PIO_INPUT, PIO_PULLUP}\r
403 #endif\r
404 \r
405 #ifdef BOARD_REV_B\r
406 #define PIN_MCI_CD {PIO_PA6, PIOA, ID_PIOA, PIO_INPUT, PIO_PULLUP}\r
407 #endif\r
408 \r
409 /** Push button #0 definition. Attributes = pull-up + debounce + interrupt on rising edge. */\r
410 #define GPIO_PUSH_BUTTON_1                      (PIO_PB3_IDX)\r
411 #define GPIO_PUSH_BUTTON_1_FLAGS        (PIO_INPUT | PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_RISE_EDGE)\r
412 \r
413 #define PIN_PUSHBUTTON_1    {PIO_PB3, PIOB, ID_PIOB, PIO_INPUT, PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_RISE_EDGE}\r
414 #define PIN_PUSHBUTTON_1_MASK PIO_PB3\r
415 #define PIN_PUSHBUTTON_1_PIO PIOB\r
416 #define PIN_PUSHBUTTON_1_ID ID_PIOB\r
417 #define PIN_PUSHBUTTON_1_TYPE PIO_INPUT\r
418 #define PIN_PUSHBUTTON_1_ATTR PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_RISE_EDGE\r
419 \r
420 /** Push button #1 definition. Attributes = pull-up + debounce + interrupt on falling edge. */\r
421 #define GPIO_PUSH_BUTTON_2                      (PIO_PC12_IDX)\r
422 #define GPIO_PUSH_BUTTON_2_FLAGS        (PIO_INPUT | PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_FALL_EDGE)\r
423 \r
424 #define PIN_PUSHBUTTON_2    {PIO_PC12, PIOC, ID_PIOC, PIO_INPUT, PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_FALL_EDGE}\r
425 #define PIN_PUSHBUTTON_2_MASK PIO_PC12\r
426 #define PIN_PUSHBUTTON_2_PIO PIOC\r
427 #define PIN_PUSHBUTTON_2_ID ID_PIOC\r
428 #define PIN_PUSHBUTTON_2_TYPE PIO_INPUT\r
429 #define PIN_PUSHBUTTON_2_ATTR PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_FALL_EDGE\r
430 \r
431 /** List of all push button definitions. */\r
432 #define PINS_PUSHBUTTONS    PIN_PUSHBUTTON_1, PIN_PUSHBUTTON_2\r
433 \r
434 /** Push button #1 index. */\r
435 #define PUSHBUTTON_BP1   0\r
436 /** Push button #2 index. */\r
437 #define PUSHBUTTON_BP2   1\r
438 \r
439 #define PIN_TC0_TIOA0           (PIO_PA0_IDX)\r
440 #define PIN_TC0_TIOA0_FLAGS     (PIO_PERIPH_B | PIO_DEFAULT)\r
441 \r
442 #define PIN_TC0_TIOA1           (PIO_PA15_IDX)\r
443 #define PIN_TC0_TIOA1_FLAGS     (PIO_PERIPH_B | PIO_DEFAULT)\r
444 \r
445 #define PIN_TC0_TIOA1_PIO     PIOA\r
446 #define PIN_TC0_TIOA1_MASK  PIO_PA15\r
447 #define PIN_TC0_TIOA1_ID      ID_PIOA\r
448 #define PIN_TC0_TIOA1_TYPE   PIO_PERIPH_B\r
449 #define PIN_TC0_TIOA1_ATTR   PIO_DEFAULT\r
450 \r
451 #define PIN_TC0_TIOA2           (PIO_PA26_IDX)\r
452 #define PIN_TC0_TIOA2_FLAGS     (PIO_INPUT | PIO_DEFAULT)\r
453 \r
454 #define PIN_TC0_TIOA2_PIO     PIOA\r
455 #define PIN_TC0_TIOA2_MASK  PIO_PA26\r
456 #define PIN_TC0_TIOA2_ID      ID_PIOA\r
457 #define PIN_TC0_TIOA2_TYPE   PIO_INPUT\r
458 #define PIN_TC0_TIOA2_ATTR   PIO_DEFAULT\r
459 \r
460 /** PWMC PWM0 pin definition: Output High. */\r
461 #define PIN_PWMC_PWMH0  {PIO_PC18B_PWMH0, PIOC, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT}\r
462 #define PIN_PWMC_PWMH0_TRIG   PIO_PC18_IDX\r
463 #define PIN_PWMC_PWMH0_TRIG_FLAG   PIO_PERIPH_B | PIO_DEFAULT\r
464 /** PWMC PWM0 pin definition: Output Low. */\r
465 #define PIN_PWMC_PWML0  {PIO_PA19B_PWML0, PIOA, ID_PIOA, PIO_PERIPH_B, PIO_DEFAULT}\r
466 /** PWMC PWM1 pin definition: Output High. */\r
467 #define PIN_PWMC_PWMH1  {PIO_PC19B_PWMH1, PIOC, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT}\r
468 /** PWMC PWM1 pin definition: Output Low. */\r
469 #define PIN_PWMC_PWML1  {PIO_PA20B_PWML1, PIOA, ID_PIOA, PIO_PERIPH_B, PIO_DEFAULT}\r
470 /** PWMC PWM2 pin definition: Output High. */\r
471 #define PIN_PWMC_PWMH2  {PIO_PC20B_PWMH2, PIOC, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT}\r
472 /** PWMC PWM2 pin definition: Output Low. */\r
473 #define PIN_PWMC_PWML2  {PIO_PA16C_PWML2, PIOA, ID_PIOA, PIO_PERIPH_C, PIO_DEFAULT}\r
474 /** PWMC PWM3 pin definition: Output High. */\r
475 #define PIN_PWMC_PWMH3  {PIO_PC21B_PWMH3, PIOC, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT}\r
476 /** PWMC PWM3 pin definition: Output Low. */\r
477 #define PIN_PWMC_PWML3  {PIO_PA15C_PWML3, PIOA, ID_PIOA, PIO_PERIPH_C, PIO_DEFAULT}\r
478 /** PWM pins definition for LED0 */\r
479 #define PIN_PWM_LED0 PIN_PWMC_PWMH0, PIN_PWMC_PWML0\r
480 /** PWM pins definition for LED1 */\r
481 #define PIN_PWM_LED1 PIN_PWMC_PWMH1, PIN_PWMC_PWML1\r
482 /** PWM pins definition for LED2 */\r
483 #define PIN_PWM_LED2 PIN_PWMC_PWMH2, PIN_PWMC_PWML2\r
484 /** PWM channel for LED0 */\r
485 #define CHANNEL_PWM_LED0 0\r
486 /** PWM channel for LED1 */\r
487 #define CHANNEL_PWM_LED1 1\r
488 /** PWM channel for LED2 */\r
489 #define CHANNEL_PWM_LED2 2\r
490 \r
491 /** PWM LED0 pin definitions. */\r
492 #define PIN_PWM_LED0_GPIO   PIO_PA19_IDX\r
493 #define PIN_PWM_LED0_FLAGS  (PIO_PERIPH_B | PIO_DEFAULT)\r
494 /** PWM LED1 pin definitions. */\r
495 #define PIN_PWM_LED1_GPIO   PIO_PA20_IDX\r
496 #define PIN_PWM_LED1_FLAGS  (PIO_PERIPH_B | PIO_DEFAULT)\r
497 /** PWM LED2 pin definitions. */\r
498 #define PIN_PWM_LED2_GPIO   PIO_PC20_IDX\r
499 #define PIN_PWM_LED2_FLAGS  (PIO_PERIPH_B | PIO_DEFAULT)\r
500 \r
501 /** SPI MISO pin definition. */\r
502 #define PIN_SPI_MISO    {PIO_PA12A_MISO, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}\r
503 /** SPI MOSI pin definition. */\r
504 #define PIN_SPI_MOSI    {PIO_PA13A_MOSI, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}\r
505 /** SPI SPCK pin definition. */\r
506 #define PIN_SPI_SPCK    {PIO_PA14A_SPCK, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}\r
507 /** SPI chip select pin definition. */\r
508 #define PIN_SPI_NPCS0_PA11  {PIO_PA11A_NPCS0, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}\r
509 /** List of SPI pin definitions (MISO, MOSI & SPCK). */\r
510 #define PINS_SPI        PIN_SPI_MISO, PIN_SPI_MOSI, PIN_SPI_SPCK\r
511 /** SPI MISO pin definition. */\r
512 #define SPI_MISO_GPIO                 (PIO_PA12_IDX)\r
513 #define SPI_MISO_FLAGS       (PIO_PERIPH_A | PIO_DEFAULT)\r
514 /** SPI MOSI pin definition. */\r
515 #define SPI_MOSI_GPIO                 (PIO_PA13_IDX)\r
516 #define SPI_MOSI_FLAGS       (PIO_PERIPH_A | PIO_DEFAULT)\r
517 /** SPI SPCK pin definition. */\r
518 #define SPI_SPCK_GPIO                 (PIO_PA14_IDX)\r
519 #define SPI_SPCK_FLAGS       (PIO_PERIPH_A | PIO_DEFAULT)\r
520 \r
521 /** SPI chip select 0 pin definition. (Only one configuration is possible) */\r
522 #define SPI_NPCS0_GPIO                (PIO_PA11_IDX)\r
523 #define SPI_NPCS0_FLAGS           (PIO_PERIPH_A | PIO_DEFAULT)\r
524 /** SPI chip select 1 pin definition. (multiple configurations are possible) */\r
525 #define SPI_NPCS1_PA9_GPIO                (PIO_PA9_IDX)\r
526 #define SPI_NPCS1_PA9_FLAGS       (PIO_PERIPH_B | PIO_DEFAULT)\r
527 #define SPI_NPCS1_PA31_GPIO       (PIO_PA31_IDX)\r
528 #define SPI_NPCS1_PA31_FLAGS      (PIO_PERIPH_A | PIO_DEFAULT)\r
529 #define SPI_NPCS1_PB14_GPIO       (PIO_PB14_IDX)\r
530 #define SPI_NPCS1_PB14_FLAGS      (PIO_PERIPH_A | PIO_DEFAULT)\r
531 #define SPI_NPCS1_PC4_GPIO                (PIO_PC4_IDX)\r
532 #define SPI_NPCS1_PC4_FLAGS       (PIO_PERIPH_B | PIO_DEFAULT)\r
533 /** SPI chip select 2 pin definition. (multiple configurations are possible) */\r
534 #define SPI_NPCS2_PA10_GPIO       (PIO_PA10_IDX)\r
535 #define SPI_NPCS2_PA10_FLAGS      (PIO_PERIPH_B | PIO_DEFAULT)\r
536 #define SPI_NPCS2_PA30_GPIO       (PIO_PA30_IDX)\r
537 #define SPI_NPCS2_PA30_FLAGS      (PIO_PERIPH_B | PIO_DEFAULT)\r
538 #define SPI_NPCS2_PB2_GPIO                (PIO_PB2_IDX)\r
539 #define SPI_NPCS2_PB2_FLAGS       (PIO_PERIPH_B | PIO_DEFAULT)\r
540 /** SPI chip select 3 pin definition. (multiple configurations are possible) */\r
541 #define SPI_NPCS3_PA3_GPIO                (PIO_PA3_IDX)\r
542 #define SPI_NPCS3_PA3_FLAGS       (PIO_PERIPH_B | PIO_DEFAULT)\r
543 #define SPI_NPCS3_PA5_GPIO                (PIO_PA5_IDX)\r
544 #define SPI_NPCS3_PA5_FLAGS       (PIO_PERIPH_B | PIO_DEFAULT)\r
545 #define SPI_NPCS3_PA22_GPIO       (PIO_PA22_IDX)\r
546 #define SPI_NPCS3_PA22_FLAGS      (PIO_PERIPH_B | PIO_DEFAULT)\r
547 \r
548 /** SSC pin Transmitter Data (TD) */\r
549 #define PIN_SSC_TD      {PIO_PA17A_TD, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}\r
550 /** SSC pin Transmitter Clock (TK) */\r
551 #define PIN_SSC_TK      {PIO_PA16A_TK, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}\r
552 /** SSC pin Transmitter FrameSync (TF) */\r
553 #define PIN_SSC_TF      {PIO_PA15A_TF, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}\r
554 /** SSC pins definition for codec. */\r
555 #define PINS_SSC_CODEC  PIN_SSC_TD, PIN_SSC_TK, PIN_SSC_TF\r
556 \r
557 /** PCK0 */\r
558 #define PIN_PCK0                (PIO_PA6_IDX)\r
559 #define PIN_PCK0_FLAGS  (PIO_PERIPH_B | PIO_DEFAULT)\r
560 \r
561 #define PIN_PCK_0_MASK PIO_PA6\r
562 #define PIN_PCK_0_PIO PIOA\r
563 #define PIN_PCK_0_ID ID_PIOA\r
564 #define PIN_PCK_0_TYPE PIO_PERIPH_B\r
565 #define PIN_PCK_0_ATTR PIO_DEFAULT\r
566 #define PIN_PCK1        {PIO_PA17B_PCK1,PIOA, ID_PIOA, PIO_PERIPH_B, PIO_DEFAULT}\r
567 #define PIN_PCK_1_MASK PIO_PA17\r
568 #define PIN_PCK_1_PIO PIOA\r
569 #define PIN_PCK_1_ID ID_PIOA\r
570 #define PIN_PCK_1_TYPE PIO_PERIPH_B\r
571 #define PIN_PCK_1_ATTR PIO_DEFAULT\r
572 \r
573 /** PIO PARALLEL CAPTURE */\r
574 /** Parallel Capture Mode Data Enable1 */\r
575 #define PIN_PIODCEN1    PIO_PA15\r
576 /** Parallel Capture Mode Data Enable2 */\r
577 #define PIN_PIODCEN2    PIO_PA16\r
578 \r
579 /** TWI ver 3.xx */\r
580 #define TWI_V3XX\r
581 /** TWI0 data pin */\r
582 #define PIN_TWI_TWD0   {PIO_PA3A_TWD0, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}\r
583 /** TWI0 clock pin */\r
584 #define PIN_TWI_TWCK0  {PIO_PA4A_TWCK0, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}\r
585 /** TWI0 pins */\r
586 #define PINS_TWI0      PIN_TWI_TWD0, PIN_TWI_TWCK0\r
587 /** TWI1 data pin */\r
588 #define PIN_TWI_TWD1   {PIO_PB4A_TWD1, PIOB, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT}\r
589 /** TWI1 clock pin */\r
590 #define PIN_TWI_TWCK1  {PIO_PB5A_TWCK1, PIOB, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT}\r
591 /** TWI1 pins */\r
592 #define PINS_TWI1      PIN_TWI_TWD1, PIN_TWI_TWCK1\r
593 \r
594 /** USART0 pin RX */\r
595 #define PIN_USART0_RXD    {PIO_PA5A_RXD0, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}\r
596 #define PIN_USART0_RXD_IDX        (PIO_PA5_IDX)\r
597 #define PIN_USART0_RXD_FLAGS      (PIO_PERIPH_A | PIO_DEFAULT)\r
598 /** USART0 pin TX */\r
599 #define PIN_USART0_TXD    {PIO_PA6A_TXD0, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}\r
600 #define PIN_USART0_TXD_IDX        (PIO_PA6_IDX)\r
601 #define PIN_USART0_TXD_FLAGS      (PIO_PERIPH_A | PIO_DEFAULT)\r
602 /** USART0 pin CTS */\r
603 #define PIN_USART0_CTS    {PIO_PA8A_CTS0, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}\r
604 #define PIN_USART0_CTS_IDX        (PIO_PA8_IDX)\r
605 #define PIN_USART0_CTS_FLAGS      (PIO_PERIPH_A | PIO_DEFAULT)\r
606 /** USART0 pin RTS */\r
607 #define PIN_USART0_RTS    {PIO_PA7A_RTS0, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}\r
608 #define PIN_USART0_RTS_IDX        (PIO_PA7_IDX)\r
609 #define PIN_USART0_RTS_FLAGS      (PIO_PERIPH_A | PIO_DEFAULT)\r
610 /** USART0 pin SCK */\r
611 #define PIN_USART0_SCK    {PIO_PA2B_SCK0, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}\r
612 #define PIN_USART0_SCK_IDX        (PIO_PA2_IDX)\r
613 #define PIN_USART0_SCK_FLAGS      (PIO_PERIPH_A | PIO_DEFAULT)\r
614 \r
615 /** USART1 pin RX */\r
616 #define PIN_USART1_RXD    {PIO_PA21A_RXD1, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}\r
617 #define PIN_USART1_RXD_IDX        (PIO_PA21_IDX)\r
618 #define PIN_USART1_RXD_FLAGS      (PIO_PERIPH_A | PIO_DEFAULT)\r
619 /** USART1 pin TX */\r
620 #define PIN_USART1_TXD    {PIO_PA22A_TXD1, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}\r
621 #define PIN_USART1_TXD_IDX        (PIO_PA22_IDX)\r
622 #define PIN_USART1_TXD_FLAGS      (PIO_PERIPH_A | PIO_DEFAULT)\r
623 /** USART1 pin CTS */\r
624 #define PIN_USART1_CTS    {PIO_PA25A_CTS1, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}\r
625 #define PIN_USART1_CTS_IDX        (PIO_PA25_IDX)\r
626 #define PIN_USART1_CTS_FLAGS      (PIO_PERIPH_A | PIO_DEFAULT)\r
627 /** USART1 pin RTS */\r
628 #define PIN_USART1_RTS    {PIO_PA24A_RTS1, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}\r
629 #define PIN_USART1_RTS_IDX        (PIO_PA24_IDX)\r
630 #define PIN_USART1_RTS_FLAGS      (PIO_PERIPH_A | PIO_DEFAULT)\r
631 /** USART1 pin ENABLE */\r
632 #define PIN_USART1_EN     {PIO_PA23A_SCK1, PIOA, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT}\r
633 #define PIN_USART1_EN_IDX         (PIO_PA23_IDX)\r
634 #define PIN_USART1_EN_FLAGS       (PIO_OUTPUT_0 | PIO_DEFAULT)\r
635 /** USART1 pin SCK */\r
636 #define PIN_USART1_SCK    {PIO_PA23A_SCK1, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}\r
637 #define PIN_USART1_SCK_IDX        (PIO_PA23_IDX)\r
638 #define PIN_USART1_SCK_FLAGS      (PIO_PERIPH_A | PIO_DEFAULT)\r
639 \r
640 /** USB VBus monitoring pin definition. */\r
641 #ifdef BOARD_REV_A\r
642 #define PIN_USB_VBUS    {PIO_PC23, PIOC, ID_PIOC, PIO_INPUT, PIO_PULLUP}\r
643 #endif\r
644 \r
645 #ifdef BOARD_REV_B\r
646 #define PIN_USB_VBUS    {PIO_PC21, PIOC, ID_PIOC, PIO_INPUT, PIO_PULLUP}\r
647 #endif\r
648 \r
649 /** NandFlash pins definition: OE. */\r
650 #define PIN_EBI_NANDOE          {PIO_PC9,  PIOC, ID_PIOC, PIO_PERIPH_A, PIO_PULLUP}\r
651 /** NandFlash pins definition: WE. */\r
652 #define PIN_EBI_NANDWE          {PIO_PC10, PIOC, ID_PIOC, PIO_PERIPH_A, PIO_PULLUP}\r
653 /** NandFlash pins definition: CLE. */\r
654 #define PIN_EBI_NANDCLE         {PIO_PC17, PIOC, ID_PIOC, PIO_PERIPH_A, PIO_PULLUP}\r
655 /** NandFlash pins definition: ALE. */\r
656 #define PIN_EBI_NANDALE         {PIO_PC16, PIOC, ID_PIOC, PIO_PERIPH_A, PIO_PULLUP}\r
657 /** NandFlash pins definition: DATA. */\r
658 #define PIN_EBI_NANDIO          {0x000000FF, PIOC, ID_PIOC, PIO_PERIPH_A, PIO_PULLUP}\r
659 \r
660 /** Nandflash chip enable pin definition. */\r
661 #define BOARD_NF_CE_PIN         {PIO_PC14, PIOC, ID_PIOC, PIO_OUTPUT_1, PIO_DEFAULT}\r
662 /** Nandflash ready/busy pin definition. */\r
663 #define BOARD_NF_RB_PIN         {PIO_PC18, PIOC, ID_PIOC, PIO_INPUT, PIO_PULLUP}\r
664 \r
665 /** Nandflash controller peripheral pins definition. */\r
666 #define PINS_NANDFLASH          PIN_EBI_NANDIO, BOARD_NF_CE_PIN, BOARD_NF_RB_PIN, PIN_EBI_NANDOE, \\r
667                                 PIN_EBI_NANDWE, PIN_EBI_NANDCLE, PIN_EBI_NANDALE\r
668 \r
669 /* PIO definitions for Slider */\r
670 #define SLIDER_IOMASK_SNS   (uint32_t)(PIO_PA0 | PIO_PA2 | PIO_PA4)\r
671 #define SLIDER_IOMASK_SNSK  (uint32_t)(PIO_PA1 | PIO_PA3 | PIO_PA5)\r
672 #define PINS_SLIDER_SNS     {SLIDER_IOMASK_SNS,  PIOA, ID_PIOA, PIO_INPUT, PIO_DEFAULT}\r
673 #define PINS_SLIDER_SNSK    {SLIDER_IOMASK_SNSK, PIOA, ID_PIOA, PIO_INPUT, PIO_DEFAULT}\r
674 \r
675 /* PIO definitions for keys */\r
676 #define KEY_IOMASK_SNS   (uint32_t)(PIO_PC22 | PIO_PC24 | PIO_PC26 | PIO_PC28 | PIO_PC30)\r
677 #define KEY_IOMASK_SNSK  (uint32_t)(PIO_PC23 | PIO_PC25 | PIO_PC27 | PIO_PC29 | PIO_PC31)\r
678 #define PINS_KEY_SNS     {KEY_IOMASK_SNS,  PIOC, ID_PIOC, PIO_INPUT, PIO_DEFAULT}\r
679 #define PINS_KEY_SNSK    {KEY_IOMASK_SNSK, PIOC, ID_PIOC, PIO_INPUT, PIO_DEFAULT}\r
680 \r
681 /* PIOS for QTouch */\r
682 #define PINS_QTOUCH     PINS_SLIDER_SNS, PINS_SLIDER_SNSK, PINS_KEY_SNS, PINS_KEY_SNSK\r
683 \r
684 \r
685 /*----------------------------------------------------------------------------*/\r
686 /**\r
687  * \page sam4s_ek_usb "SAM4S-EK - USB device"\r
688  *\r
689  * \section Definitions\r
690  * - \ref BOARD_USB_BMATTRIBUTES\r
691  * - \ref CHIP_USB_UDP\r
692  * - \ref CHIP_USB_PULLUP_INTERNAL\r
693  * - \ref CHIP_USB_NUMENDPOINTS\r
694  * - \ref CHIP_USB_ENDPOINTS_MAXPACKETSIZE\r
695  * - \ref CHIP_USB_ENDPOINTS_BANKS\r
696  */\r
697 \r
698 /** USB attributes configuration descriptor (bus or self powered, remote wakeup) */\r
699 #define BOARD_USB_BMATTRIBUTES              USBConfigurationDescriptor_SELFPOWERED_RWAKEUP\r
700 \r
701 /** Indicates chip has an UDP Full Speed. */\r
702 #define CHIP_USB_UDP\r
703 \r
704 /** Indicates chip has an internal pull-up. */\r
705 #define CHIP_USB_PULLUP_INTERNAL\r
706 \r
707 /** Number of USB endpoints */\r
708 #define CHIP_USB_NUMENDPOINTS 8\r
709 \r
710 /** Endpoints max paxcket size */\r
711 #define CHIP_USB_ENDPOINTS_MAXPACKETSIZE(i) \\r
712    ((i == 0) ? 64 : \\r
713    ((i == 1) ? 64 : \\r
714    ((i == 2) ? 64 : \\r
715    ((i == 3) ? 64 : \\r
716    ((i == 4) ? 512 : \\r
717    ((i == 5) ? 512 : \\r
718    ((i == 6) ? 64 : \\r
719    ((i == 7) ? 64 : 0 ))))))))\r
720 \r
721 /** Endpoints Number of Bank */\r
722 #define CHIP_USB_ENDPOINTS_BANKS(i) \\r
723    ((i == 0) ? 1 : \\r
724    ((i == 1) ? 2 : \\r
725    ((i == 2) ? 2 : \\r
726    ((i == 3) ? 1 : \\r
727    ((i == 4) ? 2 : \\r
728    ((i == 5) ? 2 : \\r
729    ((i == 6) ? 2 : \\r
730    ((i == 7) ? 2 : 0 ))))))))\r
731 \r
732 /*----------------------------------------------------------------------------*/\r
733 /**\r
734  * \page sam4s_ek_extcomp "SAM4S-EK - External components"\r
735  * This page lists the definitions related to external on-board components\r
736  * located in the board.h file for the SAM4S-EK.\r
737  *\r
738  * SD Card\r
739  * - \ref BOARD_SD_PINS\r
740  * - \ref BOARD_SD_PIN_CD\r
741  *\r
742  * LCD\r
743  * - \ref BOARD_LCD_ILI9325\r
744  * - \ref BOARD_LCD_PINS\r
745  * - \ref BOARD_BACKLIGHT_PIN\r
746  * - \ref BOARD_LCD_BASE\r
747  * - \ref BOARD_LCD_RS\r
748  * - \ref BOARD_LCD_WIDTH\r
749  * - \ref BOARD_LCD_HEIGHT\r
750  *\r
751  * TouchScreen\r
752  * - \ref BOARD_TSC_ADS7843\r
753  * - \ref PIN_TCS_IRQ\r
754  * - \ref PIN_TCS_BUSY\r
755  * - \ref BOARD_TSC_SPI_BASE\r
756  * - \ref BOARD_TSC_SPI_ID\r
757  * - \ref BOARD_TSC_SPI_PINS\r
758  * - \ref BOARD_TSC_NPCS\r
759  * - \ref BOARD_TSC_NPCS_PIN\r
760  *\r
761  * SmartCard\r
762  * - \ref SMARTCARD_CONNECT_PIN\r
763  * - \ref PIN_ISO7816_RSTMC\r
764  * - \ref PINS_ISO7816\r
765  */\r
766 \r
767 /** MCI pins that shall be configured to access the SD card. */\r
768 #define BOARD_SD_PINS               PINS_MCI\r
769 /** MCI Card Detect pin. */\r
770 #define BOARD_SD_PIN_CD             PIN_MCI_CD\r
771 \r
772 /** Indicates board has an ILI9325 external component to manage LCD. */\r
773 #define BOARD_LCD_ILI9325\r
774 \r
775 /** Backlight pin definition. */\r
776 #define BOARD_BACKLIGHT                PIO_PC13_IDX\r
777 #define BOARD_BACKLIGHT_FLAG       PIO_OUTPUT_0 | PIO_DEFAULT\r
778 #define BOARD_BACKLIGHT_PIN         {PIO_PC13, PIOC, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT}\r
779 #define PIN_BOARD_BACKLIGHT_MASK PIO_PC13\r
780 #define PIN_BOARD_BACKLIGHT_PIO PIOC\r
781 #define PIN_BOARD_BACKLIGHT_ID ID_PIOC\r
782 #define PIN_BOARD_BACKLIGHT_TYPE PIO_OUTPUT_0\r
783 #define PIN_BOARD_BACKLIGHT_ATTR PIO_PULLUP\r
784 /** Define ILI9325 base address. */\r
785 #define BOARD_LCD_BASE              0x61000000\r
786 /** Define ILI9325 register select signal. */\r
787 #define BOARD_LCD_RS                (1 << 1)\r
788 /** Display width in pixels. */\r
789 #define BOARD_LCD_WIDTH             240\r
790 /** Display height in pixels. */\r
791 #define BOARD_LCD_HEIGHT            320\r
792 \r
793 /** Indicates board has an ADS7843 external component to manage Touch Screen */\r
794 #define BOARD_TSC_ADS7843\r
795 \r
796 /** Touchscreen controller IRQ pin definition. */\r
797 #ifdef BOARD_REV_A\r
798 #define PIN_TSC_IRQ_IDX    PIO_PA4_IDX\r
799 #define PIN_TSC_IRQ_FLAG  PIO_INPUT | PIO_PULLUP \r
800 #define PIN_TSC_IRQ  {PIO_PA4, PIOA, ID_PIOA, PIO_INPUT, PIO_PULLUP}\r
801 #define PIN_TSC_IRQ_MASK PIO_PA4\r
802 #define PIN_TSC_IRQ_PIO PIOA\r
803 #define PIN_TSC_IRQ_ID ID_PIOA\r
804 #define PIN_TSC_IRQ_TYPE PIO_INPUT\r
805 #define PIN_TSC_IRQ_ATTR PIO_PULLUP\r
806 #define PIN_TSC_IRQ_WUP_ID (1 << 3)\r
807 /** Touchscreen controller Busy pin definition. */\r
808 #define PIN_TSC_BUSY_IDX  PIO_PA5_IDX\r
809 #define PIN_TSC_BUSY_FLAG    PIO_INPUT | PIO_PULLUP \r
810 #define PIN_TSC_BUSY {PIO_PA5, PIOA, ID_PIOA, PIO_INPUT, PIO_PULLUP}\r
811 #define PIN_TSC_BUSY_MASK PIO_PA5\r
812 #define PIN_TSC_BUSY_PIO PIOA\r
813 #define PIN_TSC_BUSY_ID ID_PIOA\r
814 #define PIN_TSC_BUSY_TYPE PIO_INPUT\r
815 #define PIN_TSC_BUSY_ATTR PIO_PULLUP\r
816 #endif\r
817 \r
818 #ifdef BOARD_REV_B\r
819 #define PIN_TSC_IRQ_IDX    PIO_PA16_IDX\r
820 #define PIN_TSC_IRQ_FLAG  PIO_INPUT | PIO_PULLUP \r
821 #define PIN_TSC_IRQ  {PIO_PA16, PIOA, ID_PIOA, PIO_INPUT, PIO_PULLUP}\r
822 #define PIN_TSC_IRQ_MASK PIO_PA16\r
823 #define PIN_TSC_IRQ_PIO PIOA\r
824 #define PIN_TSC_IRQ_ID ID_PIOA\r
825 #define PIN_TSC_IRQ_TYPE PIO_INPUT\r
826 #define PIN_TSC_IRQ_ATTR PIO_PULLUP\r
827 #define PIN_TSC_IRQ_WUP_ID (1 << 15)\r
828 /** Touchscreen controller Busy pin definition. */\r
829 #define PIN_TSC_BUSY_IDX  PIO_PA17_IDX\r
830 #define PIN_TSC_BUSY_FLAG    PIO_INPUT | PIO_PULLUP\r
831 #define PIN_TSC_BUSY {PIO_PA17, PIOA, ID_PIOA, PIO_INPUT, PIO_PULLUP}\r
832 #define PIN_TSC_BUSY_MASK PIO_PA17\r
833 #define PIN_TSC_BUSY_PIO PIOA\r
834 #define PIN_TSC_BUSY_ID ID_PIOA\r
835 #define PIN_TSC_BUSY_TYPE PIO_INPUT\r
836 #define PIN_TSC_BUSY_ATTR PIO_PULLUP\r
837 #endif\r
838 \r
839 /** Base address of SPI peripheral connected to the touchscreen controller. */\r
840 #define BOARD_TSC_SPI_BASE         SPI\r
841 /** Identifier of SPI peripheral connected to the touchscreen controller. */\r
842 #define BOARD_TSC_SPI_ID           ID_SPI\r
843 /** Pins of the SPI peripheral connected to the touchscreen controller. */\r
844 #define BOARD_TSC_SPI_PINS         PINS_SPI\r
845 /** Chip select connected to the touchscreen controller. */\r
846 #define BOARD_TSC_NPCS             0\r
847 /** Chip select pin connected to the touchscreen controller. */\r
848 #define BOARD_TSC_NPCS_PIN         PIN_SPI_NPCS0_PA11\r
849 \r
850 /// Smartcard detection pin\r
851 //#define SMARTCARD_CONNECT_PIN {1 << 13, PIOA, ID_PIOA, PIO_INPUT, PIO_DEFAULT}\r
852 \r
853 /// PIN used for reset the smartcard\r
854 #define PIN_ISO7816_RSTMC       {1 << 11, PIOA, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT}\r
855 /// Pins used for connect the smartcard\r
856 #define PINS_ISO7816            PIN_USART1_TXD, PIN_USART1_SCK, PIN_ISO7816_RSTMC\r
857 \r
858 /*----------------------------------------------------------------------------*/\r
859 /**\r
860  * \page sam4s_ek_mem "SAM4S-EK - Memories"\r
861  * This page lists definitions related to internal & external on-board memories.\r
862  *\r
863  * \section NandFlash\r
864  * - \ref BOARD_NF_COMMAND_ADDR\r
865  * - \ref BOARD_NF_ADDRESS_ADDR\r
866  * - \ref BOARD_NF_DATA_ADDR\r
867  *\r
868  * \section NorFlash\r
869  * - \ref BOARD_NORFLASH_ADDR\r
870  * - \ref BOARD_NORFLASH_DFT_BUS_SIZE\r
871  */\r
872 \r
873 /** Address for transferring command bytes to the nandflash. */\r
874 #define BOARD_NF_COMMAND_ADDR   0x60400000\r
875 /** Address for transferring address bytes to the nandflash. */\r
876 #define BOARD_NF_ADDRESS_ADDR   0x60200000\r
877 /** Address for transferring data bytes to the nandflash. */\r
878 #define BOARD_NF_DATA_ADDR      0x60000000\r
879 \r
880 /** Address for transferring command bytes to the norflash. */\r
881 #define BOARD_NORFLASH_ADDR     0x63000000\r
882 /** Default NOR bus size after power up reset */\r
883 #define BOARD_NORFLASH_DFT_BUS_SIZE 8\r
884 \r
885 /*----------------------------------------------------------------------------*/\r
886 /**\r
887  * \page sam4s_ek_chipdef "SAM4S-EK - Individual chip definition"\r
888  * This page lists the definitions related to different chip's definition\r
889  * located in the board.h file for the SAM4S-EK.\r
890  *\r
891  * \section USART\r
892  * - \ref BOARD_PIN_USART_RXD\r
893  * - \ref BOARD_PIN_USART_TXD\r
894  * - \ref BOARD_PIN_USART_CTS\r
895  * - \ref BOARD_PIN_USART_RTS\r
896  * - \ref BOARD_PIN_USART_EN\r
897  * - \ref BOARD_USART_BASE\r
898  * - \ref BOARD_ID_USART\r
899  */\r
900 \r
901 /** Rtc */\r
902 #define BOARD_RTC_ID                ID_RTC\r
903 \r
904 /** TWI ID for EEPROM application to use */\r
905 #define BOARD_ID_TWI_EEPROM         ID_TWI1\r
906 /** TWI ID for SLAVE application to use */\r
907 #define BOARD_ID_TWI_SLAVE          ID_TWI1\r
908 /** TWI Base for TWI EEPROM application to use */\r
909 #define BOARD_BASE_TWI_EEPROM       TWI1\r
910 /** TWI Base for TWI SLAVE application to use */\r
911 #define BOARD_BASE_TWI_SLAVE        TWI1\r
912 /** TWI pins for EEPROM application to use */\r
913 #define BOARD_PINS_TWI_EEPROM       PINS_TWI1\r
914 /** TWI pins for TWI SLAVE application to use */\r
915 #define BOARD_PINS_TWI_SLAVE        PINS_TWI1\r
916 \r
917 /** USART RX pin for application */\r
918 #define BOARD_PIN_USART_RXD        PIN_USART1_RXD\r
919 /** USART TX pin for application */\r
920 #define BOARD_PIN_USART_TXD        PIN_USART1_TXD\r
921 /** USART CTS pin for application */\r
922 #define BOARD_PIN_USART_CTS        PIN_USART1_CTS\r
923 /** USART RTS pin for application */\r
924 #define BOARD_PIN_USART_RTS        PIN_USART1_RTS\r
925 /** USART ENABLE pin for application */\r
926 #define BOARD_PIN_USART_EN         PIN_USART1_EN\r
927 /** USART Base for application */\r
928 #define BOARD_USART_BASE           USART1\r
929 /** USART ID for application */\r
930 #define BOARD_ID_USART             ID_USART1\r
931 \r
932 #define CONSOLE_UART               UART0\r
933 #define CONSOLE_UART_ID            ID_UART0\r
934 \r
935 /* RE pin. */\r
936 #define PIN_RE_IDX                 PIN_USART1_CTS_IDX\r
937 #define PIN_RE_FLAGS               (PIO_OUTPUT_0 | PIO_DEFAULT)\r
938 \r
939 /* IRDA SD pin. */\r
940 #define PIN_IRDA_SD_IDX            PIN_USART1_CTS_IDX\r
941 #define PIN_IRDA_SD_FLAGS          (PIO_OUTPUT_1 | PIO_DEFAULT)\r
942 \r
943 /* TXD pin configuration. */\r
944 #define PIN_USART_TXD_IDX          PIN_USART1_TXD_IDX\r
945 #define PIN_USART_TXD_FLAGS        (PIO_PERIPH_A | PIO_DEFAULT)\r
946 #define PIN_USART_TXD_IO_FLAGS     (PIO_OUTPUT_0 | PIO_DEFAULT) \r
947 \r
948 #endif  // _SAM4S_EK_H_\r