1 /** 2 * \file 3 * 4 * \brief SAM D21 Xplained Pro board definition 5 * 6 * Copyright (c) 2014-2015 Atmel Corporation. All rights reserved. 7 * 8 * \asf_license_start 9 * 10 * \page License 11 * 12 * Redistribution and use in source and binary forms, with or without 13 * modification, are permitted provided that the following conditions are met: 14 * 15 * 1. Redistributions of source code must retain the above copyright notice, 16 * this list of conditions and the following disclaimer. 17 * 18 * 2. Redistributions in binary form must reproduce the above copyright notice, 19 * this list of conditions and the following disclaimer in the documentation 20 * and/or other materials provided with the distribution. 21 * 22 * 3. The name of Atmel may not be used to endorse or promote products derived 23 * from this software without specific prior written permission. 24 * 25 * 4. This software may only be redistributed and used in connection with an 26 * Atmel microcontroller product. 27 * 28 * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED 29 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 30 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE 31 * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR 32 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 33 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 34 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 35 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 36 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 37 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 38 * POSSIBILITY OF SUCH DAMAGE. 39 * 40 * \asf_license_stop 41 * 42 */ 43 /* 44 * Support and FAQ: visit <a href="http://www.atmel.com/design-support/">Atmel Support</a> 45 */ 46 47 #ifndef SAMD21_XPLAINED_PRO_H_INCLUDED 48 #define SAMD21_XPLAINED_PRO_H_INCLUDED 49 50 #include <conf_board.h> 51 #include <compiler.h> 52 53 #ifdef __cplusplus 54 extern "C" { 55 #endif 56 57 /** 58 * \ingroup group_common_boards 59 * \defgroup samd21_xplained_pro_group SAM D21 Xplained Pro board 60 * 61 * @{ 62 */ 63 64 void system_board_init(void); 65 66 /** 67 * \defgroup samd21_xplained_pro_features_group Features 68 * 69 * Symbols that describe features and capabilities of the board. 70 * 71 * @{ 72 */ 73 74 /** Name string macro */ 75 #define BOARD_NAME "SAMD21_XPLAINED_PRO" 76 77 /** \name Resonator definitions 78 * @{ */ 79 #define BOARD_FREQ_SLCK_XTAL (32768U) 80 #define BOARD_FREQ_SLCK_BYPASS (32768U) 81 #define BOARD_FREQ_MAINCK_XTAL 0 /* Not Mounted */ 82 #define BOARD_FREQ_MAINCK_BYPASS 0 /* Not Mounted */ 83 #define BOARD_MCK CHIP_FREQ_CPU_MAX 84 #define BOARD_OSC_STARTUP_US 15625 85 /** @} */ 86 87 /** \name LED0 definitions 88 * @{ */ 89 #define LED0_PIN PIN_PB30 90 #define LED0_ACTIVE false 91 #define LED0_INACTIVE !LED0_ACTIVE 92 /** @} */ 93 94 /** \name SW0 definitions 95 * @{ */ 96 #define SW0_PIN PIN_PA15 97 #define SW0_ACTIVE false 98 #define SW0_INACTIVE !SW0_ACTIVE 99 #define SW0_EIC_PIN PIN_PA15A_EIC_EXTINT15 100 #define SW0_EIC_MUX MUX_PA15A_EIC_EXTINT15 101 #define SW0_EIC_PINMUX PINMUX_PA15A_EIC_EXTINT15 102 #define SW0_EIC_LINE 15 103 /** @} */ 104 105 /** 106 * \name LED #0 definitions 107 * 108 * Wrapper macros for LED0, to ensure common naming across all Xplained Pro 109 * boards. 110 * 111 * @{ */ 112 #define LED_0_NAME "LED0 (yellow)" 113 #define LED_0_PIN LED0_PIN 114 #define LED_0_ACTIVE LED0_ACTIVE 115 #define LED_0_INACTIVE LED0_INACTIVE 116 #define LED0_GPIO LED0_PIN 117 #define LED0 LED0_PIN 118 119 #define LED_0_PWM4CTRL_MODULE TCC0 120 #define LED_0_PWM4CTRL_CHANNEL 0 121 #define LED_0_PWM4CTRL_OUTPUT 0 122 #define LED_0_PWM4CTRL_PIN PIN_PB30E_TCC0_WO0 123 #define LED_0_PWM4CTRL_MUX MUX_PB30E_TCC0_WO0 124 #define LED_0_PWM4CTRL_PINMUX PINMUX_PB30E_TCC0_WO0 125 /** @} */ 126 127 /** Number of on-board LEDs */ 128 #define LED_COUNT 1 129 130 /** 131 * \name Serialflash definitions 132 * 133 * On board Serialflash definitions. 134 * 135 * @{ */ 136 #define SERIALFLASH_SPI_MODULE SERCOM5 137 #define SERIALFLASH_SPI_MUX_SETTING SPI_SIGNAL_MUX_SETTING_E 138 #define SERIALFLASH_SPI_PINMUX_PAD0 PINMUX_PB16C_SERCOM5_PAD0 139 #define SERIALFLASH_SPI_PINMUX_PAD1 PINMUX_UNUSED 140 #define SERIALFLASH_SPI_PINMUX_PAD2 PINMUX_PB22D_SERCOM5_PAD2 141 #define SERIALFLASH_SPI_PINMUX_PAD3 PINMUX_PB23D_SERCOM5_PAD3 142 #define SERIALFLASH_SPI_CS PIN_PA13 143 /** @} */ 144 145 /** 146 * \name Button #0 definitions 147 * 148 * Wrapper macros for SW0, to ensure common naming across all Xplained Pro 149 * boards. 150 * 151 * @{ */ 152 #define BUTTON_0_NAME "SW0" 153 #define BUTTON_0_PIN SW0_PIN 154 #define BUTTON_0_ACTIVE SW0_ACTIVE 155 #define BUTTON_0_INACTIVE SW0_INACTIVE 156 #define BUTTON_0_EIC_PIN SW0_EIC_PIN 157 #define BUTTON_0_EIC_MUX SW0_EIC_MUX 158 #define BUTTON_0_EIC_PINMUX SW0_EIC_PINMUX 159 #define BUTTON_0_EIC_LINE SW0_EIC_LINE 160 /** @} */ 161 162 /** Number of on-board buttons */ 163 #define BUTTON_COUNT 1 164 165 /** \name Extension header #1 pin definitions 166 * @{ 167 */ 168 #define EXT1_PIN_3 PIN_PB00 169 #define EXT1_PIN_4 PIN_PB01 170 #define EXT1_PIN_5 PIN_PB06 171 #define EXT1_PIN_6 PIN_PB07 172 #define EXT1_PIN_7 PIN_PB02 173 #define EXT1_PIN_8 PIN_PB03 174 #define EXT1_PIN_9 PIN_PB04 175 #define EXT1_PIN_10 PIN_PB05 176 #define EXT1_PIN_11 PIN_PA08 177 #define EXT1_PIN_12 PIN_PA09 178 #define EXT1_PIN_13 PIN_PB09 179 #define EXT1_PIN_14 PIN_PB08 180 #define EXT1_PIN_15 PIN_PA05 181 #define EXT1_PIN_16 PIN_PA06 182 #define EXT1_PIN_17 PIN_PA04 183 #define EXT1_PIN_18 PIN_PA07 184 /** @} */ 185 186 /** \name Extension header #1 pin definitions by function 187 * @{ 188 */ 189 #define EXT1_PIN_ADC_0 EXT1_PIN_3 190 #define EXT1_PIN_ADC_1 EXT1_PIN_4 191 #define EXT1_PIN_GPIO_0 EXT1_PIN_5 192 #define EXT1_PIN_GPIO_1 EXT1_PIN_6 193 #define EXT1_PIN_PWM_0 EXT1_PIN_7 194 #define EXT1_PIN_PWM_1 EXT1_PIN_8 195 #define EXT1_PIN_IRQ EXT1_PIN_9 196 #define EXT1_PIN_I2C_SDA EXT1_PIN_11 197 #define EXT1_PIN_I2C_SCL EXT1_PIN_12 198 #define EXT1_PIN_UART_RX EXT1_PIN_13 199 #define EXT1_PIN_UART_TX EXT1_PIN_14 200 #define EXT1_PIN_SPI_SS_1 EXT1_PIN_10 201 #define EXT1_PIN_SPI_SS_0 EXT1_PIN_15 202 #define EXT1_PIN_SPI_MOSI EXT1_PIN_16 203 #define EXT1_PIN_SPI_MISO EXT1_PIN_17 204 #define EXT1_PIN_SPI_SCK EXT1_PIN_18 205 /** @} */ 206 207 /** \name Extension header #1 ADC definitions 208 * @{ 209 */ 210 #define EXT1_ADC_MODULE ADC 211 #define EXT1_ADC_0_CHANNEL 8 212 #define EXT1_ADC_0_PIN PIN_PB00B_ADC_AIN8 213 #define EXT1_ADC_0_MUX MUX_PB00B_ADC_AIN8 214 #define EXT1_ADC_0_PINMUX PINMUX_PB00B_ADC_AIN8 215 #define EXT1_ADC_1_CHANNEL 9 216 #define EXT1_ADC_1_PIN PIN_PB01B_ADC_AIN9 217 #define EXT1_ADC_1_MUX MUX_PB01B_ADC_AIN9 218 #define EXT1_ADC_1_PINMUX PINMUX_PB01B_ADC_AIN9 219 /** @} */ 220 221 /** \name Extension header #1 PWM definitions 222 * @{ 223 */ 224 #define EXT1_PWM_MODULE TC6 225 #define EXT1_PWM_0_CHANNEL 0 226 #define EXT1_PWM_0_PIN PIN_PB02E_TC6_WO0 227 #define EXT1_PWM_0_MUX MUX_PB02E_TC6_WO0 228 #define EXT1_PWM_0_PINMUX PINMUX_PB02E_TC6_WO0 229 #define EXT1_PWM_1_CHANNEL 1 230 #define EXT1_PWM_1_PIN PIN_PB03E_TC6_WO1 231 #define EXT1_PWM_1_MUX MUX_PB03E_TC6_WO1 232 #define EXT1_PWM_1_PINMUX PINMUX_PB03E_TC6_WO1 233 /** @} */ 234 235 /** \name Extension header #1 IRQ/External interrupt definitions 236 * @{ 237 */ 238 #define EXT1_IRQ_MODULE EIC 239 #define EXT1_IRQ_INPUT 4 240 #define EXT1_IRQ_PIN PIN_PB04A_EIC_EXTINT4 241 #define EXT1_IRQ_MUX MUX_PB04A_EIC_EXTINT4 242 #define EXT1_IRQ_PINMUX PINMUX_PB04A_EIC_EXTINT4 243 /** @} */ 244 245 /** \name Extension header #1 I2C definitions 246 * @{ 247 */ 248 #define EXT1_I2C_MODULE SERCOM2 249 #define EXT1_I2C_SERCOM_PINMUX_PAD0 PINMUX_PA08D_SERCOM2_PAD0 250 #define EXT1_I2C_SERCOM_PINMUX_PAD1 PINMUX_PA09D_SERCOM2_PAD1 251 #define EXT1_I2C_SERCOM_DMAC_ID_TX SERCOM2_DMAC_ID_TX 252 #define EXT1_I2C_SERCOM_DMAC_ID_RX SERCOM2_DMAC_ID_RX 253 /** @} */ 254 255 /** \name Extension header #1 UART definitions 256 * @{ 257 */ 258 #define EXT1_UART_MODULE SERCOM4 259 #define EXT1_UART_SERCOM_MUX_SETTING USART_RX_1_TX_0_XCK_1 260 #define EXT1_UART_SERCOM_PINMUX_PAD0 PINMUX_PB08D_SERCOM4_PAD0 261 #define EXT1_UART_SERCOM_PINMUX_PAD1 PINMUX_PB09D_SERCOM4_PAD1 262 #define EXT1_UART_SERCOM_PINMUX_PAD2 PINMUX_UNUSED 263 #define EXT1_UART_SERCOM_PINMUX_PAD3 PINMUX_UNUSED 264 #define EXT1_UART_SERCOM_DMAC_ID_TX SERCOM4_DMAC_ID_TX 265 #define EXT1_UART_SERCOM_DMAC_ID_RX SERCOM4_DMAC_ID_RX 266 /** @} */ 267 268 /** \name Extension header #1 SPI definitions 269 * @{ 270 */ 271 #define EXT1_SPI_MODULE SERCOM0 272 #define EXT1_SPI_SERCOM_MUX_SETTING SPI_SIGNAL_MUX_SETTING_E 273 #define EXT1_SPI_SERCOM_PINMUX_PAD0 PINMUX_PA04D_SERCOM0_PAD0 274 #define EXT1_SPI_SERCOM_PINMUX_PAD1 PINMUX_PA05D_SERCOM0_PAD1 275 #define EXT1_SPI_SERCOM_PINMUX_PAD2 PINMUX_PA06D_SERCOM0_PAD2 276 #define EXT1_SPI_SERCOM_PINMUX_PAD3 PINMUX_PA07D_SERCOM0_PAD3 277 #define EXT1_SPI_SERCOM_DMAC_ID_TX SERCOM0_DMAC_ID_TX 278 #define EXT1_SPI_SERCOM_DMAC_ID_RX SERCOM0_DMAC_ID_RX 279 /** @} */ 280 281 /** \name Extension header #2 pin definitions 282 * @{ 283 */ 284 #define EXT2_PIN_3 PIN_PA10 285 #define EXT2_PIN_4 PIN_PA11 286 #define EXT2_PIN_5 PIN_PA20 287 #define EXT2_PIN_6 PIN_PA21 288 #define EXT2_PIN_7 PIN_PB12 289 #define EXT2_PIN_8 PIN_PB13 290 #define EXT2_PIN_9 PIN_PB14 291 #define EXT2_PIN_10 PIN_PB15 292 #define EXT2_PIN_11 PIN_PA08 293 #define EXT2_PIN_12 PIN_PA09 294 #define EXT2_PIN_13 PIN_PB11 295 #define EXT2_PIN_14 PIN_PB10 296 #define EXT2_PIN_15 PIN_PA17 297 #define EXT2_PIN_16 PIN_PA18 298 #define EXT2_PIN_17 PIN_PA16 299 #define EXT2_PIN_18 PIN_PA19 300 /** @} */ 301 302 /** \name Extension header #2 pin definitions by function 303 * @{ 304 */ 305 #define EXT2_PIN_ADC_0 EXT2_PIN_3 306 #define EXT2_PIN_ADC_1 EXT2_PIN_4 307 #define EXT2_PIN_GPIO_0 EXT2_PIN_5 308 #define EXT2_PIN_GPIO_1 EXT2_PIN_6 309 #define EXT2_PIN_PWM_0 EXT2_PIN_7 310 #define EXT2_PIN_PWM_1 EXT2_PIN_8 311 #define EXT2_PIN_IRQ EXT2_PIN_9 312 #define EXT2_PIN_I2C_SDA EXT2_PIN_11 313 #define EXT2_PIN_I2C_SCL EXT2_PIN_12 314 #define EXT2_PIN_UART_RX EXT2_PIN_13 315 #define EXT2_PIN_UART_TX EXT2_PIN_14 316 #define EXT2_PIN_SPI_SS_1 EXT2_PIN_10 317 #define EXT2_PIN_SPI_SS_0 EXT2_PIN_15 318 #define EXT2_PIN_SPI_MOSI EXT2_PIN_16 319 #define EXT2_PIN_SPI_MISO EXT2_PIN_17 320 #define EXT2_PIN_SPI_SCK EXT2_PIN_18 321 /** @} */ 322 323 /** \name Extension header #2 ADC definitions 324 * @{ 325 */ 326 #define EXT2_ADC_MODULE ADC 327 #define EXT2_ADC_0_CHANNEL 18 328 #define EXT2_ADC_0_PIN PIN_PA10B_ADC_AIN18 329 #define EXT2_ADC_0_MUX MUX_PA10B_ADC_AIN18 330 #define EXT2_ADC_0_PINMUX PINMUX_PA10B_ADC_AIN18 331 #define EXT2_ADC_1_CHANNEL 19 332 #define EXT2_ADC_1_PIN PIN_PA11B_ADC_AIN19 333 #define EXT2_ADC_1_MUX MUX_PA11B_ADC_AIN19 334 #define EXT2_ADC_1_PINMUX PINMUX_PA11B_ADC_AIN19 335 /** @} */ 336 337 /** \name Extension header #2 PWM definitions 338 * @{ 339 */ 340 #define EXT2_PWM_MODULE TC4 341 #define EXT2_PWM_0_CHANNEL 0 342 #define EXT2_PWM_0_PIN PIN_PB12E_TC4_WO0 343 #define EXT2_PWM_0_MUX MUX_PB12E_TC4_WO0 344 #define EXT2_PWM_0_PINMUX PINMUX_PB12E_TC4_WO0 345 #define EXT2_PWM_1_CHANNEL 1 346 #define EXT2_PWM_1_PIN PIN_PB13E_TC4_WO1 347 #define EXT2_PWM_1_MUX MUX_PB13E_TC4_WO1 348 #define EXT2_PWM_1_PINMUX PINMUX_PB13E_TC4_WO1 349 /** @} */ 350 351 /** \name Extension header #2 PWM for Control definitions 352 * @{ 353 */ 354 #define EXT2_PWM4CTRL_MODULE TCC0 355 #define EXT2_PWM4CTRL_0_CHANNEL 2 356 #define EXT2_PWM4CTRL_0_OUTPUT 6 357 #define EXT2_PWM4CTRL_0_PIN PIN_PB12F_TCC0_WO6 358 #define EXT2_PWM4CTRL_0_MUX MUX_PB12F_TCC0_WO6 359 #define EXT2_PWM4CTRL_0_PINMUX PINMUX_PB12F_TCC0_WO6 360 #define EXT2_PWM4CTRL_1_CHANNEL 3 361 #define EXT2_PWM4CTRL_1_OUTPUT 7 362 #define EXT2_PWM4CTRL_1_PIN PIN_PB13F_TCC0_WO7 363 #define EXT2_PWM4CTRL_1_MUX MUX_PB13F_TCC0_WO7 364 #define EXT2_PWM4CTRL_1_PINMUX PINMUX_PB13F_TCC0_WO7 365 /** @} */ 366 367 /** \name Extension header #2 IRQ/External interrupt definitions 368 * @{ 369 */ 370 #define EXT2_IRQ_MODULE EIC 371 #define EXT2_IRQ_INPUT 14 372 #define EXT2_IRQ_PIN PIN_PB14A_EIC_EXTINT14 373 #define EXT2_IRQ_MUX MUX_PB14A_EIC_EXTINT14 374 #define EXT2_IRQ_PINMUX PINMUX_PB14A_EIC_EXTINT14 375 /** @} */ 376 377 /** \name Extension header #2 I2C definitions 378 * @{ 379 */ 380 #define EXT2_I2C_MODULE SERCOM2 381 #define EXT2_I2C_SERCOM_PINMUX_PAD0 PINMUX_PA08D_SERCOM2_PAD0 382 #define EXT2_I2C_SERCOM_PINMUX_PAD1 PINMUX_PA09D_SERCOM2_PAD1 383 #define EXT2_I2C_SERCOM_DMAC_ID_TX SERCOM2_DMAC_ID_TX 384 #define EXT2_I2C_SERCOM_DMAC_ID_RX SERCOM2_DMAC_ID_RX 385 /** @} */ 386 387 /** \name Extension header #2 UART definitions 388 * @{ 389 */ 390 #define EXT2_UART_MODULE SERCOM4 391 #define EXT2_UART_SERCOM_MUX_SETTING USART_RX_1_TX_0_XCK_1 392 #define EXT2_UART_SERCOM_PINMUX_PAD0 PINMUX_PB12C_SERCOM4_PAD0 393 #define EXT2_UART_SERCOM_PINMUX_PAD1 PINMUX_PB13C_SERCOM4_PAD1 394 #define EXT2_UART_SERCOM_PINMUX_PAD2 PINMUX_UNUSED 395 #define EXT2_UART_SERCOM_PINMUX_PAD3 PINMUX_UNUSED 396 #define EXT2_UART_SERCOM_DMAC_ID_TX SERCOM4_DMAC_ID_TX 397 #define EXT2_UART_SERCOM_DMAC_ID_RX SERCOM4_DMAC_ID_RX 398 /** @} */ 399 400 /** \name Extension header #2 SPI definitions 401 * @{ 402 */ 403 #define EXT2_SPI_MODULE SERCOM1 404 #define EXT2_SPI_SERCOM_MUX_SETTING SPI_SIGNAL_MUX_SETTING_E 405 #define EXT2_SPI_SERCOM_PINMUX_PAD0 PINMUX_PA16C_SERCOM1_PAD0 406 #define EXT2_SPI_SERCOM_PINMUX_PAD1 PINMUX_PA17C_SERCOM1_PAD1 407 #define EXT2_SPI_SERCOM_PINMUX_PAD2 PINMUX_PA18C_SERCOM1_PAD2 408 #define EXT2_SPI_SERCOM_PINMUX_PAD3 PINMUX_PA19C_SERCOM1_PAD3 409 #define EXT2_SPI_SERCOM_DMAC_ID_TX SERCOM1_DMAC_ID_TX 410 #define EXT2_SPI_SERCOM_DMAC_ID_RX SERCOM1_DMAC_ID_RX 411 /** @} */ 412 413 /** \name Extension header #3 pin definitions 414 * @{ 415 */ 416 #define EXT3_PIN_3 PIN_PA02 417 #define EXT3_PIN_4 PIN_PA03 418 #define EXT3_PIN_5 PIN_PB30 419 #define EXT3_PIN_6 PIN_PA15 420 #define EXT3_PIN_7 PIN_PA12 421 #define EXT3_PIN_8 PIN_PA13 422 #define EXT3_PIN_9 PIN_PA28 423 #define EXT3_PIN_10 PIN_PA27 424 #define EXT3_PIN_11 PIN_PA08 425 #define EXT3_PIN_12 PIN_PA09 426 #define EXT3_PIN_13 PIN_PB11 427 #define EXT3_PIN_14 PIN_PB10 428 #define EXT3_PIN_15 PIN_PB17 429 #define EXT3_PIN_16 PIN_PB22 430 #define EXT3_PIN_17 PIN_PB16 431 #define EXT3_PIN_18 PIN_PB23 432 /** @} */ 433 434 /** \name Extension header #3 pin definitions by function 435 * @{ 436 */ 437 #define EXT3_PIN_ADC_0 EXT3_PIN_3 438 #define EXT3_PIN_ADC_1 EXT3_PIN_4 439 #define EXT3_PIN_GPIO_0 EXT3_PIN_5 440 #define EXT3_PIN_GPIO_1 EXT3_PIN_6 441 #define EXT3_PIN_PWM_0 EXT3_PIN_7 442 #define EXT3_PIN_PWM_1 EXT3_PIN_8 443 #define EXT3_PIN_IRQ EXT3_PIN_9 444 #define EXT3_PIN_I2C_SDA EXT3_PIN_11 445 #define EXT3_PIN_I2C_SCL EXT3_PIN_12 446 #define EXT3_PIN_UART_RX EXT3_PIN_13 447 #define EXT3_PIN_UART_TX EXT3_PIN_14 448 #define EXT3_PIN_SPI_SS_1 EXT3_PIN_10 449 #define EXT3_PIN_SPI_SS_0 EXT3_PIN_15 450 #define EXT3_PIN_SPI_MOSI EXT3_PIN_16 451 #define EXT3_PIN_SPI_MISO EXT3_PIN_17 452 #define EXT3_PIN_SPI_SCK EXT3_PIN_18 453 /** @} */ 454 455 /** \name Extension header #3 ADC definitions 456 * @{ 457 */ 458 #define EXT3_ADC_MODULE ADC 459 #define EXT3_ADC_0_CHANNEL 0 460 #define EXT3_ADC_0_PIN PIN_PA02B_ADC_AIN0 461 #define EXT3_ADC_0_MUX MUX_PA02B_ADC_AIN0 462 #define EXT3_ADC_0_PINMUX PINMUX_PA02B_ADC_AIN0 463 #define EXT3_ADC_1_CHANNEL 1 464 #define EXT3_ADC_1_PIN PIN_PA03B_ADC_AIN1 465 #define EXT3_ADC_1_MUX MUX_PA03B_ADC_AIN1 466 #define EXT3_ADC_1_PINMUX PINMUX_PA03B_ADC_AIN1 467 /** @} */ 468 469 /** \name Extension header #3 PWM for Control definitions 470 * @{ 471 */ 472 #define EXT3_PWM4CTRL_MODULE TCC2 473 #define EXT3_PWM4CTRL_0_CHANNEL 0 474 #define EXT3_PWM4CTRL_0_OUTPUT 0 475 #define EXT3_PWM4CTRL_0_PIN PIN_PA12E_TCC2_WO0 476 #define EXT3_PWM4CTRL_0_MUX MUX_PA12E_TCC2_WO0 477 #define EXT3_PWM4CTRL_0_PINMUX PINMUX_PA12E_TCC2_WO0 478 #define EXT3_PWM4CTRL_1_CHANNEL 1 479 #define EXT3_PWM4CTRL_1_OUTPUT 1 480 #define EXT3_PWM4CTRL_1_PIN PIN_PA13E_TCC2_WO1 481 #define EXT3_PWM4CTRL_1_MUX MUX_PA13E_TCC2_WO1 482 #define EXT3_PWM4CTRL_1_PINMUX PINMUX_PA13E_TCC2_WO1 483 /** @} */ 484 485 /** \name Extension header #3 IRQ/External interrupt definitions 486 * @{ 487 */ 488 #define EXT3_IRQ_MODULE EIC 489 #define EXT3_IRQ_INPUT 8 490 #define EXT3_IRQ_PIN PIN_PA28A_EIC_EXTINT8 491 #define EXT3_IRQ_MUX MUX_PA28A_EIC_EXTINT8 492 #define EXT3_IRQ_PINMUX PINMUX_PA28A_EIC_EXTINT8 493 /** @} */ 494 495 /** \name Extension header #3 I2C definitions 496 * @{ 497 */ 498 #define EXT3_I2C_MODULE SERCOM2 499 #define EXT3_I2C_SERCOM_PINMUX_PAD0 PINMUX_PA08D_SERCOM2_PAD0 500 #define EXT3_I2C_SERCOM_PINMUX_PAD1 PINMUX_PA09D_SERCOM2_PAD1 501 #define EXT3_I2C_SERCOM_DMAC_ID_TX SERCOM2_DMAC_ID_TX 502 #define EXT3_I2C_SERCOM_DMAC_ID_RX SERCOM2_DMAC_ID_RX 503 /** @} */ 504 505 /** \name Extension header #3 UART definitions 506 * @{ 507 */ 508 #define EXT3_UART_MODULE SERCOM4 509 #define EXT3_UART_SERCOM_MUX_SETTING USART_RX_3_TX_2_XCK_3 510 #define EXT3_UART_SERCOM_PINMUX_PAD0 PINMUX_UNUSED 511 #define EXT3_UART_SERCOM_PINMUX_PAD1 PINMUX_UNUSED 512 #define EXT3_UART_SERCOM_PINMUX_PAD2 PINMUX_PB10D_SERCOM4_PAD2 513 #define EXT3_UART_SERCOM_PINMUX_PAD3 PINMUX_PB11D_SERCOM4_PAD3 514 #define EXT3_UART_SERCOM_DMAC_ID_TX SERCOM4_DMAC_ID_TX 515 #define EXT3_UART_SERCOM_DMAC_ID_RX SERCOM4_DMAC_ID_RX 516 /** @} */ 517 518 /** \name Extension header #3 SPI definitions 519 * @{ 520 */ 521 #define EXT3_SPI_MODULE SERCOM5 522 #define EXT3_SPI_SERCOM_MUX_SETTING SPI_SIGNAL_MUX_SETTING_E 523 #define EXT3_SPI_SERCOM_PINMUX_PAD0 PINMUX_PB16C_SERCOM5_PAD0 524 #define EXT3_SPI_SERCOM_PINMUX_PAD1 PINMUX_PB17C_SERCOM5_PAD1 525 #define EXT3_SPI_SERCOM_PINMUX_PAD2 PINMUX_PB22D_SERCOM5_PAD2 526 #define EXT3_SPI_SERCOM_PINMUX_PAD3 PINMUX_PB23D_SERCOM5_PAD3 527 #define EXT3_SPI_SERCOM_DMAC_ID_TX SERCOM5_DMAC_ID_TX 528 #define EXT3_SPI_SERCOM_DMAC_ID_RX SERCOM5_DMAC_ID_RX 529 /** @} */ 530 531 /** \name Extension header #3 Dataflash 532 * @{ 533 */ 534 #define EXT3_DATAFLASH_SPI_MODULE EXT3_SPI_MODULE 535 #define EXT3_DATAFLASH_SPI_MUX_SETTING EXT3_SPI_SERCOM_MUX_SETTING 536 #define EXT3_DATAFLASH_SPI_PINMUX_PAD0 EXT3_SPI_SERCOM_PINMUX_PAD0 537 #define EXT3_DATAFLASH_SPI_PINMUX_PAD1 EXT3_SPI_SERCOM_PINMUX_PAD1 538 #define EXT3_DATAFLASH_SPI_PINMUX_PAD2 EXT3_SPI_SERCOM_PINMUX_PAD2 539 #define EXT3_DATAFLASH_SPI_PINMUX_PAD3 EXT3_SPI_SERCOM_PINMUX_PAD3 540 /** @} */ 541 542 /** \name USB definitions 543 * @{ 544 */ 545 #define USB_ID 546 #define USB_TARGET_DP_PIN PIN_PA25G_USB_DP 547 #define USB_TARGET_DP_MUX MUX_PA25G_USB_DP 548 #define USB_TARGET_DP_PINMUX PINMUX_PA25G_USB_DP 549 #define USB_TARGET_DM_PIN PIN_PA24G_USB_DM 550 #define USB_TARGET_DM_MUX MUX_PA24G_USB_DM 551 #define USB_TARGET_DM_PINMUX PINMUX_PA24G_USB_DM 552 #define USB_VBUS_PIN PIN_PA14 553 #define USB_VBUS_EIC_LINE 14 554 #define USB_VBUS_EIC_MUX MUX_PA14A_EIC_EXTINT14 555 #define USB_VBUS_EIC_PINMUX PINMUX_PA14A_EIC_EXTINT14 556 #define USB_ID_PIN PIN_PA03 557 #define USB_ID_EIC_LINE 3 558 #define USB_ID_EIC_MUX MUX_PA03A_EIC_EXTINT3 559 #define USB_ID_EIC_PINMUX PINMUX_PA03A_EIC_EXTINT3 560 /** @} */ 561 562 /** \name Embedded debugger GPIO interface definitions 563 * @{ 564 */ 565 #define EDBG_GPIO0_PIN PIN_PA27 566 #define EDBG_GPIO1_PIN PIN_PA28 567 #define EDBG_GPIO2_PIN PIN_PA20 568 #define EDBG_GPIO3_PIN PIN_PA21 569 /** @} */ 570 571 /** \name Embedded debugger USART interface definitions 572 * @{ 573 */ 574 #define EDBG_UART_MODULE -1 /* Not available on this board */ 575 #define EDBG_UART_RX_PIN -1 /* Not available on this board */ 576 #define EDBG_UART_RX_MUX -1 /* Not available on this board */ 577 #define EDBG_UART_RX_PINMUX -1 /* Not available on this board */ 578 #define EDBG_UART_RX_SERCOM_PAD -1 /* Not available on this board */ 579 #define EDBG_UART_TX_PIN -1 /* Not available on this board */ 580 #define EDBG_UART_TX_MUX -1 /* Not available on this board */ 581 #define EDBG_UART_TX_PINMUX -1 /* Not available on this board */ 582 #define EDBG_UART_TX_SERCOM_PAD -1 /* Not available on this board */ 583 /** @} */ 584 585 /** \name Embedded debugger I2C interface definitions 586 * @{ 587 */ 588 #define EDBG_I2C_MODULE SERCOM2 589 #define EDBG_I2C_SERCOM_PINMUX_PAD0 PINMUX_PA08D_SERCOM2_PAD0 590 #define EDBG_I2C_SERCOM_PINMUX_PAD1 PINMUX_PA09D_SERCOM2_PAD1 591 #define EDBG_I2C_SERCOM_DMAC_ID_TX SERCOM2_DMAC_ID_TX 592 #define EDBG_I2C_SERCOM_DMAC_ID_RX SERCOM2_DMAC_ID_RX 593 /** @} */ 594 595 /** \name Embedded debugger SPI interface definitions 596 * @{ 597 */ 598 #define EDBG_SPI_MODULE SERCOM5 599 #define EDBG_SPI_SERCOM_MUX_SETTING SPI_SIGNAL_MUX_SETTING_E 600 #define EDBG_SPI_SERCOM_PINMUX_PAD0 PINMUX_PB16C_SERCOM5_PAD0 601 #define EDBG_SPI_SERCOM_PINMUX_PAD1 PINMUX_PB31D_SERCOM5_PAD1 602 #define EDBG_SPI_SERCOM_PINMUX_PAD2 PINMUX_PB22D_SERCOM5_PAD2 603 #define EDBG_SPI_SERCOM_PINMUX_PAD3 PINMUX_PB23D_SERCOM5_PAD3 604 #define EDBG_SPI_SERCOM_DMAC_ID_TX SERCOM5_DMAC_ID_TX 605 #define EDBG_SPI_SERCOM_DMAC_ID_RX SERCOM5_DMAC_ID_RX 606 /** @} */ 607 608 /** \name Embedded debugger CDC Gateway USART interface definitions 609 * @{ 610 */ 611 #define EDBG_CDC_MODULE SERCOM3 612 #define EDBG_CDC_SERCOM_MUX_SETTING USART_RX_1_TX_0_XCK_1 613 #define EDBG_CDC_SERCOM_PINMUX_PAD0 PINMUX_PA22C_SERCOM3_PAD0 614 #define EDBG_CDC_SERCOM_PINMUX_PAD1 PINMUX_PA23C_SERCOM3_PAD1 615 #define EDBG_CDC_SERCOM_PINMUX_PAD2 PINMUX_UNUSED 616 #define EDBG_CDC_SERCOM_PINMUX_PAD3 PINMUX_UNUSED 617 #define EDBG_CDC_SERCOM_DMAC_ID_TX SERCOM3_DMAC_ID_TX 618 #define EDBG_CDC_SERCOM_DMAC_ID_RX SERCOM3_DMAC_ID_RX 619 /** @} */ 620 621 /** @} */ 622 623 /** \name 802.15.4 TRX Interface definitions 624 * @{ 625 */ 626 #ifndef EXT2_CONFIG 627 #define AT86RFX_SPI EXT1_SPI_MODULE 628 #define AT86RFX_RST_PIN EXT1_PIN_7 629 #define AT86RFX_MISC_PIN EXT1_PIN_12 630 #define AT86RFX_IRQ_PIN EXT1_PIN_9 631 #define AT86RFX_SLP_PIN EXT1_PIN_10 632 #define AT86RFX_SPI_CS EXT1_PIN_15 633 #define AT86RFX_SPI_MOSI EXT1_PIN_16 634 #define AT86RFX_SPI_MISO EXT1_PIN_17 635 #define AT86RFX_SPI_SCK EXT1_PIN_18 636 #define AT86RFX_CSD EXT1_PIN_5 637 #define AT86RFX_CPS EXT1_PIN_8 638 639 #define AT86RFX_SPI_SERCOM_MUX_SETTING EXT1_SPI_SERCOM_MUX_SETTING 640 #define AT86RFX_SPI_SERCOM_PINMUX_PAD0 EXT1_SPI_SERCOM_PINMUX_PAD0 641 #define AT86RFX_SPI_SERCOM_PINMUX_PAD1 PINMUX_UNUSED 642 #define AT86RFX_SPI_SERCOM_PINMUX_PAD2 EXT1_SPI_SERCOM_PINMUX_PAD2 643 #define AT86RFX_SPI_SERCOM_PINMUX_PAD3 EXT1_SPI_SERCOM_PINMUX_PAD3 644 645 #define AT86RFX_IRQ_CHAN EXT1_IRQ_INPUT 646 #define AT86RFX_IRQ_PINMUX EXT1_IRQ_PINMUX 647 648 649 #endif 650 /** Enables the transceiver main interrupt. */ 651 #define ENABLE_TRX_IRQ() \ 652 extint_chan_enable_callback(AT86RFX_IRQ_CHAN, EXTINT_CALLBACK_TYPE_DETECT) 653 654 /** Disables the transceiver main interrupt. */ 655 #define DISABLE_TRX_IRQ() \ 656 extint_chan_disable_callback(AT86RFX_IRQ_CHAN, EXTINT_CALLBACK_TYPE_DETECT) 657 658 /** Clears the transceiver main interrupt. */ 659 #define CLEAR_TRX_IRQ() \ 660 extint_chan_clear_detected(AT86RFX_IRQ_CHAN); 661 662 /* 663 * This macro saves the trx interrupt status and disables the trx interrupt. 664 */ 665 #define ENTER_TRX_REGION() \ 666 { extint_chan_disable_callback(AT86RFX_IRQ_CHAN, EXTINT_CALLBACK_TYPE_DETECT) 667 668 /* 669 * This macro restores the transceiver interrupt status 670 */ 671 #define LEAVE_TRX_REGION() \ 672 extint_chan_enable_callback(AT86RFX_IRQ_CHAN, EXTINT_CALLBACK_TYPE_DETECT); } 673 674 /** @} */ 675 676 /** 677 * \brief Turns off the specified LEDs. 678 * 679 * \param led_gpio LED to turn off (LEDx_GPIO). 680 * 681 * \note The pins of the specified LEDs are set to GPIO output mode. 682 */ 683 #define LED_Off(led_gpio) port_pin_set_output_level(led_gpio,true) 684 685 /** 686 * \brief Turns on the specified LEDs. 687 * 688 * \param led_gpio LED to turn on (LEDx_GPIO). 689 * 690 * \note The pins of the specified LEDs are set to GPIO output mode. 691 */ 692 #define LED_On(led_gpio) port_pin_set_output_level(led_gpio,false) 693 694 /** 695 * \brief Toggles the specified LEDs. 696 * 697 * \param led_gpio LED to toggle (LEDx_GPIO). 698 * 699 * \note The pins of the specified LEDs are set to GPIO output mode. 700 */ 701 #define LED_Toggle(led_gpio) port_pin_toggle_output_level(led_gpio) 702 703 /** @} */ 704 705 #ifdef __cplusplus 706 } 707 #endif 708 709 #endif /* SAMD21_XPLAINED_PRO_H_INCLUDED */ 710