/**
* \file
*
* \brief SAM R30 Module Xplained Pro board definition
*
* Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries.
*
* \asf_license_start
*
* \page License
*
* Subject to your compliance with these terms, you may use Microchip
* software and any derivatives exclusively with Microchip products.
* It is your responsibility to comply with third party license terms applicable
* to your use of third party software (including open source software) that
* may accompany Microchip software.
*
* THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES,
* WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE,
* INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY,
* AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE
* LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL
* LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE
* SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE
* POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT
* ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY
* RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY,
* THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
*
* \asf_license_stop
*
*/
/*
* Support and FAQ: visit Microchip Support
*/
#ifndef SAMR30_MODULE_XPLAINED_PRO_H_INCLUDED
#define SAMR30_MODULE_XPLAINED_PRO_H_INCLUDED
#include
#include
#ifdef __cplusplus
extern "C" {
#endif
/**
* \ingroup group_common_boards
* \defgroup samr30_xplained_pro_group SAM R30 Xplained Pro board
*
* @{
*/
void system_board_init(void);
/**
* \defgroup samr30_xplained_pro_features_group Features
*
* Symbols that describe features and capabilities of the board.
*
* @{
*/
/** Name string macro */
#define BOARD_NAME "SAMR30_MODULE_XPLAINED_PRO"
/** \name Resonator definitions
* @{ */
#define BOARD_FREQ_SLCK_XTAL (32768U)
#define BOARD_FREQ_SLCK_BYPASS (32768U)
#define BOARD_FREQ_MAINCK_XTAL 0 /* Not Mounted */
#define BOARD_FREQ_MAINCK_BYPASS 0 /* Not Mounted */
#define BOARD_MCK CHIP_FREQ_CPU_MAX
#define BOARD_OSC_STARTUP_US 15625
/** @} */
/** \name LED0 definitions
* @{ */
#define LED0_PIN PIN_PA14
#define LED0_ACTIVE false
#define LED0_INACTIVE !LED0_ACTIVE
/** @} */
/** \name LED1 definitions
* @{ */
#define LED1_PIN PIN_PA18
#define LED1_ACTIVE false
#define LED1_INACTIVE !LED1_ACTIVE
/** @} */
/** \name SW0 definitions
* @{ */
#define SW0_PIN PIN_PA07
#define SW0_ACTIVE false
#define SW0_INACTIVE !SW0_ACTIVE
#define SW0_EIC_PIN PIN_PA07A_EIC_EXTINT7
#define SW0_EIC_MUX MUX_PA07A_EIC_EXTINT7
#define SW0_EIC_PINMUX PINMUX_PA07A_EIC_EXTINT7
#define SW0_EIC_LINE 7
/** @} */
/**
* \name LED #0 definitions
*
* Wrapper macros for LED0, to ensure common naming across all Xplained Pro
* boards.
*
* @{ */
#define LED_0_NAME "LED0 (yellow)"
#define LED_0_PIN LED0_PIN
#define LED_0_ACTIVE LED0_ACTIVE
#define LED_0_INACTIVE LED0_INACTIVE
#define LED0_GPIO LED0_PIN
#define LED0 LED0_PIN
#define LED_0_PWM4CTRL_MODULE TCC0
#define LED_0_PWM4CTRL_CHANNEL 4
#define LED_0_PWM4CTRL_OUTPUT 4
#define LED_0_PWM4CTRL_PIN PIN_PA14F_TCC0_WO4
#define LED_0_PWM4CTRL_MUX MUX_PA14F_TCC0_WO4
#define LED_0_PWM4CTRL_PINMUX PINMUX_PA14F_TCC0_WO4
/** @} */
/**
* \name LED #1 definitions
*
* Wrapper macros for LED0, to ensure common naming across all Xplained Pro
* boards.
*
* @{ */
#define LED_1_NAME "LED1 (Green)"
#define LED_1_PIN LED1_PIN
#define LED_1_ACTIVE LED1_ACTIVE
#define LED_1_INACTIVE LED1_INACTIVE
#define LED1_GPIO LED1_PIN
#define LED1 LED1_PIN
#define LED_1_PWM2CTRL_MODULE TCC0
#define LED_1_PWM2CTRL_CHANNEL 2
#define LED_1_PWM2CTRL_OUTPUT 2
#define LED_1_PWM2CTRL_PIN PIN_PA18F_TCC0_WO2
#define LED_1_PWM2CTRL_MUX MUX_PA18F_TCC0_WO2
#define LED_1_PWM2CTRL_PINMUX PINMUX_PA18F_TCC0_WO2
/** @} */
/** Number of on-board LEDs */
#define LED_COUNT 2
/**
* \name Serial flash definitions
*
* On board Serial flash definitions.
*
* @{ */
#define SERIALFLASH_SPI_MODULE SERCOM1
#define SERIALFLASH_SPI_MUX_SETTING SPI_SIGNAL_MUX_SETTING_E
#define SERIALFLASH_SPI_PINMUX_PAD0 PINMUX_PA16C_SERCOM1_PAD0
#define SERIALFLASH_SPI_PINMUX_PAD1 PINMUX_UNUSED
#define SERIALFLASH_SPI_PINMUX_PAD2 PINMUX_PA18C_SERCOM1_PAD2
#define SERIALFLASH_SPI_PINMUX_PAD3 PINMUX_PA19C_SERCOM1_PAD3
#define SERIALFLASH_SPI_CS PIN_PA27
/** @} */
/**
* \name Button #0 definitions
*
* Wrapper macros for SW0, to ensure common naming across all Xplained Pro
* boards.
*
* @{ */
#define BUTTON_0_NAME "SW0"
#define BUTTON_0_PIN SW0_PIN
#define BUTTON_0_ACTIVE SW0_ACTIVE
#define BUTTON_0_INACTIVE SW0_INACTIVE
#define BUTTON_0_EIC_PIN SW0_EIC_PIN
#define BUTTON_0_EIC_MUX SW0_EIC_MUX
#define BUTTON_0_EIC_PINMUX SW0_EIC_PINMUX
#define BUTTON_0_EIC_LINE SW0_EIC_LINE
/** @} */
/** Number of on-board buttons */
#define BUTTON_COUNT 1
/** \name Extension header pin definitions
* @{
*/
#define EXT_PIN_3 PIN_PA06
#define EXT_PIN_4 UNUSED
#define EXT_PIN_5 PIN_PA14
#define EXT_PIN_6 UNUSED
#define EXT_PIN_7 UNUSED
#define EXT_PIN_8 UNUSED
#define EXT_PIN_9 PIN_PA06
#define EXT_PIN_10 PIN_PA28
#define EXT_PIN_11 PIN_PA08
#define EXT_PIN_12 PIN_PA09
#define EXT_PIN_13 PIN_PA14
#define EXT_PIN_14 PIN_PA15
#define EXT_PIN_15 PIN_PA17
#define EXT_PIN_16 PIN_PA18
#define EXT_PIN_17 PIN_PA16
#define EXT_PIN_18 PIN_PA19
/** @} */
/** \name Extension header pin definitions by function
* @{
*/
#define EXT_PIN_ADC_0 EXT_PIN_3
#define EXT_PIN_ADC_1 EXT_PIN_4
#define EXT_PIN_GPIO_0 EXT_PIN_5
#define EXT_PIN_GPIO_1 EXT_PIN_6
#define EXT_PIN_PWM_0 EXT_PIN_7
#define EXT_PIN_PWM_1 EXT_PIN_8
#define EXT_PIN_IRQ EXT_PIN_9
#define EXT_PIN_I2C_SDA EXT_PIN_11
#define EXT_PIN_I2C_SCL EXT_PIN_12
#define EXT_PIN_UART_RX EXT_PIN_13
#define EXT_PIN_UART_TX EXT_PIN_14
#define EXT_PIN_SPI_SS_1 EXT_PIN_10
#define EXT_PIN_SPI_SS_0 EXT_PIN_15
#define EXT_PIN_SPI_MOSI EXT_PIN_16
#define EXT_PIN_SPI_MISO EXT_PIN_17
#define EXT_PIN_SPI_SCK EXT_PIN_18
/** @} */
/** \name Extension header ADC definitions
* @{
*/
#define EXT_ADC_MODULE ADC
#define EXT_ADC_6_CHANNEL 6
#define EXT_ADC_6_PIN PIN_PA06B_ADC_AIN6
#define EXT_ADC_6_MUX MUX_PA06B_ADC_AIN6
#define EXT_ADC_6_PINMUX PINMUX_PA06B_ADC_AIN6
/** @} */
/** \name Extension header TC definitions
* @{
*/
#define EXT_PWM_MODULE TC4
#define EXT_PWM_0_CHANNEL 0
#define EXT_PWM_0_PIN PIN_PA14E_TC4_WO0
#define EXT_PWM_0_MUX MUX_PA14E_TC4_WO0
#define EXT_PWM_0_PINMUX PINMUX_PA14E_TC4_WO0
/** @} */
/** \name Extension header IRQ/External interrupt definitions
* @{
*/
#define EXT_IRQ_MODULE EIC
#define EXT_IRQ_INPUT 6
#define EXT_IRQ_PIN PIN_PA06A_EIC_EXTINT6
#define EXT_IRQ_MUX MUX_PA06A_EIC_EXTINT6
#define EXT_IRQ_PINMUX PINMUX_PA06A_EIC_EXTINT6
/** @} */
/** \name Extension header I2C definitions
* @{
*/
#define EXT_I2C_MODULE SERCOM0
#define EXT_I2C_SERCOM_PINMUX_PAD0 PINMUX_PA08C_SERCOM0_PAD0
#define EXT_I2C_SERCOM_PINMUX_PAD1 PINMUX_PA09C_SERCOM0_PAD1
#define EXT_I2C_SERCOM_DMAC_ID_TX SERCOM0_DMAC_ID_TX
#define EXT_I2C_SERCOM_DMAC_ID_RX SERCOM0_DMAC_ID_RX
/** @} */
/** \name Extension header UART definitions
* @{
*/
#define EXT_UART_MODULE SERCOM2
#define EXT_UART_SERCOM_MUX_SETTING USART_RX_3_TX_2_XCK_3
#define EXT_UART_SERCOM_PINMUX_PAD0 PINMUX_UNUSED
#define EXT_UART_SERCOM_PINMUX_PAD1 PINMUX_UNUSED
#define EXT_UART_SERCOM_PINMUX_PAD2 PINMUX_PA14C_SERCOM2_PAD2
#define EXT_UART_SERCOM_PINMUX_PAD3 PINMUX_PA15C_SERCOM2_PAD3
#define EXT_UART_SERCOM_DMAC_ID_TX SERCOM2_DMAC_ID_TX
#define EXT_UART_SERCOM_DMAC_ID_RX SERCOM2_DMAC_ID_RX
/** @} */
/** \ Temperature sensor definitions
* @{
*/
#define TEMPERATURE_SENSOR_I2C_MODULE SERCOM0
#define TEMPERATURE_ALERT_IRQ_MODULE EIC
#define TEMPERATURE_ALERT_IRQ_INPUT 8
#define TEMPERATURE_ALERT_IRQ_PIN PIN_PA28A_EIC_EXTINT8
#define TEMPERATURE_ALERT_IRQ_MUX MUX_PA28A_EIC_EXTINT8
#define TEMPERATURE_ALERT_IRQ_PINMUX PINMUX_PA28A_EIC_EXTINT8
#define TEMPERATURE_SENSOR_SDA EXT_I2C_SERCOM_PINMUX_PAD0
#define TEMPERATURE_SENSOR_SCL EXT_I2C_SERCOM_PINMUX_PAD1
#define TEMPERATURE_SENSOR_I2C_SERCOM_DMAC_ID_TX SERCOM0_DMAC_ID_TX
#define TEMPERATURE_SENSOR_I2C_SERCOM_DMAC_ID_RX SERCOM0_DMAC_ID_RX
#define TEMPERATURE_SENSOR_ALERT_PIN TEMPERATURE_ALERT_IRQ_PINMUX
/** @} */
/** \name Extension header SPI definitions
* @{
*/
#define EXT_SPI_MODULE SERCOM1
#define EXT_SPI_SERCOM_MUX_SETTING SPI_SIGNAL_MUX_SETTING_E
#define EXT_SPI_SERCOM_PINMUX_PAD0 PINMUX_PA16C_SERCOM1_PAD0
#define EXT_SPI_SERCOM_PINMUX_PAD1 PINMUX_PA17C_SERCOM1_PAD1
#define EXT_SPI_SERCOM_PINMUX_PAD2 PINMUX_PA18C_SERCOM1_PAD2
#define EXT_SPI_SERCOM_PINMUX_PAD3 PINMUX_PA19C_SERCOM1_PAD3
#define EXT_SPI_SERCOM_DMAC_ID_TX SERCOM1_DMAC_ID_TX
#define EXT_SPI_SERCOM_DMAC_ID_RX SERCOM1_DMAC_ID_RX
/** @} */
/** \name Embedded debugger CDC Gateway USART interface definitions
* @{
*/
#define CDC_MODULE SERCOM3
#define CDC_SERCOM_MUX_SETTING USART_RX_3_TX_2_XCK_3
#define CDC_SERCOM_PINMUX_PAD0 PINMUX_UNUSED
#define CDC_SERCOM_PINMUX_PAD1 PINMUX_UNUSED
#define CDC_SERCOM_PINMUX_PAD2 PINMUX_PA24C_SERCOM3_PAD2
#define CDC_SERCOM_PINMUX_PAD3 PINMUX_PA25C_SERCOM3_PAD3
#define CDC_SERCOM_DMAC_ID_TX SERCOM3_DMAC_ID_TX
#define CDC_SERCOM_DMAC_ID_RX SERCOM3_DMAC_ID_RX
/** @} */
#define RF_SPI_MODULE SERCOM4
#define RF_SPI_SERCOM_MUX_SETTING SPI_SIGNAL_MUX_SETTING_E
#define RF_SPI_SERCOM_PINMUX_PAD0 PINMUX_PC19F_SERCOM4_PAD0
#define RF_SPI_SERCOM_PINMUX_PAD1 PINMUX_PB31F_SERCOM4_PAD1
#define RF_SPI_SERCOM_PINMUX_PAD2 PINMUX_PB30F_SERCOM4_PAD2
#define RF_SPI_SERCOM_PINMUX_PAD3 PINMUX_PC18F_SERCOM4_PAD3
#define RF_IRQ_MODULE EIC
#define RF_IRQ_INPUT 0
#define RF_IRQ_PIN PIN_PB00A_EIC_EXTINT0
#define RF_IRQ_MUX MUX_PB00A_EIC_EXTINT0
#define RF_IRQ_PINMUX PINMUX_PB00A_EIC_EXTINT0
/** \name 802.15.4 TRX Interface definitions
* @{
*/
#define AT86RFX_SPI SERCOM4
#define AT86RFX_RST_PIN PIN_PB15
#define AT86RFX_IRQ_PIN PIN_PB00
#define AT86RFX_SLP_PIN PIN_PA20
#define AT86RFX_SPI_CS PIN_PB31
#define AT86RFX_SPI_MOSI PIN_PB30
#define AT86RFX_SPI_MISO PIN_PC19
#define AT86RFX_SPI_SCK PIN_PC18
#define PIN_RFCTRL1 PIN_PA09
#define PIN_RFCTRL2 PIN_PA12
#define RFCTRL_CFG_ANT_DIV 4
#define AT86RFX_SPI_SERCOM_MUX_SETTING RF_SPI_SERCOM_MUX_SETTING
#define AT86RFX_SPI_SERCOM_PINMUX_PAD0 RF_SPI_SERCOM_PINMUX_PAD0
#define AT86RFX_SPI_SERCOM_PINMUX_PAD1 PINMUX_UNUSED
#define AT86RFX_SPI_SERCOM_PINMUX_PAD2 RF_SPI_SERCOM_PINMUX_PAD2
#define AT86RFX_SPI_SERCOM_PINMUX_PAD3 RF_SPI_SERCOM_PINMUX_PAD3
#define AT86RFX_IRQ_CHAN RF_IRQ_INPUT
#define AT86RFX_IRQ_PINMUX RF_IRQ_PINMUX
/** Enables the transceiver main interrupt. */
#define ENABLE_TRX_IRQ() \
extint_chan_enable_callback(AT86RFX_IRQ_CHAN, EXTINT_CALLBACK_TYPE_DETECT)
/** Disables the transceiver main interrupt. */
#define DISABLE_TRX_IRQ() \
extint_chan_disable_callback(AT86RFX_IRQ_CHAN, EXTINT_CALLBACK_TYPE_DETECT)
/** Clears the transceiver main interrupt. */
#define CLEAR_TRX_IRQ() \
extint_chan_clear_detected(AT86RFX_IRQ_CHAN);
/*
* This macro saves the trx interrupt status and disables the trx interrupt.
*/
#define ENTER_TRX_REGION() \
{ extint_chan_disable_callback(AT86RFX_IRQ_CHAN, EXTINT_CALLBACK_TYPE_DETECT)
/*
* This macro restores the transceiver interrupt status
*/
#define LEAVE_TRX_REGION() \
extint_chan_enable_callback(AT86RFX_IRQ_CHAN, EXTINT_CALLBACK_TYPE_DETECT); }
/** @} */
/**
* \brief Turns off the specified LEDs.
*
* \param led_gpio LED to turn off (LEDx_GPIO).
*
* \note The pins of the specified LEDs are set to GPIO output mode.
*/
#define LED_Off(led_gpio) port_pin_set_output_level(led_gpio,true)
/**
* \brief Turns on the specified LEDs.
*
* \param led_gpio LED to turn on (LEDx_GPIO).
*
* \note The pins of the specified LEDs are set to GPIO output mode.
*/
#define LED_On(led_gpio) port_pin_set_output_level(led_gpio,false)
/**
* \brief Toggles the specified LEDs.
*
* \param led_gpio LED to toggle (LEDx_GPIO).
*
* \note The pins of the specified LEDs are set to GPIO output mode.
*/
#define LED_Toggle(led_gpio) port_pin_toggle_output_level(led_gpio)
/** @} */
#ifdef __cplusplus
}
#endif
#endif /* SAMR30_MODULE_XPLAINED_PRO_H_INCLUDED */