nes-proj/platform/remote/dev/board.h

279 lines
9.4 KiB
C

/*
* Copyright (c) 2012, Texas Instruments Incorporated - http://www.ti.com/
* All rights reserved.
*
* 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. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT HOLDER OR CONTRIBUTORS 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.
*/
/** \addtogroup remote
* @{
*
* \defgroup remote-peripherals Re-Mote Peripherals
*
* Defines related to the Re-Mote
*
* This file provides connectivity information on LEDs, Buttons, UART and
* other Re-Mote peripherals
*
* This file can be used as the basis to configure other platforms using the
* cc2538 SoC.
* @{
*
* \file
* Header file with definitions related to the I/O connections on the Zolertia's
* Re-Mote platform, cc2538-based
*
* \note Do not include this file directly. It gets included by contiki-conf
* after all relevant directives have been set.
*/
#ifndef BOARD_H_
#define BOARD_H_
#include "dev/gpio.h"
#include "dev/nvic.h"
/*---------------------------------------------------------------------------*/
/** \name Re-Mote LED configuration
*
* LEDs on the Re-mote are connected as follows:
* - LED1 (Red) -> PD2
* - LED2 (Blue) -> PC3
* - LED3 (Green) -> PD5
*
* LED1 routed also to JP5 connector
* LED2 shares the same pin with Watchdog WDI pulse and routed to JP8 connector
* LED3 routed also to JP5 connector
* @{
*/
/*---------------------------------------------------------------------------*/
/* Some files include leds.h before us, so we need to get rid of defaults in
* leds.h before we provide correct definitions */
#undef LEDS_GREEN
#undef LEDS_YELLOW
#undef LEDS_BLUE
#undef LEDS_RED
#undef LEDS_CONF_ALL
/* In leds.h the LEDS_BLUE is defined by LED_YELLOW definition */
#define LEDS_GREEN 1 /**< LED1 (Green) -> PD5 */
#define LEDS_BLUE 2 /**< LED2 (Blue) -> PC3 */
#define LEDS_RED 4 /**< LED3 (Red) -> PD2 */
#define LEDS_CONF_ALL 7
#define LEDS_LIGHT_BLUE (LEDS_GREEN | LEDS_BLUE) /**< Green + Blue (3) */
#define LEDS_YELLOW (LEDS_GREEN | LEDS_RED) /**< Green + Red (5) */
#define LEDS_PURPLE (LEDS_BLUE | LEDS_RED) /**< Blue + Red (6) */
#define LEDS_WHITE LEDS_ALL /**< Green + Blue + Red (7) */
/* Notify various examples that we have LEDs */
#define PLATFORM_HAS_LEDS 1
/** @} */
/*---------------------------------------------------------------------------*/
/** \name USB configuration
*
* The USB pullup is enabled by an external resistor, not mapped to a GPIO
*/
#ifdef USB_PULLUP_PORT
#undef USB_PULLUP_PORT
#endif
#ifdef USB_PULLUP_PIN
#undef USB_PULLUP_PIN
#endif
/** @} */
/*---------------------------------------------------------------------------*/
/** \name UART configuration
*
* On the Re-Mote, the UART is connected to the following ports/pins
* - UART0:
* - RX: PA0
* - TX: PA1
* - UART1:
* - RX: PC6
* - TX: PC5
* - CTS:
* - RTS:
* We configure the port to use UART0 and UART1, CTS/RTS only for UART1,
* both without a HW pull-up resistor
* @{
*/
#define UART0_RX_PORT GPIO_A_NUM
#define UART0_RX_PIN 0
#define UART0_TX_PORT GPIO_A_NUM
#define UART0_TX_PIN 1
#define UART1_RX_PORT GPIO_C_NUM
#define UART1_RX_PIN 6
#define UART1_TX_PORT GPIO_C_NUM
#define UART1_TX_PIN 5
#define UART1_CTS_PORT GPIO_C_NUM
#define UART1_CTS_PIN 1
#define UART1_RTS_PORT GPIO_C_NUM
#define UART1_RTS_PIN 2
/** @} */
/*---------------------------------------------------------------------------*/
/** \name Re-Mote Button configuration
*
* Buttons on the Re-Mote are connected as follows:
* - BUTTON_USER -> PA3, S1 user button, shared with bootloader
* - BUTTON_RESET -> RESET_N line, S2 reset both CC2538 and CoP
* - BUTTON_VBAT -> Power switch, not mounted by default
* @{
*/
/** BUTTON_USER -> PA3 */
#define BUTTON_USER_PORT GPIO_A_NUM
#define BUTTON_USER_PIN 3
#define BUTTON_USER_VECTOR NVIC_INT_GPIO_PORT_A
/* Notify various examples that we have Buttons */
#define PLATFORM_HAS_BUTTON 1
/** @} */
/*---------------------------------------------------------------------------*/
/**
* \name ADC configuration
*
* These values configure which CC2538 pins and ADC channels to use for the ADC
* inputs. By default the Re-Mote allows two out-of-the-box ADC ports with a
* phidget-like 3-pin connector (GND/3V3/ADC)
*
* ADC inputs can only be on port A.
* @{
*/
#define ADC_PHIDGET_PORT GPIO_A_NUM /**< Phidget GPIO control port */
#define ADC_PHIDGET_ADC2_PIN 6 /**< ADC2 to PA6, 3V3 */
#define ADC_PHIDGET_ADC3_PIN 7 /**< ADC3 to PA7, 3V3 */
/** @} */
/*---------------------------------------------------------------------------*/
/**
* \name SPI (SSI0) configuration
*
* These values configure which CC2538 pins to use for the SPI (SSI0) lines,
* shared with the CC1120 RF transceiver
* TX -> MOSI, RX -> MISO
* @{
*/
#define SPI0_CLK_PORT GPIO_D_NUM
#define SPI0_CLK_PIN 1
#define SPI0_TX_PORT GPIO_D_NUM
#define SPI0_TX_PIN 0
#define SPI0_RX_PORT GPIO_C_NUM
#define SPI0_RX_PIN 4
/** @} */
/*---------------------------------------------------------------------------*/
/**
* \name SPI (SSI1) configuration
*
* These values configure which CC2538 pins to use for the SPI (SSI1) lines,
* shared with the microSD, not routed anywhere.
* TX -> MOSI, RX -> MISO
* @{
*/
#define SPI1_CLK_PORT GPIO_B_NUM
#define SPI1_CLK_PIN 5
#define SPI1_TX_PORT GPIO_C_NUM
#define SPI1_TX_PIN 7
#define SPI1_RX_PORT GPIO_A_NUM
#define SPI1_RX_PIN 4
/** @} */
/*---------------------------------------------------------------------------*/
/**
* \name I2C configuration
*
* These values configure which CC2538 pins to use for the I2C lines, shared
* with the TMP102 built-in temperature sensor
* @{
*/
#define I2C_SCL_PORT GPIO_B_NUM
#define I2C_SCL_PIN 1
#define I2C_SDA_PORT GPIO_B_NUM
#define I2C_SDA_PIN 0
/** @} */
/*---------------------------------------------------------------------------*/
/**
* \name Antenna switch configuration
*
* These values configure the required pin to drive the antenna switch, to
* use either the built-in ceramic antenna or an external one over the uFL
* connector
* - Internal antenna: LOW
* - External antenna: HIGH
* @{
*/
#define ANTENNA_2_4GHZ_SW_PORT GPIO_D_NUM
#define ANTENNA_2_4GHZ_SW_PIN 4
/** @} */
/*---------------------------------------------------------------------------*/
/**
* \name CC1120/CC1200 configuration
*
* These values configure the required pins to drive the CC1120/CC1200
* @{
*/
#define CC1120_SPI_SCLK_PORT SPI0_CLK_PORT
#define CC1120_SPI_SCLK_PIN SPI0_CLK_PIN
#define CC1120_SPI_MOSI_PORT SPIO0_TX_PORT
#define CC1120_SPI_MOSI_PIN SPIO0_TX_PIN
#define CC1120_SPI_MISO_PORT SPIO0_RX_PORT
#define CC1120_SPI_MISO_PIN SPIO0_RX_PIN
#define CC1120_SPI_CSN_PORT GPIO_D_NUM
#define CC1120_SPI_CSN_PIN 3
#define CC1120_GDO0_PORT GPIO_B_NUM
#define CC1120_GDO0_PIN 4
#define CC1120_GDO2_PORT GPIO_B_NUM
#define CC1120_GDO2_PIN 3
#define CC1120_RESET_PORT GPIO_B_NUM
#define CC1120_RESET_PIN 2
#define CC1120_GPIO0_VECTOR NVIC_INT_GPIO_PORT_B
/** @} */
/*---------------------------------------------------------------------------*/
/**
* \name microSD configuration
*
* These values configure the required pins to drive the built-in microSD
* external module, to be used with SSI1
* @{
*/
#define USD_CLK_PORT SPI1_CLK_PORT
#define USD_CLK_PIN SPI1_CLK_PIN
#define USD_MOSI_PORT SPI1_TX_PORT
#define USD_MOSI_PIN SPI1_TX_PIN
#define USD_MISO_PORT SPI1_RX_PORT
#define USD_MISO_PIN SPI1_RX_PIN
/** @} */
/*---------------------------------------------------------------------------*/
/**
* \name Device string used on startup
* @{
*/
#define BOARD_STRING "Zolertia Re-Mote platform"
/** @} */
#endif /* BOARD_H_ */
/**
* @}
* @}
*/