blob: 31510b88e052338360de5541fa38e3a5cc2ae723 [file] [log] [blame]
/**
* \file
*
* \brief SAM4L-EK Board header file.
*
* This file contains definitions and services related to the features of the
* SAM4L-EK Board.
*
* To use this board define BOARD=SAM4L_EK.
*
* Copyright (c) 2012 - 2013 Atmel Corporation. All rights reserved.
*
* \asf_license_start
*
* \page License
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The name of Atmel may not be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* 4. This software may only be redistributed and used in connection with an
* Atmel microcontroller product.
*
* THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
* EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* \asf_license_stop
*
*/
#ifndef SAM4L_EK_INCLUDED
#define SAM4L_EK_INCLUDED
#include "compiler.h"
/** Name of the board */
#define BOARD_NAME "SAM4L-EK"
/**
* \defgroup sam4l_ek_group SAM4L-EK Board
* @{
*/
/**
* \defgroup sam4l_ek_feature_group Feature definitions
* @{
*/
//! \name Miscellaneous data
//@{
//@}
//! Osc frequency (Hz.) and startup time (RCOsc periods).
#define FOSC0 (12000000)
//! Osc32 frequency (Hz.) and startup time (RCOsc periods).
#define FOSC32 (32768)
/**
* \name Board oscillator configuration
*
*/
//@{
#define BOARD_OSC32_IS_XTAL true
#define BOARD_OSC32_HZ FOSC32
#define BOARD_OSC32_STARTUP_US (1100000)
#define BOARD_OSC32_SELCURR BSCIF_OSCCTRL32_SELCURR(10)
#define BOARD_OSC0_IS_XTAL true
#define BOARD_OSC0_HZ FOSC0
#define BOARD_OSC0_STARTUP_US (1100)
//@}
/*! \name Number of LEDs.
*/
//! @{
#define LED_COUNT 1
//! @}
/**
* \name LEDs
*
* LED0 is a single yellow LED that is active low.
*/
//@{
#define LED0 PC10
#define LED0_GPIO PIN_PC10
#define LED0_GPIO_MASK GPIO_PC10
#if defined(SAM4L_EK_REV1)
# define LED0_ACTIVE_LEVEL IOPORT_PIN_LEVEL_LOW
# define LED0_INACTIVE_LEVEL IOPORT_PIN_LEVEL_HIGH
#else
# define LED0_ACTIVE_LEVEL IOPORT_PIN_LEVEL_HIGH
# define LED0_INACTIVE_LEVEL IOPORT_PIN_LEVEL_LOW
#endif
//@}
/**
* \name LCD Backlight
*/
//@{
#if defined(SAM4L_EK_REV1)
# define LCD_BL PA02
# define LCD_BL_GPIO PIN_PA02
# define LCD_BL_GPIO_MASK GPIO_PA02
#else
# define LCD_BL PC14
# define LCD_BL_GPIO PIN_PC14
# define LCD_BL_GPIO_MASK GPIO_PC14
#endif
#define LCD_BL_ACTIVE_LEVEL IOPORT_PIN_LEVEL_HIGH
#define LCD_BL_INACTIVE_LEVEL IOPORT_PIN_LEVEL_LOW
//@}
/*! \name GPIO Connections of Push Buttons
*/
//! @{
#define GPIO_PUSH_BUTTON_0 PIN_PC03
#define GPIO_PUSH_BUTTON_0_MASK GPIO_PC03
#define PUSH_BUTTON_0_DOWN_LEVEL IOPORT_PIN_LEVEL_LOW
#define PUSH_BUTTON_0_UP_LEVEL IOPORT_PIN_LEVEL_HIGH
//! @}
/*! \name Push Button Connection on External Interrupt line
*/
//! @{
#define GPIO_PUSH_BUTTON_EIC_PIN PIN_PC03B_EIC_EXTINT5
#define GPIO_PUSH_BUTTON_EIC_PIN_MASK GPIO_PC03B_EIC_EXTINT5
#define GPIO_PUSH_BUTTON_EIC_PIN_MUX MUX_PC03B_EIC_EXTINT5
#define GPIO_PUSH_BUTTON_EIC_LINE 5
#define GPIO_UNIT_TEST_EIC_PIN PIN_PA06C_EIC_EXTINT1
#define GPIO_UNIT_TEST_EIC_PIN_MASK GPIO_PA06C_EIC_EXTINT1
#define GPIO_UNIT_TEST_EIC_PIN_MUX MUX_PA06C_EIC_EXTINT1
#define GPIO_UNIT_TEST_EIC_LINE 1
#define GPIO_EIC_TRIG_PIN PIN_PB05
//! @}
/*! \name GPIO Connections of Touch sensors
*/
//! @{
#define GPIO_QTOUCH_SLIDER_0 PIN_PB02
#define GPIO_QTOUCH_SLIDER_0_MASK GPIO_PB02
#define GPIO_QTOUCH_SLIDER_0_MUX MUX_PB02G_CATB_SENSE23
#define GPIO_QTOUCH_SLIDER_1 PIN_PA04
#define GPIO_QTOUCH_SLIDER_1_MASK GPIO_PA04
#define GPIO_QTOUCH_SLIDER_1_MUX MUX_PA04G_CATB_SENSE0
#define GPIO_QTOUCH_SLIDER_2 PIN_PA05
#define GPIO_QTOUCH_SLIDER_2_MASK GPIO_PA05
#define GPIO_QTOUCH_SLIDER_2_MUX MUX_PA05G_CATB_SENSE1
#define GPIO_QTOUCH_DISCHARGE PIN_PB03
#define GPIO_QTOUCH_DISCHARGE_MASK GPIO_PB03
#define GPIO_QTOUCH_DISCHARGE_MUX MUX_PB03G_CATB_DIS
#define GPIO_QTOUCH_BUTTON PIN_PB04
#define GPIO_QTOUCH_BUTTON_MASK GPIO_PB04
#define GPIO_QTOUCH_BUTTON_MUX MUX_PB04G_CATB_SENSE24
//! @}
/*! \name Touch sensors pin assignements
*/
//! @{
#define QTOUCH_PINSEL_SLIDER_0 23
#define QTOUCH_PINSEL_SLIDER_1 0
#define QTOUCH_PINSEL_SLIDER_2 1
#define QTOUCH_PINSEL_BUTTON 24
//! @}
/*! \name GPIO Connections of SAM4L4C VBUS monitoring
*/
//! @{
#if defined(SAM4L_EK_REV1)
#define USB_VBUS_FLAGS IOPORT_MODE_GLITCH_FILTER
#define USB_VBUS_PIN PIN_PC14 /* As IO pin input */
/* No EIC for VBus pin */
#elif 0 // The Vbus monitoring can not be used on SAM4L_EK Rev. 2
#define USB_VBUS_FLAGS IOPORT_MODE_GLITCH_FILTER
#define USB_VBUS_EIC PIN_PA06C_EIC_EXTINT1 /* As EIC input */
#define USB_VBUS_EIC_MUX IOPORT_MODE_MUX_C
#define USB_VBUS_EIC_LINE 1
#define USB_VBUS_EIC_IRQn EIC_1_IRQn
#endif
//! @}
/*! \name GPIO Connections of SAM4L4C VBUS Power Control
*/
//! @{
#define USB_VBOF_PIN PIN_PC08 /* As IO pin output */
#define USB_VBOF_ACTIVE_LEVEL 0
#define USB_VBOF_INACTIVE_LEVEL 1
//! @}
/*! \name GPIO Connections of SAM4L4C VBUS error detecting
*/
//! @{
#define USB_VBERR_FLAGS IOPORT_MODE_PULLUP | IOPORT_MODE_GLITCH_FILTER
#define USB_VBERR_PIN PIN_PC07 /* As IO pin input */
/* No EIC for VBErr pin */
//! @}
/*! \name GPIO Connections of SAM4L4C ID detecting
*/
//! @{
#define USB_ID_FLAGS IOPORT_MODE_PULLUP | IOPORT_MODE_GLITCH_FILTER
#define USB_ID_PIN PIN_PB05 /* As IO pin input */
/* No EIC for ID pin */
//! @}
//! \name USART connections to GPIO for Virtual Com Port
// @{
#define COM_PORT_USART USART2
#define COM_PORT_USART_ID ID_USART2
#define COM_PORT_RX_PIN PIN_PC11B_USART2_RXD
#define COM_PORT_RX_GPIO GPIO_PC11B_USART2_RXD
#define COM_PORT_RX_MUX MUX_PC11B_USART2_RXD
#define COM_PORT_TX_PIN PIN_PC12B_USART2_TXD
#define COM_PORT_TX_GPIO GPIO_PC12B_USART2_TXD
#define COM_PORT_TX_MUX MUX_PC12B_USART2_TXD
// @}
//! \name USART connections to the Board Monitor
// @{
#define BM_USART_USART USART0
#define BM_USART_USART_ID ID_USART0
#define BM_USART_RX_PIN PIN_PC02C_USART0_RXD
#define BM_USART_RX_GPIO GPIO_PC02C_USART0_RXD
#define BM_USART_RX_MUX MUX_PC02C_USART0_RXD
#define BM_USART_TX_PIN PIN_PA07B_USART0_TXD
#define BM_USART_TX_GPIO GPIO_PA07B_USART0_TXD
#define BM_USART_TX_MUX MUX_PA07B_USART0_TXD
// @}
//! \name USART connections to the RS485
// @{
#define RS485_USART_USART USART0
#define RS485_USART_USART_ID ID_USART0
#define RS485_USART_RX_PIN PIN_PC02C_USART0_RXD
#define RS485_USART_RX_GPIO GPIO_PC02C_USART0_RXD
#define RS485_USART_RX_MUX MUX_PC02C_USART0_RXD
#define RS485_USART_TX_PIN PIN_PA07B_USART0_TXD
#define RS485_USART_TX_GPIO GPIO_PA07B_USART0_TXD
#define RS485_USART_TX_MUX MUX_PA07B_USART0_TXD
#define RS485_USART_RTS_PIN PIN_PA06B_USART0_RTS
#define RS485_USART_RTS_GPIO GPIO_PA06B_USART0_RTS
#define RS485_USART_RTS_MUX MUX_PA06B_USART0_RTS
#define RS485_USART_CTS_PIN PIN_PC08E_USART2_CTS
#define RS485_USART_CTS_GPIO GPIO_PC08E_USART2_CTS
#define RS485_USART_CTS_MUX MUX_PC08E_USART2_CTS
// @}
//! \name TWIMS1 pins
// @{
#define TWIMS1_TWI_SDA_PIN PIN_PB00A_TWIMS1_TWD
#define TWIMS1_TWI_SDA_GPIO GPIO_PB00A_TWIMS1_TWD
#define TWIMS1_TWI_SDA_MUX MUX_PB00A_TWIMS1_TWD
#define TWIMS1_TWI_SCL_PIN PIN_PB01A_TWIMS1_TWCK
#define TWIMS1_TWI_SCL_GPIO GPIO_PB01A_TWIMS1_TWCK
#define TWIMS1_TWI_SCL_MUX MUX_PB01A_TWIMS1_TWCK
// @}
//! \name USART0 pins
// @{
#define USART0_RX_PIN PIN_PC02C_USART0_RXD
#define USART0_RX_MUX MUX_PC02C_USART0_RXD
#define USART0_RX_GPIO GPIO_PC02C_USART0_RXD
#define USART0_TX_PIN PIN_PA07B_USART0_TXD
#define USART0_TX_MUX MUX_PA07B_USART0_TXD
#define USART0_TX_GPIO GPIO_PA07B_USART0_TXD
// @}
//! \name DACC pins
// @{
#define DACC_EXT_TRIG0_PIN PIN_PB04E_DACC_EXT_TRIG0
#define DACC_EXT_TRIG0_GPIO GPIO_PB04E_DACC_EXT_TRIG0
#define DACC_EXT_TRIG0_MUX MUX_PB04E_DACC_EXT_TRIG0
#define DACC_VOUT_PIN PIN_PA06A_DACC_VOUT
#define DACC_VOUT_GPIO GPIO_PA06A_DACC_VOUT
#define DACC_VOUT_MUX MUX_PA06A_DACC_VOUT
// @}
/* Select the SPI module that AT25DFx is connected to */
#define AT25DFX_SPI_MODULE SPI
/* Chip select used by AT25DFx components on the SPI module instance */
#define AT25DFX_CS 2
/**
* @}
*/
#endif /* SAM4L_EK_INCLUDED */