Umar Naeem / mbed-dev

Fork of mbed-dev by Umar Naeem

Committer:
ranaumarnaeem
Date:
Tue May 23 12:54:50 2017 +0000
Revision:
165:2dd56e6daeec
Parent:
149:156823d33999
jhjg

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 107:414e9c822e99 1 /**
mbed_official 107:414e9c822e99 2 * \file
mbed_official 107:414e9c822e99 3 *
mbed_official 107:414e9c822e99 4 * \brief SAMG55 Xplained Pro board initialization
mbed_official 107:414e9c822e99 5 *
mbed_official 107:414e9c822e99 6 * Copyright (c) 2014-2015 Atmel Corporation. All rights reserved.
mbed_official 107:414e9c822e99 7 *
mbed_official 107:414e9c822e99 8 * \asf_license_start
mbed_official 107:414e9c822e99 9 *
mbed_official 107:414e9c822e99 10 * \page License
mbed_official 107:414e9c822e99 11 *
mbed_official 107:414e9c822e99 12 * Redistribution and use in source and binary forms, with or without
mbed_official 107:414e9c822e99 13 * modification, are permitted provided that the following conditions are met:
mbed_official 107:414e9c822e99 14 *
mbed_official 107:414e9c822e99 15 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 107:414e9c822e99 16 * this list of conditions and the following disclaimer.
mbed_official 107:414e9c822e99 17 *
mbed_official 107:414e9c822e99 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 107:414e9c822e99 19 * this list of conditions and the following disclaimer in the documentation
mbed_official 107:414e9c822e99 20 * and/or other materials provided with the distribution.
mbed_official 107:414e9c822e99 21 *
mbed_official 107:414e9c822e99 22 * 3. The name of Atmel may not be used to endorse or promote products derived
mbed_official 107:414e9c822e99 23 * from this software without specific prior written permission.
mbed_official 107:414e9c822e99 24 *
mbed_official 107:414e9c822e99 25 * 4. This software may only be redistributed and used in connection with an
mbed_official 107:414e9c822e99 26 * Atmel microcontroller product.
mbed_official 107:414e9c822e99 27 *
mbed_official 107:414e9c822e99 28 * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
mbed_official 107:414e9c822e99 29 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
mbed_official 107:414e9c822e99 30 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
mbed_official 107:414e9c822e99 31 * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
mbed_official 107:414e9c822e99 32 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 107:414e9c822e99 33 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
mbed_official 107:414e9c822e99 34 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
mbed_official 107:414e9c822e99 35 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
mbed_official 107:414e9c822e99 36 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
mbed_official 107:414e9c822e99 37 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
mbed_official 107:414e9c822e99 38 * POSSIBILITY OF SUCH DAMAGE.
mbed_official 107:414e9c822e99 39 *
mbed_official 107:414e9c822e99 40 * \asf_license_stop
mbed_official 107:414e9c822e99 41 *
mbed_official 107:414e9c822e99 42 */
mbed_official 107:414e9c822e99 43 /*
mbed_official 107:414e9c822e99 44 * Support and FAQ: visit <a href="http://www.atmel.com/design-support/">Atmel Support</a>
mbed_official 107:414e9c822e99 45 */
mbed_official 107:414e9c822e99 46
mbed_official 107:414e9c822e99 47 #include <compiler.h>
mbed_official 107:414e9c822e99 48 #include <board.h>
mbed_official 107:414e9c822e99 49 #include <conf_board.h>
mbed_official 107:414e9c822e99 50 #include <ioport.h>
mbed_official 107:414e9c822e99 51
mbed_official 107:414e9c822e99 52 /**
mbed_official 107:414e9c822e99 53 * \addtogroup samg55_xplained_pro_group
mbed_official 107:414e9c822e99 54 * @{
mbed_official 107:414e9c822e99 55 */
mbed_official 107:414e9c822e99 56
mbed_official 107:414e9c822e99 57 /**
mbed_official 107:414e9c822e99 58 * \brief Set peripheral mode for IOPORT pins.
mbed_official 107:414e9c822e99 59 * It will configure port mode and disable pin mode (but enable peripheral).
mbed_official 107:414e9c822e99 60 * \param port IOPORT port to configure
mbed_official 107:414e9c822e99 61 * \param masks IOPORT pin masks to configure
mbed_official 107:414e9c822e99 62 * \param mode Mode masks to configure for the specified pin (\ref ioport_modes)
mbed_official 107:414e9c822e99 63 */
mbed_official 107:414e9c822e99 64 #define ioport_set_port_peripheral_mode(port, masks, mode) \
mbed_official 107:414e9c822e99 65 do {\
mbed_official 107:414e9c822e99 66 ioport_set_port_mode(port, masks, mode);\
mbed_official 107:414e9c822e99 67 ioport_disable_port(port, masks);\
mbed_official 107:414e9c822e99 68 } while (0)
mbed_official 107:414e9c822e99 69
mbed_official 107:414e9c822e99 70 /**
mbed_official 107:414e9c822e99 71 * \brief Set peripheral mode for one single IOPORT pin.
mbed_official 107:414e9c822e99 72 * It will configure port mode and disable pin mode (but enable peripheral).
mbed_official 107:414e9c822e99 73 * \param pin IOPORT pin to configure
mbed_official 107:414e9c822e99 74 * \param mode Mode masks to configure for the specified pin (\ref ioport_modes)
mbed_official 107:414e9c822e99 75 */
mbed_official 107:414e9c822e99 76 #define ioport_set_pin_peripheral_mode(pin, mode) \
mbed_official 107:414e9c822e99 77 do {\
mbed_official 107:414e9c822e99 78 ioport_set_pin_mode(pin, mode);\
mbed_official 107:414e9c822e99 79 ioport_disable_pin(pin);\
mbed_official 107:414e9c822e99 80 } while (0)
mbed_official 107:414e9c822e99 81
mbed_official 107:414e9c822e99 82 #if defined(__GNUC__)
mbed_official 107:414e9c822e99 83 void board_init(void) WEAK __attribute__((alias("system_board_init")));
mbed_official 107:414e9c822e99 84 #elif defined(__ICCARM__)
mbed_official 107:414e9c822e99 85 void board_init(void);
mbed_official 107:414e9c822e99 86 # pragma weak board_init=system_board_init
mbed_official 107:414e9c822e99 87 #endif
mbed_official 107:414e9c822e99 88
mbed_official 107:414e9c822e99 89 void system_board_init(void)
mbed_official 107:414e9c822e99 90 {
mbed_official 107:414e9c822e99 91
mbed_official 107:414e9c822e99 92 #ifndef CONF_BOARD_KEEP_WATCHDOG_AT_INIT
mbed_official 107:414e9c822e99 93 WDT->WDT_MR = WDT_MR_WDDIS;
mbed_official 107:414e9c822e99 94 #endif
mbed_official 107:414e9c822e99 95 ioport_init();
mbed_official 107:414e9c822e99 96
mbed_official 107:414e9c822e99 97 /* Initialize LED0, turned off */
mbed_official 107:414e9c822e99 98 ioport_set_pin_dir(LED_0_PIN, IOPORT_DIR_OUTPUT);
mbed_official 107:414e9c822e99 99 ioport_set_pin_level(LED_0_PIN, IOPORT_PIN_LEVEL_HIGH);
mbed_official 107:414e9c822e99 100
mbed_official 107:414e9c822e99 101 /* Initialize SW0 */
mbed_official 107:414e9c822e99 102 ioport_set_pin_dir(BUTTON_0_PIN, IOPORT_DIR_INPUT);
mbed_official 107:414e9c822e99 103 ioport_set_pin_mode(BUTTON_0_PIN, IOPORT_MODE_PULLUP);
mbed_official 107:414e9c822e99 104
mbed_official 107:414e9c822e99 105 /* Initialize EXT3 LED0, LED1 & LED2, turned off */
mbed_official 107:414e9c822e99 106 ioport_set_pin_level(OLED1_LED1_PIN, !OLED1_LED1_ACTIVE);
mbed_official 107:414e9c822e99 107 ioport_set_pin_dir(OLED1_LED1_PIN, IOPORT_DIR_OUTPUT);
mbed_official 107:414e9c822e99 108 ioport_set_pin_level(OLED1_LED2_PIN, !OLED1_LED2_ACTIVE);
mbed_official 107:414e9c822e99 109 ioport_set_pin_dir(OLED1_LED2_PIN, IOPORT_DIR_OUTPUT);
mbed_official 107:414e9c822e99 110 ioport_set_pin_level(OLED1_LED3_PIN, !OLED1_LED3_ACTIVE);
mbed_official 107:414e9c822e99 111 ioport_set_pin_dir(OLED1_LED3_PIN, IOPORT_DIR_OUTPUT);
mbed_official 107:414e9c822e99 112
mbed_official 107:414e9c822e99 113 #if defined (CONF_BOARD_UART_CONSOLE)
mbed_official 107:414e9c822e99 114 /* Configure UART pins */
mbed_official 107:414e9c822e99 115 ioport_set_port_peripheral_mode(PINS_USART7_PORT, PINS_USART7,
mbed_official 107:414e9c822e99 116 PINS_USART7_FLAGS);
mbed_official 107:414e9c822e99 117 #endif
mbed_official 107:414e9c822e99 118
mbed_official 107:414e9c822e99 119 #ifdef CONF_BOARD_USART_RXD
mbed_official 107:414e9c822e99 120 /* Configure USART RXD pin */
mbed_official 107:414e9c822e99 121 ioport_set_pin_peripheral_mode(EXT3_PIN_UART_RX,
mbed_official 107:414e9c822e99 122 IOPORT_MODE_MUX_B);
mbed_official 107:414e9c822e99 123 #endif
mbed_official 107:414e9c822e99 124
mbed_official 107:414e9c822e99 125 #ifdef CONF_BOARD_USART_TXD
mbed_official 107:414e9c822e99 126 /* Configure USART TXD pin */
mbed_official 107:414e9c822e99 127 ioport_set_pin_peripheral_mode(EXT3_PIN_UART_TX,
mbed_official 107:414e9c822e99 128 IOPORT_MODE_MUX_B);
mbed_official 107:414e9c822e99 129 #endif
mbed_official 107:414e9c822e99 130
mbed_official 107:414e9c822e99 131 #ifdef CONF_BOARD_USART_SCK
mbed_official 107:414e9c822e99 132 /* Configure USART synchronous communication SCK pin */
mbed_official 107:414e9c822e99 133 ioport_set_pin_peripheral_mode(EXT3_PIN_8,
mbed_official 107:414e9c822e99 134 IOPORT_MODE_MUX_B);
mbed_official 107:414e9c822e99 135 #endif
mbed_official 107:414e9c822e99 136
mbed_official 107:414e9c822e99 137 #if defined(CONF_BOARD_SPI) || defined(CONF_BOARD_SD_MMC_SPI)
mbed_official 107:414e9c822e99 138 ioport_set_pin_peripheral_mode(SPI_MISO_GPIO, SPI_MISO_FLAGS);
mbed_official 107:414e9c822e99 139 ioport_set_pin_peripheral_mode(SPI_MOSI_GPIO, SPI_MOSI_FLAGS);
mbed_official 107:414e9c822e99 140 ioport_set_pin_peripheral_mode(SPI_SPCK_GPIO, SPI_SPCK_FLAGS);
mbed_official 107:414e9c822e99 141
mbed_official 107:414e9c822e99 142 #ifdef CONF_BOARD_SD_MMC_SPI
mbed_official 107:414e9c822e99 143 /* Setting SD detection pin */
mbed_official 107:414e9c822e99 144 ioport_set_pin_dir(SD_MMC_0_CD_GPIO, IOPORT_DIR_INPUT);
mbed_official 107:414e9c822e99 145 ioport_set_pin_mode(SD_MMC_0_CD_GPIO, IOPORT_MODE_PULLUP);
mbed_official 107:414e9c822e99 146 #endif
mbed_official 107:414e9c822e99 147
mbed_official 107:414e9c822e99 148 #ifdef CONF_BOARD_SPI_NPCS0
mbed_official 107:414e9c822e99 149 ioport_set_pin_peripheral_mode(SPI_NPCS0_GPIO, SPI_NPCS0_FLAGS);
mbed_official 107:414e9c822e99 150 #endif
mbed_official 107:414e9c822e99 151
mbed_official 107:414e9c822e99 152 #ifdef CONF_BOARD_SPI_NPCS1
mbed_official 107:414e9c822e99 153 ioport_set_pin_peripheral_mode(SPI_NPCS1_GPIO, SPI_NPCS1_FLAGS);
mbed_official 107:414e9c822e99 154 #endif
mbed_official 107:414e9c822e99 155 #endif
mbed_official 107:414e9c822e99 156
mbed_official 107:414e9c822e99 157 #ifdef CONF_BOARD_OLED_UG_2832HSWEG04
mbed_official 107:414e9c822e99 158 ioport_set_pin_dir(UG_2832HSWEG04_DATA_CMD_GPIO, IOPORT_DIR_OUTPUT);
mbed_official 107:414e9c822e99 159 ioport_set_pin_mode(UG_2832HSWEG04_DATA_CMD_GPIO, IOPORT_MODE_PULLUP);
mbed_official 107:414e9c822e99 160 ioport_set_pin_dir(UG_2832HSWEG04_RESET_GPIO, IOPORT_DIR_OUTPUT);
mbed_official 107:414e9c822e99 161 ioport_set_pin_mode(UG_2832HSWEG04_RESET_GPIO, IOPORT_MODE_PULLUP);
mbed_official 107:414e9c822e99 162 #endif
mbed_official 107:414e9c822e99 163
mbed_official 107:414e9c822e99 164 #ifdef CONF_BOARD_TWI0
mbed_official 107:414e9c822e99 165 ioport_set_pin_peripheral_mode(TWI0_DATA_GPIO, TWI0_DATA_FLAGS);
mbed_official 107:414e9c822e99 166 ioport_set_pin_peripheral_mode(TWI0_CLK_GPIO, TWI0_CLK_FLAGS);
mbed_official 107:414e9c822e99 167 #endif
mbed_official 107:414e9c822e99 168
mbed_official 107:414e9c822e99 169 #ifdef CONF_BOARD_TWI1
mbed_official 107:414e9c822e99 170 ioport_set_pin_peripheral_mode(TWI1_DATA_GPIO, TWI1_DATA_FLAGS);
mbed_official 107:414e9c822e99 171 ioport_set_pin_peripheral_mode(TWI1_CLK_GPIO, TWI1_CLK_FLAGS);
mbed_official 107:414e9c822e99 172 #endif
mbed_official 107:414e9c822e99 173
mbed_official 107:414e9c822e99 174 #ifdef CONF_BOARD_TWI2
mbed_official 107:414e9c822e99 175 ioport_set_pin_peripheral_mode(TWI2_DATA_GPIO, TWI2_DATA_FLAGS);
mbed_official 107:414e9c822e99 176 ioport_set_pin_peripheral_mode(TWI2_CLK_GPIO, TWI2_CLK_FLAGS);
mbed_official 107:414e9c822e99 177 #endif
mbed_official 107:414e9c822e99 178
mbed_official 107:414e9c822e99 179 #if defined(CONF_BOARD_TWI4) ||defined(CONF_BOARD_AT30TSE)
mbed_official 107:414e9c822e99 180 ioport_set_pin_peripheral_mode(TWI4_DATA_GPIO, TWI4_DATA_FLAGS);
mbed_official 107:414e9c822e99 181 ioport_set_pin_peripheral_mode(TWI4_CLK_GPIO, TWI4_CLK_FLAGS);
mbed_official 107:414e9c822e99 182 #endif
mbed_official 107:414e9c822e99 183
mbed_official 107:414e9c822e99 184 #ifdef CONF_BOARD_I2S0
mbed_official 107:414e9c822e99 185 ioport_set_pin_peripheral_mode(I2S0_SCK_GPIO, I2S0_SCK_FLAGS);
mbed_official 107:414e9c822e99 186 ioport_set_pin_peripheral_mode(I2S0_MCK_GPIO, I2S0_MCK_FLAGS);
mbed_official 107:414e9c822e99 187 ioport_set_pin_peripheral_mode(I2S0_SDI_GPIO, I2S0_SDI_FLAGS);
mbed_official 107:414e9c822e99 188 ioport_set_pin_peripheral_mode(I2S0_SDO_GPIO, I2S0_SDO_FLAGS);
mbed_official 107:414e9c822e99 189 ioport_set_pin_peripheral_mode(I2S0_WS_GPIO, I2S0_WS_FLAGS);
mbed_official 107:414e9c822e99 190 #endif
mbed_official 107:414e9c822e99 191
mbed_official 107:414e9c822e99 192 #ifdef CONF_BOARD_I2S1
mbed_official 107:414e9c822e99 193 ioport_set_pin_peripheral_mode(I2S1_SCK_GPIO, I2S1_SCK_FLAGS);
mbed_official 107:414e9c822e99 194 ioport_set_pin_peripheral_mode(I2S1_MCK_GPIO, I2S1_MCK_FLAGS);
mbed_official 107:414e9c822e99 195 ioport_set_pin_peripheral_mode(I2S1_SDI_GPIO, I2S1_SDI_FLAGS);
mbed_official 107:414e9c822e99 196 ioport_set_pin_peripheral_mode(I2S1_SDO_GPIO, I2S1_SDO_FLAGS);
mbed_official 107:414e9c822e99 197 ioport_set_pin_peripheral_mode(I2S1_WS_GPIO, I2S1_WS_FLAGS);
mbed_official 107:414e9c822e99 198 #endif
mbed_official 107:414e9c822e99 199
mbed_official 107:414e9c822e99 200 #ifdef CONF_BOARD_PDM
mbed_official 107:414e9c822e99 201 ioport_set_pin_peripheral_mode(PDM_CLK_GPIO, PDM_CLK_FLAGS);
mbed_official 107:414e9c822e99 202 ioport_set_pin_peripheral_mode(PDM_DAT_GPIO, PDM_DAT_FLAGS);
mbed_official 107:414e9c822e99 203 #endif
mbed_official 107:414e9c822e99 204
mbed_official 107:414e9c822e99 205 #ifdef CONF_BOARD_USART0
mbed_official 107:414e9c822e99 206 ioport_set_pin_peripheral_mode(USART0_RXD_GPIO, USART0_RXD_FLAGS);
mbed_official 107:414e9c822e99 207 ioport_set_pin_peripheral_mode(USART0_TXD_GPIO, USART0_TXD_FLAGS);
mbed_official 107:414e9c822e99 208 ioport_set_pin_peripheral_mode(USART0_SCK_GPIO, USART0_SCK_FLAGS);
mbed_official 107:414e9c822e99 209 ioport_set_pin_peripheral_mode(USART0_CTS_GPIO, USART0_CTS_FLAGS);
mbed_official 107:414e9c822e99 210 ioport_set_pin_peripheral_mode(USART0_RTS_GPIO, USART0_RTS_FLAGS);
mbed_official 107:414e9c822e99 211 #endif
mbed_official 107:414e9c822e99 212
mbed_official 107:414e9c822e99 213 #ifdef CONF_BOARD_USART6
mbed_official 107:414e9c822e99 214 ioport_set_pin_peripheral_mode(USART6_RXD_GPIO, USART6_RXD_FLAGS);
mbed_official 107:414e9c822e99 215 ioport_set_pin_peripheral_mode(USART6_TXD_GPIO, USART6_TXD_FLAGS);
mbed_official 107:414e9c822e99 216 ioport_set_pin_peripheral_mode(USART6_SCK_GPIO, USART6_SCK_FLAGS);
mbed_official 107:414e9c822e99 217 ioport_set_pin_peripheral_mode(USART6_CTS_GPIO, USART6_CTS_FLAGS);
mbed_official 107:414e9c822e99 218 ioport_set_pin_peripheral_mode(USART6_RTS_GPIO, USART6_RTS_FLAGS);
mbed_official 107:414e9c822e99 219 #endif
mbed_official 107:414e9c822e99 220
mbed_official 107:414e9c822e99 221 #if defined(CONF_BOARD_USB_PORT)
mbed_official 107:414e9c822e99 222 # if defined(CONF_BOARD_USB_VBUS_DETECT)
mbed_official 107:414e9c822e99 223 gpio_configure_pin(USB_VBUS_PIN, USB_VBUS_FLAGS);
mbed_official 107:414e9c822e99 224 # endif
mbed_official 107:414e9c822e99 225 #endif
mbed_official 107:414e9c822e99 226 }
mbed_official 107:414e9c822e99 227
mbed_official 107:414e9c822e99 228 /** @} */